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). |