Iptables est un logiciel qui permet de définir de manière relativement simple des règles de filtrages et modification de flux réseaux qui s'appliqueront aux modules de gestion réseau du noyau Linux.
1. Présentation
Voici quelques exemples :
- "PREROUTING": Les paquets vont entrer dans cette chaîne avant qu'une décision de routage ne soit prise.
- "INPUT": Les paquets qui doivent rentrer dans l'équipement passeront dans cette chaîne.
- "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 sont traité par 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.
On peut créer des chaînes et rediriger des paquets dans celles-ci à partir d'une des 5 chaînes précédentes.
En fin de chaînes, on peut décider de la politique par défaut qui sera appliquée, à savoir ACCEPT ou DROP. Dans la plupart des cas on choisit la politique de rejet des paquets qui n'ont pas satisfait une seule des règles précédentes.
2. Règles
2.1 Affichage
Afficher toutes les chaines hors nat et mangle :
iptables -nvLAfficher uniquement la chaine INPUT :
iptables -nvL INPUTAfficher les règles PREROUTING et POSTROUTING :
iptables -nvL -t natAfficher les lignes avec un numéro devant :
iptables -nvL OUTPUT --line-numbers
2.2 Règles
Synxtaxe générale :
iptables -I <CHAIN> -i ethx -o ethx -s IP -d IP -p tcp/udp/icmp --dport/sport port -J ACCEPT/DROP
Il existe d'autre options, certaines sont présentées dans les exemples ci-dessous :
Insérer la règle en début de chaîne ou en position N dans la chaîne :
Iptables -IInsérer la règle en fin de chaîne :
Iptables -A
-i correspond à l'interface d'entrée (chaîne INPUT/FORWARD/PREROUTING)
-o correspond à l'interface de sortie ( chaîne FORWARD/OUTPUT/POSTROUTING)
-s correspond au(x) adresse(s) IP de(s) expéditeur(s)
-d correspond au(x) adresse(s) IP de(s) destinataire(s)
-p correspond au type de protocole tcp , udp , icmp , autre.
--dport est un numéro de port de destination.
--sport est un numéro de port d'émission.
Voici quelques exemples :
iptables -A INPUT -i eth2 -s 192.168.2.0/24 -j ACCEPT
iptables -A INPUT -i eth0.13 -p tcp --dport 80 -j DROP
iptables -I INPUT -p udp --dport 53 -j ACCEPT
iptables -I INPUT 3 -p udp --dport 53 -j ACCEPT
2.3 Effacement
Pour effacer une règle, il suffit :
- Soit de reprendre la commande de création en remplaçant le A ou le I par D.
- Soit d'afficher la chaine avec l'option --line-numbers et de supprimer avec le numéro de ligne.
Voici quelques exemples :
iptables -D INPUT -i eth0 -p tcp --dport 80 -j DROP
Effacer la troisième ligne de la chaine INPUT :
iptables -D INPUT 3
Effacer toutes les règles (INPUT,OUTPUT,FORWARD):
iptables -F
iptables -X
2.4 Chaîne
Ajouter une chaîne appelé chaine1:
iptables -N chaine1
Ajouter une règle dans la chaine :
iptables -A chaine1 -s 10.1.0.0/16 -j ACCEPT
Rediriger un flux dans une chaine :
iptables -A FORWARD -i eth0 -o eth1 -j chaine1
3. La traduction d'adresse - NAT
La traduction d'adresse est gérée avec les chaînes PREROUTING et POSTROUTING.
Dans la chaîne PREROUTING (avant routage), on ne peut modifier que l'adresse de destination. L'adresse source est conservée, on fait donc du DNAT, on appelle ça du "NAT destination".
Dans la chaîne POSTROUTING, (après routage) on ne peut modifier que l'adresse source. L'adresse de destination est conservée, on fait donc du SNAT, on appelle ça du "NAT source".
Dans la chaîne PREROUTING (avant routage), on ne peut modifier que l'adresse de destination. L'adresse source est conservée, on fait donc du DNAT, on appelle ça du "NAT destination".
Dans la chaîne POSTROUTING, (après routage) on ne peut modifier que l'adresse source. L'adresse de destination est conservée, on fait donc du SNAT, on appelle ça du "NAT source".
A chaque fois que l'on NAT une adresse, une table est renseignée avec la translation effectuée afin de pouvoir traiter les flux de réponses.
3.1 Prerouting
Exemple, on redirige ce qui arrive sur l'IP publique 195.115.19.35 doit être dirigé vers 172.16.0.1:
iptables -t nat -A PREROUTING -d 195.115.19.35/32 -j DNAT --to-destination 172.16.0.1/32
3.2 Postrouting
Exemple, si la source est une ip en 192.168.0.x en sortie elle sera remplacé par une ip entre 195.115.90.1 et 195.115.90.10 :
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT –to-source 195.115.90.1-195.115.90.10
3.3 Masquerade
L'option masquerade correspond a une option SNAT mais elle permet de simplifier l’écriture.
Exemple, dans tous les paquets sortant de l'interface eth0 on remplace l'adresse
d'expédition par l'ip de l'interface, typique d'un lien d'accès à
Internet :
iptables -t NAT -I POSTROUTING -o eth0 -j MASQUERADE
0 commentaires :
Enregistrer un commentaire