Vos avis concernant mon script iptables

Bonjour
si dessous mon script iptables,je veux savoir vos avis:y’a t’il qqe chose à ajouter ou à enlever sachant que ça a stoppé squid et m’a bloqué la connexion
wlan0 etant mon interface wifi lié à internet d’@ip 192.168.3.26
eth0 lié au local et dont l’@ip est 192.168.3.6

#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.3.26"
# Interface connected to Internet
INTERNET="wlan0"
# Interface connected to LAN
LAN_IN="eth0"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

Merci d’avance.

Salut,

sauf si c’est pour apprendre, bien entendu…

il existe des outils tel que shorewall qui font cela très bien,
je ne peux que te le conseiller :wink:

Tu peux aérer un peu ton script, ce serait un peu plus simple à maintenir.

Perso, je faisais avant un script que je mettais dans /etc/init.d du style de ci-dessous, cela me permettait d’arréter ou de redémarrer ma config, si cela peut t’aider :

#!/bin/bash

############################## declaration des variables ######

#interface de loopback
IFLO="lo"

# fonctions a executer pour le parametre start
#DEFAULTRULES="FWD NatIt INPT OUPT"
DEFAULTRULES="INPT OUPT"

############################## Debut Initialisation ######
function DefaultPolicy()
{
        # Strategie par defaut  ( c'est ce q'on fait pour stopper le firewall )
        echo -n "Application de la strategie par defaut: .... "

        # Vider les tables actuelles
        iptables -F
        iptables -F -t nat
        iptables -X

        #definition des polices par defaut
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD DROP

        # Autoriser loopback
        iptables -A INPUT -i $IFLO -j ACCEPT
        iptables -A OUTPUT -o $IFLO -j ACCEPT

        echo "Done !"
}

############################## Autorisation entrante sur le serveur #######
function INPT()
{
        echo -n "Application des regles pour les connections entrantes: .... "

        #definition des polices par defaut
        iptables -P INPUT DROP

        # Autorise entree icmp
        iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
        iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

        # Autorise entree SAMBA
                # EPMAP => définit toutes les RPC
        iptables -A INPUT -p tcp --dport 135 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 135 -j ACCEPT

        iptables -A INPUT -p udp --dport 135 -j ACCEPT
        iptables -A OUTPUT -p udp --sport 135 -j ACCEPT

                # NetBios-NS
        iptables -A INPUT -p tcp --dport 137 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 137 -j ACCEPT

        iptables -A INPUT -p udp --dport 137 -j ACCEPT
        iptables -A OUTPUT -p udp --sport 137 -j ACCEPT

                # NetBios-DGM => exploration du réseau (basse sur SMB browser service)
        iptables -A INPUT -p tcp --dport 138 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 138 -j ACCEPT

        iptables -A INPUT -p udp --dport 138 -j ACCEPT
        iptables -A OUTPUT -p udp --sport 138 -j ACCEPT

                #NetBios-SSN => partage fichiers, imprimantes par Microsoft
        iptables -A INPUT -p tcp --dport 139 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 139 -j ACCEPT

        iptables -A INPUT -p udp --dport 139 -j ACCEPT
        iptables -A OUTPUT -p udp --sport 139 -j ACCEPT

                # SMB/IP => partage fichiers, imprimantes par SaMBa
        iptables -A INPUT -p tcp --dport 445 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 445 -j ACCEPT

        iptables -A INPUT -p udp --dport 445 -j ACCEPT
        iptables -A OUTPUT -p udp --sport 445 -j ACCEPT

        # Autorise entree postgres
        iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 5432 -j ACCEPT

        # Autorise entree ssh
        iptables -A INPUT -p tcp --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A OUTPUT -p tcp --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorisation de se connecter a cacti
        iptables -A INPUT -p udp --dport 161 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A OUTPUT -p udp --sport 161 -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autoriser entree sur webmin
        iptables -A INPUT -p tcp --dport 10000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 10000 -m state --state ESTABLISHED,RELATED -j ACCEPT
        echo "Done !"
}
############################## Autorisation sortante du serveur ######
function OUPT()
{
        echo -n "Application des regles pour les connections sortantes : .... "

        #definition des polices par defaut
        iptables -P OUTPUT DROP


        #autorise la sortie pour les connexion deja etablies
 #      iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorise requetes DNS
        iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

        iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorise ntp
        iptables -A OUTPUT -p tcp --dport ntp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p tcp --sport ntp -m state --state ESTABLISHED,RELATED -j ACCEPT

        iptables -A OUTPUT -p udp --dport ntp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p udp --sport ntp -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorise http a sortir
        iptables -A OUTPUT -p tcp --dport http -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p tcp --sport http -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorise https a sortir
        iptables -A OUTPUT -p tcp --dport https -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p tcp --sport https -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorise ssh a sortir
        iptables -A OUTPUT -p tcp --dport ssh -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p tcp --sport ssh -m state --state ESTABLISHED,RELATED -j ACCEPT

        #autorise sortie SMTP
        iptables -A OUTPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED,RELATED -j ACCEPT

        echo "Done !"
}

############################## Autorisation traverser le serveur ######
function FWD()
{
        echo -n "Applications des regles pour les paquets a router: ... "
        #definition des polices par defaut
        iptables -P FORWARD DROP

        ## Accepter les paquets entrant relatifs au connection deja etablies
        #iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
        echo "Done !"
}


function NatIt()
{
        echo -n "Applications des regles de tranlation d'addresse: ... "

        #~ autorisation du forwarding
        #~ echo "1" > /proc/sys/net/ipv4/ip_forward

        #~ activation du natage
        #~ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


        # Regles entrantes
        # Emule prerouting
        #~ $IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 4662 -j DNAT --to 192.168.0.2:4662
        #~ $IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 6881:6999 -j DNAT --to 192.168.0.2

        echo "Done !"
}

############################## log ######

############## Script options init
case $1 in
        start|reload)
                DefaultPolicy
                for i in $DEFAULTRULES
                do
                $i
                done
                ;;
        stop)
                DefaultPolicy
                echo "Arret du Firewall"
                ;;
        status)
                iptables -L
                ;;
        full-status)
                iptables -L -v
                ;;
        forward)
                #rexecuter la strategie par defaut pour cette chaine
                iptables -P FORWARD DROP
                iptables -F FORWARD
                # puis relancer la este
                FWD
                ;;
        nat)
                #rexecuter la strategie par defaut pour cette chaine
                iptables -t nat -F
                NatIt
                ;;
        output)
                #rexecuter la strategie par defaut pour cette chaine
                iptables -P OUTPUT ACCEPT
                iptables -F OUTPUT
                OUPT
                ;;
        input)
                #rexecuter la strategie par defaut pour cette chaine
                iptables -P INPUT ACCEPT
                iptables -F INPUT
                INPT
                ;;
        *)
                echo "usage $0 start | stop | reload | status | full-status | forward | output | input | nat "
                ;;
esac

### Fin du script
#echo "$0 : End of script"