[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [firewall] iptables, le script parfait?



Le Sat, 03 Feb 2007 13:58:40 +0100
Pascal Hambourg <pascal.mail@plouf.fr.eu.org> a écrit:

> Gaëtan PERRIER a écrit :
> >>
> >>Ça commence mal. Un jeu de règles sans chaînes utilisateur ne peut
> >>pas être un bon jeu de règles. ;-)
> > 
> > Bon, je me pencherai sur la question des chaînes utilisateurs.
> > Pour l'instant je ne sais pas ce que c'est...
> 
> Voir la documentation de Netfilter/iptables. Comme son nom
> l'indique, une chaîne utilisateur est une chaîne créée par
> l'utilisateur avec iptables -N. On peut on peut y créer des règles
> avec iptables -A et on peut l'appeler à partir d'une règle comme
> une cible avec l'option -j. C'est une sorte de sous-programme pour
> iptables. Une chaîne utilisateur peut être appelée depuis plusieurs
> endroits, y compris plusieurs chaînes de base. Elle permet
> notamment de "factoriser" des critères de correspondance communs à
> plusieurs règles (ex: regrouper toutes les règles relatives à un
> interface d'entrée ou un état) ou de faire les mêmes tests à
> plusieurs endroits sans dupliquer les règles (ex: même vérification
> d'adresse/port dans INPUT et FORWARD). Pour info, mon jeu de règles
> contient une cinquantaine de chaînes utilisateur.

Ok, je regarderais et j'essaierai de refaire mon script avec ce principe... quand j'aurai plus de temps.

> 
> >>Où la variable $new_ip_address est-elle définie ? Que
> >>contient-elle ?
> > 
> > ça vient du client dhcp. Ce script est appelé à chaque attribution
> > d'une adresse ip sur mon interface réseaux allant vers internet.
> 
> Justement, je voulais en parler dans ma réponse précédente. Il
> n'est pas nécessaire de réinitialiser toutes les règles. Il
> suffirait d'effacer et recréer uniquement les règles liées à
> l'adresse susceptible de changer. Et pour limiter le nombre de
> règles impliquées, les chaînes utilisateur sont d'une grande aide.
> C'est ce que je fais pour mes interfaces PPP.

Oui, mais en fait je n'appelle ce script que si j'ai une attribution d'une adresse par DHCP sur mon interface adsl. Si jamais le câble est débranché par exemple, je n'ai pas de firewall de mis en place. Donc si je distingue par interface il faudra que je lance le script 2 fois.
Je ne pense pas que ce soit super gênant de tout refaire à chaque fois et encore faut-il que l'adresse de l'interface adsl soit modifier par dhcp.

> 
> >>>###############################################################################
> >>># Règles de conexion au reseau local
> >>># Tout est autorisé
> >>>###############################################################################
> >>>
> >>>echo "+ Règles du réseau local ($LAN_INTERFACE - $LAN_IP -
> >>>$LAN_NETWORK)"
> >>># Connexions firewall <-> réseau
> >>>iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d
> >>>$LAN_NETWORK -p all -j ACCEPT iptables -t filter -A INPUT  -i
> >>>$LAN_INTERFACE -s $LAN_NETWORK -d $LAN_IP -p all -j ACCEPT
> >>
> >>Ces règles oublient de prendre en compte les paquets émis (resp.
> >>reçus) sur $LAN_INTERFACE avec l'adresse source (resp.
> >>destination) $WAN_IP, qui sont pourtant parfaitement légitimes.
> > 
> > Je n'ai pas bien compris comment ça peu arriver?
> 
> Si tu veux établir une communication (par exemple un simple ping)
> vers l'adresse WAN de la passerelle depuis un poste du LAN. C'est 
> parfaitement légal, et pourtant tes règles la bloqueraient, ainsi
> que la réponse. Un point souvent mal compris est qu'une adresse IP
> ne doit pas être considérée comme identifiant l'interface qui la
> porte mais la machine tout entière. Opérationnellement, il n'y a
> pas de lien entre les interfaces et les adresses locales et on peut
> utiliser n'importe quelle adresse locale avec n'importe quelle
> interface. Ce n'est que dans certains cas particulier qu'il peut
> être souhaitable d'interdire les communications avec une adresse
> donnée sur une interface particulière ; par exemple interdire
> l'adresse privée sur l'interface WAN parce qu'une adresse privée ne
> devrait jamais apparaître sur l'internet public.

