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
Gestion et modification de la configuration
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)