Tutoriel DNS dynamique sous Linux

[ASTUCE] Iptables


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 -nvL
Afficher uniquement la chaine INPUT :
iptables -nvL INPUT
Afficher les règles PREROUTING et POSTROUTING :
iptables -nvL -t nat
Afficher 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 -I
Insé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".
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