TUTOS.EU

Ajouter une règle dans iptables

Authoriser un flux dans iptables

Notes préalables

Commande Signification
-t ou --table table nom de la table à utiliser. Par défaut c'est filter qui contient les chaînes input, output et forward, mais cela peut être nat, mangle, raw
-A pour --append Append to chain. -A ajoute une règle à une chaine cad INPUT, OUTPUT, FORWARD. Un append ajoute la règle à la suite des autres cad en bas de liste.
-I insère une règle. Par défaut elle est insérée en première ligne, en position 1 cad en début de liste. On peut préciser le numéro de la ligne.
-s ou --source réseau ou ip source
-d ou --destination réseau ou ip cible
-p ou --protocol on indique le protocol. Cela peut être tcp, udp, icmp, all etc
--sport ou --source-port c'est le port source
--dport ou --destination-port c'est le port cible
-i pour --in-interface dire le nom de l'interface d'entrée. Quand il n'y a qu'une carte réseau il n'est pas toujours nécessaire de le préciser. lo correspond à l'interface de loopback.
-o pour --out-interface présicer le nom de l'interface de sortie.
-j (ou --jump ?) on indique ce qu'on fait du paquet avec par exemple ACCEPT, DROP, LOG etc
-P chaîne (chain) cible, cad INPUT, OUTPUT, FORWARD etc

Ajout d'une règle en fin de liste (Append) pour autoriser en entrée le port 22 (SSH) :

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
Lien vers le fichier : cliquez ici Copier le code

Insertion d'une règle en début de liste (Insert) pour autoriser le port tcp 80 uniquement pour l'ip 1.1.1.1 vers l'ip 2.2.2.2.

Notez qu'en général on fait plus un append qu'un insert.

iptables -t filter -I INPUT -s 1.1.1.1 -d 2.2.2.2 -p tcp --dport 80 -j ACCEPT
Lien vers le fichier : cliquez ici Copier le code

Ajout d'une règle pour accepter n'importe quel flux en transfert depuis le réseau local 192.168.1.0/24 vers l'interface réseau eth0

iptables -t filter -A FORWARD -s 192.168.1.0/24 -j ACCEPT -o eth0
Lien vers le fichier : cliquez ici Copier le code

Lister les règles avec les numéros de lignes et les interfaces :

iptables -L --line-numbers -v
Lien vers le fichier : cliquez ici Copier le code

Lister les règles avec les numéros de lignes mais uniquement pour la chaîne FORWARD (et non pour INPUT ou OUTPUT)

iptables -L FORWARD --line-numbers -v
Lien vers le fichier : cliquez ici Copier le code

Effacer la règle portant le numéro de ligne 12 dans la chaîne FORWARD (il existe aussi INPUT et OUTPUT)

iptables -D FORWARD 12
Lien vers le fichier : cliquez ici Copier le code

Sachez que vous pouvez créer un 'user-defined chain' afin de pouvoir autoriser ET logger un nouveau flux.
Dans notre 'user-defined chain', on dira que l'on log ce qui est relatif à notre flux, qu'on ajoute le préfix 'IPTABLES: ' dans le log afin de filtrer facilement, et qu'on autorise le flux.

Voici comment créer notre 'user-defined chain' :

#Création d'une new user-defined chain pour pouvoir autoriser ET logger un flux avec le préfixe IPTABLES
iptables -N LOGACCEPT
iptables -A LOGACCEPT -j LOG --log-prefix 'iptables:' -m limit --limit 2/min
iptables -A LOGACCEPT -j ACCEPT
Lien vers le fichier : cliquez ici Copier le code

Voici maintenant un exemple de commande qui autorise le port tcp 22 en entrée et qui loggera l'activité :

iptables -t filter -A INPUT -p tcp --dport 22 -j LOGACCEPT
Lien vers le fichier : cliquez ici Copier le code

Pour voir les logs en filtrant le journal avec le préfixe 'IPTABLES: ' déposé par notre 'user-defined chain' LOGACCEPT, tapez :

tail -f /var/log/messages | grep -i -n 'iptables:'
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
dd-wrt.comAide Ip Table d'un DD WRT
doc.ubuntu-fr.orgAide iptables de la doc ubuntu
Linux.die.netSite avec un moteur de recherche sur la documentation des commandes Linux
Wikipedia.orgListe des ports réseaux courants

2