Configuration du service iptables
Présentation
Un pare-feu (ou Firewall) est un dispositif logiciel permettant de filtrer les paquets réseau afin de mettre en place une politique de sécurité. Un pare-feu peut être avec états (stateful firewall) (il mémorise l'état des connexions, en vérifie la conformité et applique des règles adaptées) ou sans état (stateless firewall) (il applique des règles sur chaque paquet de manière indépendante). Plus d'information ici.
Le pare-feu linux (appelé iptables) est sans état. Les règles de filtrage sont regroupées dans des chaînes elles mêmes placées dans des tables (filter, nat, mangle). La table filter contient trois chaînes (ou plus) :
- INPUT : pour les paquets entrants dans la machine,
- OUTPUT : pour les paquets générés localement,
- FORWARD : pour les paquets routés à travers la machine.
Lorsqu'un paquet traverse une chaîne, les règles sont testées dans l'ordre les unes après les autres. Une règle sélectionne un paquet en fonction de critères (protocole, adresses, type, etc.) et lui applique une cible (ACCEPT, DROP, QUEUE ou RETURN). Si une règle est appliquée, le traitement de la chaîne est terminé. Si les règles ne sont pas applicables, la cible par défaut de la chaîne est utilisée (faites man iptables pour plus de précision).
Structure classique :
- la chaîne INPUT regroupe les règles de filtrage des paquets entrants. Chaque règle code un droit, c'est-à-dire un paquet accepté dans un certain contexte.
- La cible par défaut de la chaîne INPUT est fixée à DROP. Donc, tous ce qui n'est pas accepté (par une règle) est refusé (par la cible de la chaîne).
Quelques exercices
Commencez par ajouter les lignes suivantes aux fichiers /etc/hosts :
192.168.0.1 isl1 isl1.dil.univ-mrs.fr 192.168.0.2 isl2 isl2.dil.univ-mrs.fr 192.168.0.3 isl3 isl3.dil.univ-mrs.fr 192.168.0.4 isl4 isl4.dil.univ-mrs.fr 192.168.0.5 isl5 isl5.dil.univ-mrs.fr 192.168.0.6 isl6 isl6.dil.univ-mrs.fr 192.168.0.7 isl7 isl7.dil.univ-mrs.fr 192.168.0.8 isl8 isl8.dil.univ-mrs.fr 192.168.0.9 isl9 isl9.dil.univ-mrs.fr 192.168.0.10 isl10 isl10.dil.univ-mrs.fr 192.168.0.11 isl11 isl11.dil.univ-mrs.fr 192.168.0.12 isl12 isl12.dil.univ-mrs.fr 192.168.0.13 isl13 isl13.dil.univ-mrs.fr 192.168.0.14 isl14 isl14.dil.univ-mrs.fr 192.168.0.15 isl15 isl15.dil.univ-mrs.fr 192.168.0.16 isl16 isl16.dil.univ-mrs.fr 192.168.0.17 isl17 isl17.dil.univ-mrs.fr 192.168.0.18 isl18 isl18.dil.univ-mrs.fr 192.168.0.19 isl19 isl19.dil.univ-mrs.fr 192.168.0.250 gwisl gwisl.dil.univ-mrs.fr
Commencez par supprimer les règles du FireWall :
service iptables stop
Mettez en place ces politiques de filtrage (attention, entre chaque exercice, repartez d'une base vierge) :
- Ajoutez des règles à la chaîne INPUT (commande iptables) pour interdire certains protocoles à certaines machines. Testez le FW en analysant les ports ouverts de votre machine à partir de la source avec la commande nmap.
- Ajoutez des règles à la chaîne INPUT (commande iptables) pour interdire complètement l'accès à votre machine à partir du réseau ISL.
Essayez de sauvegarder un jeu de règles en utilisant la clause save du service iptables :
service iptables save
Elles seront automatiquement restaurées au démarrage du service iptables.