Skip to main content

1_Theorie

iptables est un logiciel libre, qui permet de configurer les chaines et les règles dans le firewall dans l'espace noyaux (qui est composé par certain modules netfliter).

Nous pouvons créer des règles qui vont toucher certain protocole comme IPv4 et IPv6 ainsi que ARP.

Il existe 5 types de chaines :

  • "PREROUTING" : Les paquets vont entrer dans cette chaîne avant qu'une décision de routage ne soit prise.
  • "INPUT" : Le paquet va être livré sur place (N.B. : la livraison sur place ne dépend pas d'un processus ayant un socket ouvert ; la livraison est contrôlée par le tableau « local » de routage : ip route show table local).
  • "FORWARD" : Tous les paquets qui ont été acheminés et ne sont pas livrés sur place parcourent la chaîne.
  • "OUTPUT" : Les paquets envoyés à partir de la machine elle-même se rendront à cette chaîne.
  • "POSTROUTING" : La décision de routage a été prise. Les paquets entrent dans cette chaîne, juste avant qu'ils ne soient transmis vers le matériel. (attention source : https://fr.wikipedia.org/wiki/Iptables )

les différentes actions :

  • soit une règle corresponde au paquet et décide du sort ultime du paquet (par exemple en appelant l'un des jugements ACCEPT ou DROP) ;
  • soit une règle appelle le jugement RETURN et, dans ce cas, le traitement revient à la chaîne d'appel ;
  • soit la fin de la chaîne est atteinte. Actions aussi rend un verdict comme ACCEPT (les modules NAT feront cela) ou DROP (en général le module REJECT), mais aussi peut impliquer CONTINUE (nom interne) pour continuer avec la règle suivante, comme si aucun action/jugement n'avait été précisé. (attention source : https://fr.wikipedia.org/wiki/Iptables )

Iptables formatée avec des options régulières

sudo iptables -A  -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.>  -j <target>

options de configuration les plus importantes :

Commande iptables Exemple Explication
-N "nom de la chaîne" sudo iptables -N test Crée une nouvelle chaîne appelée "test".
-X "nom de la chaîne" sudo iptables -X test Supprime la chaîne vide "test" ; ne fonctionne pas avec les chaînes standard INPUT, OUTPUT et FORWARD.
-L "nom de la chaîne " sudo iptables -L test Liste les règles de la chaîne "test".
-F "nom de la chaîne " sudo iptables -F test Supprime les règles de la chaîne "test".
-P "nom de la chaîne " "Action" sudo iptables -P INPUT ACCEPT Définit le règlement de la chaîne. Dans l’exemple, le paquet est automatiquement accepté si les règles de filtre de la chaîne INPUT ne sont pas accessibles.
-A "nom de la chaîne " "Règle" sudo iptables -A test -s 127.0.0.1 -j DROP Attache une nouvelle règle à la chaîne sélectionnée. Dans l’exemple, on ajoute à la chaîne "test" une règle pour rejeter les paquets de données provenant de l’adresse IP 127.0.0.1.
-D "nom de la chaîne " "Règle" sudo iptables -D test -s 127.0.0.1 -j DROP Supprime une règle spécifique à la chaîne sélectionnée.
-I "nom de la chaîne " "Position" "Regel" sudo iptables -I test 1 -s 127.0.0.1 -j DROP Ajoute une nouvelle règle à une position définie dans la chaîne sélectionnée (position 1 dans l’exemple).
-D "nom de la chaîne " "Position" sudo iptables -D test 1 Supprime une règle occupant une position prédéfinie dans la chaîne sélectionnée (position 1 dans l’exemple).