Linux Sécurité
Iptables
Configuration des tables et chaînes du pare-feu intégré



Pour : Linux


Le pare-feu Iptables ce compose de plusieurs tables et chaînes pour la configuration.
Les paramètres permettent d'autoriser ou de bloquer les paquets entrant, sortant et traversant votre machine.


Il existe 4 tables dans Iptables:
La première est la table par défault, les nouvelles règles y sont ajouté lorsque aucune table n'a été spécifié.
filter => L'emplacement prévu pour ajouter des filtres sur les paquets entrant, sortant et traversant.
nat => Permet de faire la traduction d'adresse réseau (NAT) sur différents paquets.
mangle => Permet de modifier des paquets en changeant les champs de TOS (type de service), et d'autres ...

L'utilisation de la table filter marche de la même façon que la table par défault.

Syntaxe:

iptables [-t table] [Action] [Options Valeur] [Cible]

Quelque options:
-p protocol
-s adresse_ip IP source
-d adresse_ip IP de destination
-j Cible règle (LOG, ACCEPT, REJECT, DENY, DROP)
-i "Input Interface"
-o "Output Interface"
--dport Le numéro de port
--line-numbers Afficher les numéros de ligne des règles
lo localhost (ou 127.0.0.1, machine locale)
...



Lister les règles actuelles (-L)

# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination





Ajouter une règle pour un port (-A)

On va autoriser le trafic http entrant sur le port "80" de l'interface "eth0".

# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT



-A Pour ajouter(add) dans une chaine, ici c'est "INPUT"
-p Pour choisir le protocol, dans ce cas c'est "tcp"
-i Pour l'interface où la règle sera appliqué
--dport Pour le numéro de port, là c'est "80"
-j Pour l'autorisation


On va ajouter une autre règle pour autoriser les connexions ftp entrantes.

# iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT


Et aussi le SSH.

# iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT




Maintenant on va affiche la liste pour voir nos 3 nouvelles règles:

# iptables -L -v -n Chain INPUT (policy ACCEPT 8 packets, 608 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22





Autoriser le trafic d'une connexion déjà établie

On peut autoriser le trafic entrant d'une connexion déjà ouverte.

# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT



On voit cette nouvelle règle a la 4ème lignes des chaines INPUT:

# iptables -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 6 456 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED





Changer la politique (policy) d'une chaine (-P)

Quand vous affichez vos règles, les paramètres des politiques s'affiche juste après "policy".
Dans l'exemple ci-dessous, la chaine "INPUT" avec la politique "ACCEPT" permet d'autoriser tout le trafic entrant.

# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:www ACCEPT tcp -- anywhere anywhere tcp dpt:ftp ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT all -- anywhere anywhere state ESTABLISHED ...



Mais pour autoriser que le trafic entrant spécifié dans les règles INPUT, on va utiliser la commande "-P".
Syntaxe:
iptables -P [chaine] [politique]

On va par exemple mêttre la politique de bloquer(DROP) sur le trafic entrant(INPUT):

iptables -P INPUT DROP



On vérifie la politique:

# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:www ACCEPT tcp -- anywhere anywhere tcp dpt:ftp ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT all -- anywhere anywhere state ESTABLISHED





Autoriser l'interface locale

Quand vous changer de politique pensez à autoriser l'exécution de l'interface locale(loopback).

# iptables -I INPUT -i lo -j ACCEPT





Insérer une régle dans un certain ordre(-I)

Pour commencer, on va lister les règles avec un numéro par ligne.

# iptables -L --line-numbers Chain INPUT (policy DROP) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:www 2 ACCEPT tcp -- anywhere anywhere tcp dpt:ftp 3 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 4 ACCEPT all -- anywhere anywhere state ESTABLISHED



On va insérer en "3" ème ligne de la chaine "INPUT", l'autorisation du ping entrant (requêtes ICMP).

# iptables -I INPUT 3 -p icmp -j ACCEPT



On vérifie que la règle s'affiche en 3 ème lignes:

# iptables -L --line-numbers Chain INPUT (policy DROP) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:www 2 ACCEPT tcp -- anywhere anywhere tcp dpt:ftp 3 ACCEPT icmp -- anywhere anywhere 4 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 5 ACCEPT all -- anywhere anywhere state ESTABLISHED





Supprimer une règle d'autorisation(-D)

Pour commencer, on va lister les règles avec un numéro par ligne.

# iptables -L --line-numbers Chain INPUT (policy DROP) num target prot opt source destination 1 ACCEPT tcp -- anywhere anywhere tcp dpt:www 2 ACCEPT tcp -- anywhere anywhere tcp dpt:ftp 3 ACCEPT icmp -- anywhere anywhere 4 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 5 ACCEPT all -- anywhere anywhere state ESTABLISHED



Dans notre exemple on va supprimer les autorisations entrantes du "SSH" qui est sur la ligne "4" de la chaine "INPUT".
Syntaxe:
iptables -D [chaine] [numéro_de_ligne]

Exemple:

iptables -D INPUT 4





Règles de la chaine FORWARD

La chaine "FORWARD" permet d'autoriser a retransmettre (router) des paquets d'une interface a une autre.
PS: Voir activation du forward sur ce lien:
IP Forward - Activer le routage des paquets IP, des datagrammes
Par exemple pour autoriser a retransmettre des paquets en entré(-i) et en sorti(-o) sur l'interface "eth0"

iptables -A FORWARD -i eth0 -j ACCEPT iptables -A FORWARD -o eth0 -j ACCEPT




Par exemple pour autoriser a retransmettre des paquets en entrée(-i) de l'interface "eth0" vers en sortie(-o) sur l'interface "eth1" et dans la deuxième ligne dans l'autre sens:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT





Réinitialiser la configuration(-F)

Pour néttoyer toutes les régles de la configuration de votre pare-feu:

iptables -F iptables -X





Liens qui peuvent vous aidez:
Iptables - Configurer la table NAT du pare-feu
Iptables - Sauvegarder et restaurer la configuration des tables du pare-feu
Script - Démarrage et arret du pare-feu Iptables



Par O.Cédric
Sur www.octetmalin.net

Article publié le:
20/12/2011 09:08





Cette page vous à plus?

Dîtes que vous l'aimez en cliquant sur le bouton Facebook.