Ok donc j'ai rajouté:

iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $WAN_IP -d $LAN_NETWORK -p all -j ACCEPT
iptables -t filter -A INPUT  -i $LAN_INTERFACE -s $LAN_NETWORK -d $WAN_IP -p all -j ACCEPT

> 
> >>>echo "+ Règles pour Internet ($WAN_INTERFACE - $WAN_IP -
> >>>$WAN_NETWORK)" iptables -t filter -A OUTPUT -o $WAN_INTERFACE -s
> >>>$WAN_IP -d $WAN_NETWORK -p all -m state --state ! INVALID -j
> >>>ACCEPT iptables -t filter -A INPUT  -i $WAN_INTERFACE -s
> >>>$WAN_NETWORK -d $WAN_IP -p tcp --tcp-flags ! ALL SYN -m state
> >>>--state NEW,RELATED -j DROP #06/05/2006 iptables -t filter -A
> >>>INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p all -m
> >>>state --state RELATED,ESTABLISHED -j ACCEPT iptables -t filter
> >>>-A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp
> >>>--destination-port auth -j REJECT --reject-with tcp-reset
> >>>#06/05/2006
> >>
> >>La dernière règle ne serait pas nécessaire si toutes les
> >>connexions indésirables étaient traitées par REJECT au lieu de
> >>DROP.
> > 
> > Peux-tu m'expliquer pourquoi?
> > Initialement je n'avais pas les lignes finissant par #06/05/2006,
> > sont-elles nécessaires?
> 
> La première, qui bloque les paquets TCP dans l'état NEW ou RELATED 
> autres que SYN n'est pas franchement indispensable puisque soit
> c'est le suivi de connexion TCP lui-même qui va classer le paquet
> INVALID soit c'est la pile TCP/IP qui va le rejeter.
> 
> La seconde, qui répond "fermé" aux requêtes IDENT notamment des
> serveurs IRC ou SMTP pour éviter un délai d'attente ou carrément de
> se faire jeter par le serveur à cause de l'absence de réponse n'est
> utile que parce que ton traitement par défaut des requêtes
> entrantes est DROP. Si le traitement pour toutes les requêtes
> indésirables était REJECT, tu n'aurais pas besoin d'une exception
> pour les requêtes IDENT.

Donc la règle :
iptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --tcp-flags ! ALL SYN -m state --state NEW,RELATED -j REJECT --reject-with tcp-reset

permettrait d'éviter la règle:

iptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --destination-port auth -j REJECT --reject-with tcp-reset

Pour moi je me disais que c'était mieux de faire le mort (DROP) plutôt que de renvoyer quelque chose (REJECT) sauf pour les auth car j'avais cru comprendre que ça pouvait poser problème de faire un DROP sur des auth, non?


> [...]
> > C'est vrai! Donc toutes mes règles OUTPUT pour jabber, xmule,
> > msn, mp9 sont inutiles, c'est ça?
> 
> Oui. Et pareil pour les règles INPUT avec ESTABLISHED,RELATED.

ça je n'en ai pas?

> 
> >>D'autre part, un paquet de réponse TCP ou UDP (--sport) ne
> >>peut pas avoir l'état RELATED. Seul le premier paquet d'une
> >>connexion liée peut avoir cet état.
> > 
> > RELATED c'est une nouvelle connexion en relation avec une
> > existante, c'est ça?
> 
> En gros, oui. Ici "connexion" et "existante" sont à prendre au sens 
> large car cela peut être un message d'erreur ICMP - qui n'est pas 
> vraiment une connexion - émis pour rejeter une requête dont la 
> "connexion" aura été éphémère.
> 
> Pour compléter la réponse de Franck, il existe une version
> française du tutorial iptables d'O. Andreasson, dont la page
> décrivant les états de connexion se trouve ici : 
> http://iptables-tutorial.frozentux.net/fr/x1329.html

Merci!

