Skip to main content

IPTABLES

IPTABLES est un utilitaire Linux qui permet de configurer les règles du pare-feu du noyau (netfilter) pour filtrer, rediriger ou bloquer le trafic réseau.

Iptables traite les paquets de façon séquentielle : lorsqu’un paquet arrive, il est comparé aux règles du pare-feu dans l’ordre. Dès qu’une règle correspond, l’action associée (accepter, bloquer, rediriger…) est appliquée et le traitement s’arrête. Ainsi, si une règle en ligne 2 bloque un paquet, il sera rejeté même si une règle plus permissive existe en ligne 4. Il est donc essentiel d’écrire les règles de la plus spécifique à la plus générale, la dernière servant en général de « filet de sécurité » pour bloquer tout ce qui n’a pas été explicitement autorisé.

Installation iptables

Il faut installer iptables (par feu) et iptables-peristent (enregistreur de configuration) :

sudo apt-get install iptables iptables-persistent

Commande de base

    -A --append : Ajoute une règle à une chaîne (à la fin).
    -C --check : Recherche une règle qui correspond aux exigences de la chaîne.
    -D --delete : Supprime les règles spécifiées d'une chaîne.
    -F --flush : Supprime toutes les règles.
    -I --insert : Ajoute une règle à une chaîne à une position donnée.
    -L --list : Affiche toutes les règles d'une chaîne.
    -N -new-chain : Crée une nouvelle chaîne.
    -v --verbose : Affiche plus d'informations lors de l'utilisation d'une option de liste.
    -X --delete-chain : Supprime la chaîne fournie.

Configuration de base

Dans le cadre d'un serveur "web/internet", on peut déjà configurer une autorisation d'accès sur le port 443 (HTTPS), 80 (HTTP), le port SSH (uniquement depuis votre IP si elle est fixe) et les connexions établies :

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -s [MON_IP_FIXE] --dport [PORT_SSH] -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -j DROP

Enregistrement de la configuration

Si la configuration fonctionne, on peut l'enregistrer. Si elle fonctionne mal ou a rendu le serveur inaccessible, un redémarrage suffit à supprimer les règles, qui ne sont pas automatiquement configurées pour être appliquées au démarrage.

Pour enregistrer de manière pérenne les règles iptables, on utilise iptables-persistent qui permet l'enregistrement dans le fichier /etc/iptables/rules.v4 :

sudo netfilter-persistent save

CommandeGestion et modification de basela pour jouer avec iptableconfiguration

sudo iptables -L INPUT -v

Permets d'avoir la liste des règles (-L) en entrée (INPUT) avec le détail (-v). Permets de voir les paquets validés par une règles.

sudo iptables -L -v -n --line-n

Permets d'avoir un numéro de ligne pour chaque règle (utile si on veut en supprimer une).

sudo iptables -D INPUT 3

Permets de supprimer la règle en ligne 3

sudo iptables -R INPUT 2 -p tcp --dport XX -j ACCEPT

Permets de remplacer la règle 2 par les nouveaux paramètres.

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

Permets d'ajouter une règle (ici en première ligne)