1
Posted by alex on May 6th, 2008

Pour un débutant, iptables peut être extrêment difficle à maitriser puisqu'il implique soit: de bien connaitre les différentes couches d'un réseau et les techniques de routage de base, soit de connaitre les arguments par coeur sans forcément les comprendres.

Je vais donc rassembler ici des petits exemples de commandes qui pourraient éventuellement vous être utiles. Si vous essayez de faire une règle de routage, de rebond, de redirection ou de dénie qui ne se trouve pas dans la liste, dites le moi et si j'ai le temps j'essayerai de l'écrire pour vous, et de l'ajouter dans cette liste.

C'est quoi Iptables ?

Iptables est une application en ligne de commande qui sert à configurer les règles du filtre de paquets du kernel de Linux (depuis 2.4). Il peut être utilisé autant comme firewall(plutot pour appliqué les règles du firewall) que pour configuré les NAT (Network Address Translation: la réécriture des headers des paquets et le réacheminement de ceux-ci. Du routage quoi.)

1. Interdire les connexions entrantes d'une certaine IP (Bannir)

bash-3.1# iptables -A INPUT -s 255.255.255.255 -j DROP

2. Interdire les connexions sortantes vers une certaine IP

bash-3.1# iptables -A OUTPUT -d 255.255.255.255 -j DROP

3. Bloquer tous les genres de requêtes ICMP [ping,trace,echo request, etc]

C'est dans un but de sécurité (ça réduit nettement l'impact d'une attaque DoS icmp (ping flood)) Évite de deviner le OS du système. Plusieurs autres avantages..

bash-3.1# iptables -t filter -A INPUT -p icmp -i eth0 -j DROP

4. Bloquer les connexions sortantes sur un port et une ip en particulier.

Dans cette exemple les connexions sortantes de 1.2.3.4 (ip local,source) vers n'importe quel IP extérieur sur le port 25 seraient refusées.

bash-3.1# iptables -A OUTPUT -p tcp --dport 25 -s 1.2.3.4 -j DROP

5. Routage des paquets d'un port à un autre (ou d'une ip à une autre)

Si vous avez plusieurs IP ou souhaitez rediriger des ports cette commande est pour vous.

Prenons comme exemple que votre application en local écoute sur le ip:port 1.2.3.4:25, et vous souhaitez que les clients puissent s'y connecter depuis un autre port mais sans forcer l'application à écouter sur deux ports. Avec la ligne ci-dessous les clients de l'extérieur pourront s'y connecter depuis le ip:port 1.2.3.4:25 ET 1.2.3.4:250.

bash-3.1# iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 250 -i eth0 -j DNAT --to 1.2.3.4:25

6. Voir toutes les règles de iptables

bash-3.1# iptables --list

7. Flusher les règles de iptables (effacer toute les règles)

bash-3.1# iptables --flush

Note: Les exemples utilisent les connexions venant de l'interface eth0 et étant destinés à 1.2.3.4 (l'adresse publique de eth0). Il faut aussi savoir qu'iptables ajoute une charge supplémentaire sur la couche réseau du kernel. Si vous avez besoin de faire du QoS ou du filtrage de façon plus intensive, un firewall matériel est beaucoup plus approprié ;) . Les valeures en rose sont celles que vous aurez sans doute à modifier.

1 comment
Commentaires
avatar
J'aime beaucoup ton billet... ayant suivit une formation sur ce sujet (ainsi que squid), je dois dire qu'avec un peu de bonne volonté et de logique, on pourrait facilement comprendre les quelques règles que tu donnes et les adapter pour soi même...

Iptables est super puissant, j'ai adoré. Un truc à jamais oublier:

$ man iptables

C'est encore une aide pour peaufiner ses règles :)
Connectez-vous ou postez en tant qu'invité:
Your Name Your Email


Vérification: 0195
Go to Top