> 
> [...]
> >>Je voudrais faire une remarque générale au sujet des nombreuses
> >>règles acceptant des paquets dans l'état RELATED ou ESTABLISHED.
> >>Si le suivi de connexion a classé un paquet dans un de ces états,
> >>c'est que le trafic précédent auquel il est lié a déjà été vu et
> >>accepté (à l'exception des paquets RST ou ICMP émis localement en
> >>réponse à un paquet rejeté). Par conséquent il n'est pas utile de
> >>recréer ces règles pour chaque interface, application, protocole,
> >>port... On peut se contenter d'une unique règle acceptant tous les
> >>paquets dans l'état RELATED ou ESTABLISHED en début de chaîne
> >>(pour l'efficacité, l'immense majorité des paquets étant dans
> >>l'état ESTABLISHED) suivie de règles traitant les paquets dans
> >>l'état NEW au cas par cas. Ça allège et simplifie sensiblement le
> >>jeu de règles sans sacrifier à la sécurité. Beaucoup de jeux de
> >>règles sont construits ainsi.
> > 
> > 
> > Bon là je ne suis pas sur d'avoir compris:
> > on a vu que mes règles OUTPUT étaient superflues car redondantes
> > avec cette règle (si j'ai bien compris):
> > iptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d
> > $WAN_IP -p all -m state --state RELATED,ESTABLISHED -j ACCEPT
> 
> Non, avec la règle OUTPUT juste à côté. :-)

Euh, oui, erreur de copier/coller (il était tard...)

> 
> > Donc je vire tous mes OUTPUT avec RELATED,ESTABLISHED
> 
> Oui.

Fait.

> 
> > Les paquets NEW je ne les traite pas car je n'ai pas de serveurs
> > sur machine, et si j'en avais je n'aurais à les traiter qu'en
> > INPUT sur les ports des serveurs. C'est ça?
> 
> Tu peux avoir des serveurs sans le savoir. Ainsi les transferts de 
> fichiers par MSN dans un certain sens (je ne sais plus si c'est en 
> émission ou réception) s'effectuent normalement en pair-à-pair et 
> impliquent que ton client MSN devient serveur sur un des ports TCP
> de la plage $MSN_TRANSFERT_TCP_PORT (sinon ça peut passer par le
> serveur MSN mais ça va moins vite). Si tu as un module de suivi de
> connexion pour le protocole MSN, il identifiera le premier paquet
> comme RELATED et sera pris en charge par la règle générale. Mais
> dans le cas contraire, le premier paquet sera classé NEW et il
> faudra l'accepter explicitement avec une règle :
> 
> iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp \
>    --dport $MSN_TRANSFERT_TCP_PORT -m state --state NEW -j ACCEPT

Euh? et cette règle ne suffit pas?
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p tcp \
    --dport $MSN_TRANSFERT_TCP_PORT -m state --state ! INVALID  -j ACCEPT


> 
> Même chose pour les communications vocales, j'imagine.
> 
> >>[...]
> >>>###############################################################################
> >>># Règles pour le log
> >>>###############################################################################
> >>
> >>Il n'y a rien de prévu pour le log des paquets dans FORWARD ?
> > 
> > Euh, je ne sais pas...
> > Tu mettrais quoi?
> 
> La même chose qu'en entrée et/ou sortie mais dans la chaîne FORWARD.
 
Bon je joins à ce mail la version corrigée, grâce à tes conseils et ceux de Franck.

Merci pour tout.

Gaëtan
#!/bin/sh -norc

###############################################################################
# NOM: iptable-final-1.sh
#
# COMMENTAIRE : Synthèse d'utilisation de ce qui a été vu dans le document
#               (chapitre III-10-3)
# 
# Ce script fait partie du document :
#        "Firewall et sécurité d'un réseau personnel sous Linux"
#        http://olivieraj.free.fr/fr/linux/information/firewall/
#
# Auteur: Olivier ALLARD-JACQUIN (http://olivieraj.free.fr/)
# Créé le : 2003/07/09                    Dernière modification le : 2003/07/09
###############################################################################
# Adapté par Gaëtan PERRIER le 04/02/2004
###############################################################################


###############################################################################
# Variables globales
###############################################################################

# Paramètrage du réseau local (LAN = Local Area Network)
LAN_INTERFACE=lan             ; # Interface réseau interne
LAN_IP=192.168.10.1           ; # Adresse réseau interne
LAN_NETWORK=192.168.10.0/24   ; # Réseau interne
LAN_BROADCAST=192.168.10.255  ; # Adresse de broadcast interne

# Paramètrage de la connexion Internet (WAN = Wild Area Network = Réseau Large)
WAN_INTERFACE=adsl            ; # Interface réseau externe (Internet)
if [ -z "$@" ]; then
	WAN_IP=`/sbin/ifconfig $WAN_INTERFACE | grep "inet adr" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/g"`  ; # Récupère l'adresse réseau externe (Internet)
elif [ "$@" == "boot" ]; then
	WAN_IP=$new_ip_address
fi
WAN_NETWORK=0.0.0.0/0
#WAN_IP=10.0.0.1               ; # Adresse réseau externe (Internet)
#WAN_NETWORK=10.0.0.0/8        ; # Réseau externe (Internet)

# REMARQUE:
# Si vous utiliser une connexion par modem (RTC/RNIS/ADSL) pour vous connecter à Internet
# utilisez les variables ci-dessous. Elle permettrons à ce script de détecter
# automatiquement votre adresse IP Internet
#WAN_INTERFACE=ppp0            ; # Interface modem
#WAN_IP=`/sbin/ifconfig | grep "P-t-P" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/g"`  ; # Récupère l'adresse réseau externe (Internet)
#WAN_NETWORK=0.0.0.0/0

# Paramètrage de l'IP masquerading
#   NAT=0   <=> Le NAT N'est PAS autorisé 
#   NAT=1   <=> Le NAT est autorisé 
NAT=1

# Autoriser XMULE?
#  XMULE=0 <=> XMULE N'est PAS autorisé
#  XMULE=1 <=> XMULE est autorisé
XMULE=0
XMULE_TCP_PORT=4662
XMULE_UDP_PORT=4672

# Autoriser Jabber?
#  JABBER=0 <=> JABBER N'est PAS autorisé
#  JABBER=1 <=> JABBER est autorisé
JABBER=1
JABBER_TCP_PORT=5222
JABBER_SSL_TCP_PORT=5223

# Autoriser Msn?
#  MSN=0 <=> MSN N'est PAS autorisé
#  MSN=1 <=> MSN est autorisé
MSN=1
MSN_TCP_PORT=1863
MSN_TRANSFERT_TCP_PORT=6891:6900
MSN_TRANSFERT_UDP_PORT=6891:6900
MSN_VOIX_TCP_PORT=6901
MSN_VOIX_UDP_PORT=6901

# Autoriser MP9?
#  MP9=0 <=> MP9 N'est PAS autorisé
#  MP9=1 <=> MP9 est autorisé
MP9=1
MP9_TCP_CMD_PORT=26180
MP9_TCP_SMB_PORTS=137:139,445
MP9_TCP_FLUX_PORT=26134
MP9_IP=172.16.255.253

# Paramétrage du LOG
#   LOG=LOG_IN      <=> On log toutes les tentatives d'intrusions non autorisées
#   LOG=LOG_OUT     <=> On log toutes les tentatives de sortie non autorisées
#   LOG=LOG_IN-OUT  <=> On log toutes les tentatives d'entrées et sorties non autorisées
#   LOG=LOG_IN-OUT-FORWARD  <=> On log toutes les tentatives d'entrées, sorties et forward non autorisées
#   LOG=ULOG_IN     <=> On log (avec ULOG) toutes les tentatives d'intrusions non autorisée
#   LOG=ULOG_OUT    <=> On log (avec ULOG) toutes les tentatives de sorties non autorisées
#   LOG=ULOG_IN-OUT <=> On log (avec ULOG) toutes les tentatives d'entrées et sorties non autorisées
#   LOG=ULOG_IN-OUT-FORWARD <=> On log (avec ULOG) toutes les tentatives d'entrées, sorties et forward non autorisées
#   LOG=NONE        <=> On ne log RIEN du tout
LOG=ULOG_IN-OUT-FORWARD
LOG_PREFIX=Netfilter


###############################################################################
###############################################################################
# A PARTIR DE CE POINT, VOUS N'AVEZ PLUS BESOIN DE CONFIGURER CE SCRIPT!!!
###############################################################################
###############################################################################


###############################################################################
# Initialisation de Netfilter
###############################################################################

# Initialise la table Filter (par défaut tout les échanges sont refusés)
echo "+ Initialisation de la table Filter"
iptables -t filter -F
iptables -t filter -X 
iptables -t filter -P INPUT   DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT  DROP

# Initialise la table NAT (par défaut tout les échanges sont activés)
echo "+ Initialisation de la table NAT"
iptables -t nat -F
iptables -t nat -X 
iptables -t nat -P PREROUTING  ACCEPT
iptables -t nat -P OUTPUT      ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# Initialise la table Mangle (par défaut tout les échanges sont activés)
echo "+ Initialisation de la table Mangle"
iptables -t mangle -F
iptables -t mangle -X 
iptables -t mangle -P PREROUTING  ACCEPT
iptables -t mangle -P INPUT       ACCEPT
iptables -t mangle -P FORWARD     ACCEPT
iptables -t mangle -P OUTPUT      ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

echo "+ Desactivation du NAT"
echo 0 > /proc/sys/net/ipv4/ip_forward

###############################################################################
# Règles du localhost
# On NE fait PAS de restriction aux adresses IP source / destination 127.0.0.0
###############################################################################

echo "+ Règles du localhost"
iptables -t filter -A OUTPUT -o lo -p all -j ACCEPT
iptables -t filter -A INPUT  -i lo -p all -j ACCEPT


###############################################################################
# Règles de connexion au reseau local
# Tout est autorisé
###############################################################################

echo "+ Règles du réseau local ($LAN_INTERFACE - $LAN_IP - $LAN_NETWORK)"
# Connexions firewall <-> réseau
iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_NETWORK -p all -j ACCEPT
iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $WAN_IP -d $LAN_NETWORK -p all -j ACCEPT #05/02/2007
iptables -t filter -A INPUT  -i $LAN_INTERFACE -s $LAN_NETWORK -d $LAN_IP -p all -j ACCEPT
iptables -t filter -A INPUT  -i $LAN_INTERFACE -s $LAN_NETWORK -d $WAN_IP -p all -j ACCEPT #05/02/2007
    
# Connexions firewall <-> broadcast réseau
iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_BROADCAST -p all -j ACCEPT
iptables -t filter -A INPUT  -i $LAN_INTERFACE -s $LAN_BROADCAST -d $LAN_IP -p all -j ACCEPT

###############################################################################
# Règles de connexion à Internet
# Seul les connexions initialisés par la machine sont autorisées
# C'est le suivit de connexion
###############################################################################

# Chargement des modules pour le suivi de connexion
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

echo "+ Règles pour Internet ($WAN_INTERFACE - $WAN_IP - $WAN_NETWORK)"
iptables -t filter -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d $WAN_NETWORK -p all -m state --state ! INVALID           -j ACCEPT
iptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --tcp-flags ! ALL SYN -m state --state NEW,RELATED -j DROP #06/05/2006
iptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p all -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT  -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --destination-port auth -j REJECT --reject-with tcp-reset #06/05/2006

###############################################################################
# Règles pour l'IP masquerading
# Pour que le IP masquerading soit activé, il faut la variable "$NAT" soit à "1"
###############################################################################

if [ "$NAT" == "1" ]; then
  # Chargement des modules pour l'IP masquerading
  modprobe iptable_nat
  modprobe ip_nat_ftp
  modprobe ip_nat_irc

  echo "+ Autorise l'IP masquerading de $LAN_NETWORK -> $WAN_NETWORK"
  iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -m state --state ! INVALID           -j ACCEPT
  iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -t nat    -A POSTROUTING               -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -j MASQUERADE

  echo 1 > /proc/sys/net/ipv4/ip_forward

else
  echo "+ L'IP masquerading N'est PAS autorisé"
  echo 0 > /proc/sys/net/ipv4/ip_forward
fi


###############################################################################
# Règles pour XMULE
###############################################################################

if [ "$XMULE" == "1" ]; then
echo "+ Règles pour XMULE"
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $XMULE_TCP_PORT -m state --state ! INVALID  -j ACCEPT
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p udp --dport $XMULE_UDP_PORT -m state --state ! INVALID  -j ACCEPT
fi

###############################################################################
# Règles pour JABBER
###############################################################################

if [ "$JABBER" == "1" ]; then
echo "+ Règles pour JABBER"
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $JABBER_TCP_PORT -m state --state ! INVALID      -j ACCEPT
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $JABBER_SSL_TCP_PORT -m state --state ! INVALID  -j ACCEPT
fi

###############################################################################
# Règles pour MSN
###############################################################################

if [ "$MSN" == "1" ]; then
echo "+ Règles pour MSN"
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $MSN_TRANSFERT_TCP_PORT -m state --state ! INVALID  -j ACCEPT
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $MSN_VOIX_TCP_PORT -m state --state ! INVALID       -j ACCEPT
iptables -A INPUT  -i $WAN_INTERFACE -d $WAN_IP -p udp --dport $MSN_VOIX_UDP_PORT -m state --state ! INVALID       -j ACCEPT
fi

###############################################################################
# Règles pour MP9
###############################################################################

if [ "$MP9" == "1" ]; then
echo "+ Règles pour MP9"
iptables -A INPUT  -i $WAN_INTERFACE -s $MP9_IP -d $WAN_IP -p tcp --dport  $MP9_TCP_CMD_PORT  -m state --state ! INVALID           -j ACCEPT
iptables -A INPUT  -i $WAN_INTERFACE -s $MP9_IP -d $WAN_IP -p tcp -m multiport --dports $MP9_TCP_SMB_PORTS -m state --state ! INVALID           -j ACCEPT
iptables -A INPUT  -i $WAN_INTERFACE -s $MP9_IP -d $WAN_IP -p icmp -m state --state ! INVALID           -j ACCEPT
fi

###############################################################################
# Règles pour le log
###############################################################################

echo "+ Definition des logs ($LOG)"
case "$LOG" in
  LOG_IN)
    iptables -t filter -A INPUT   -p all -j LOG --log-prefix $LOG_PREFIX
    ;;

  LOG_OUT)
    iptables -t filter -A OUTPUT  -p all -j LOG --log-prefix $LOG_PREFIX
    ;;

  LOG_IN-OUT)
    iptables -t filter -A INPUT   -p all -j LOG --log-prefix $LOG_PREFIX
    iptables -t filter -A OUTPUT  -p all -j LOG --log-prefix $LOG_PREFIX
    ;;

  LOG_IN-OUT-FORWARD)
    iptables -t filter -A INPUT   -p all -j LOG --log-prefix $LOG_PREFIX
    iptables -t filter -A OUTPUT  -p all -j LOG --log-prefix $LOG_PREFIX
    iptables -t filter -A FORWARD -p all -j LOG --log-prefix $LOG_PREFIX
    ;;

  ULOG_IN)
    iptables -t filter -A INPUT   -p all -j ULOG --ulog-prefix $LOG_PREFIX
    ;;

  ULOG_OUT)
    iptables -t filter -A OUTPUT  -p all -j ULOG --ulog-prefix $LOG_PREFIX
    ;;

  ULOG_IN-OUT)
    iptables -t filter -A INPUT   -p all -j ULOG --ulog-prefix $LOG_PREFIX
    iptables -t filter -A OUTPUT  -p all -j ULOG --ulog-prefix $LOG_PREFIX
    ;;

  ULOG_IN-OUT-FORWARD)
    iptables -t filter -A INPUT   -p all -j ULOG --ulog-prefix $LOG_PREFIX
    iptables -t filter -A OUTPUT  -p all -j ULOG --ulog-prefix $LOG_PREFIX
    iptables -t filter -A FORWARD -p all -j ULOG --ulog-prefix $LOG_PREFIX
    ;;
esac  

echo "+ ------====== SCRIPT TERMINE! ======------"
echo "+ Pour afficher votre configuration Netfilter, lancez:"
echo " - 'iptables -L -n -v'           pour la table 'Filter'"
echo " - 'iptables -L -n -v -t nat'    pour la table 'NAT'"
echo " - 'iptables -L -n -v -t mangle' pour la table 'Mangle'"

Reply to: