IPTables - Maîtriser le pare-feu Linux
Contenus explorés en détail
Ce cours approfondit les iptables, l'outil standard de filtrage de paquets sous Linux. Vous apprendrez à configurer des règles pour sécuriser un réseau, gérer le trafic entrant/sortant et comprendre les chaînes (INPUT, OUTPUT, FORWARD). Les concepts clés incluent les tables (filter, nat, mangle), les cibles (ACCEPT, DROP, REJECT) et les mécanismes de journalisation (LOG).
- Maîtriser la syntaxe des règles iptables et leur priorité
- Implémenter des politiques de sécurité réseau adaptatives
- Diagnostiquer des problèmes de filtrage avec des outils comme tcpdump
Public concerné par ce PDF
Destiné aux administrateurs systèmes Linux, ingénieurs réseau et étudiants en cybersécurité. Prérequis : connaissances de base en ligne de commande et architecture TCP/IP. Les professionnels en transition vers DevOps y trouveront aussi des compétences clés pour sécuriser des conteneurs ou clouds.
Exemples pratiques et applications réelles
Un cas typique : bloquer les attaques DDoS en limitant les connexions SYN avec iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 30 -j DROP. Autre scénario : rediriger du trafic web vers un proxy transparent avec la table NAT. Les utilisateurs avancés créeront des règles dynamiques intégrées à des scripts bash pour réagir aux menaces en temps réel.
Secteurs d'application professionnelle
- Hébergement web : Isolation des clients sur un serveur mutualisé via des règles par utilisateur. Exemple : restreindre l'accès SSH à certaines IP.
- IoT industriel : Protection des équipements critiques en whitelistant uniquement les protocoles nécessaires (Modbus/TCP).
- Télécoms : Optimisation du trafic avec QoS via la table mangle pour prioriser la VoIP.
Guide des termes importants
- Netfilter : Framework noyau Linux traitant les paquets, dont iptables est l'interface utilisateur.
- Chaîne : Point de décision pour les paquets (ex: INPUT pour le trafic destiné à la machine locale).
- SNAT/DNAT : Traduction d'adresses source/destination pour le routage ou le masquerading.
- Conntrack : Module de suivi des connexions permettant un filtrage stateful.
- User-defined Chain : Ensemble de règles personnalisables pour organiser des politiques complexes.
Réponses aux questions fréquentes
Comment sauvegarder/restaurer des règles iptables ?
Utilisez iptables-save > fichier.rules pour l'export et iptables-restore < fichier.rules pour la restauration. Persister les règles au reboot avec le paquet iptables-persistent (Debian) ou en intégrant la restauration dans /etc/rc.local.
Quelle différence entre DROP et REJECT ?
DROP supprime silencieusement le paquet tandis que REJECT envoie un message d'erreur (comme un ICMP port unreachable). REJECT est plus "gentil" pour les utilisateurs légitimes mais peut aider les attaquants à cartographier le réseau.
Comment bloquer un pays entier ?
Utilisez des ensembles IP comme ipset avec des plages d'IP par pays : iptables -A INPUT -m set --match-set pays_malveillant src -j DROP. Des listes géolocalisées sont disponibles via des outils comme ip2location.
iptables est-il obsolète avec nftables ?
Non, bien que nftables soit le successeur officiel, iptables reste largement utilisé. Une couche de compatibilité permet même de traduire les règles via iptables-nft.
Comment debugger une règle qui ne fonctionne pas ?
Ajoutez temporairement une règle LOG en haut de la chaîne : iptables -I INPUT 1 -j LOG --log-prefix "DEBUG INPUT" puis consultez /var/log/syslog. Vérifiez aussi l'ordre des règles avec iptables -L -v -n.
Exercices appliqués et études de cas
Projet 1 : Pare-feu pour serveur web
1. Bloquer tout le trafic entrant sauf HTTP/HTTPS/SSH
2. Limiter les connexions SSH à 3 tentatives/min
3. Autoriser le ping mais limiter les requêtes ICMP à 5/sec
4. Journaliser les tentatives d'accès aux ports non ouverts
Projet 2 : Routeur sécurisé pour petite entreprise
1. Configurer le NAT masquerading pour le partage de connexion
2. Isoler les services internes (comptabilité) du réseau guest
3. Prioriser le trafic Teams/Slack sur le WiFi
4. Mettre en place une honeypot sur un port inutilisé