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 aà supprimer les règles, qui ne sont pas automatiquement configuréconfigurées pour être appliqué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 fichiersfichier /etc/iptables/rules.v4 :

sudo netfilter-persistent save

Commande de base pour jouer avec iptable

sudo iptables -L INPUT -v

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

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

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