Concept : iptables, le videur du réseau
DROP par défaut = ce qui n'est pas autorisé explicitement est bloqué. Jimmy a mis INPUT en DROP et n'a rien autorisé. Bravo Jimmy.Inspecter les règles actuelles
Avant de corriger quoi que ce soit, voyons le désastre que Jimmy a laissé derrière lui.
curl -I http://127.0.0.1 maintenant, le terminal va se figer — c'est normal. La politique DROP silencieuse jette les paquets sans répondre, donc curl attend indéfiniment. Appuyez sur Ctrl+C pour interrompre. C'est la preuve que le pare-feu bloque bien le trafic.
# Voir toutes les règles iptables
# TODO: quelle commande iptables liste les règles ?
# Indice : sudo iptables -???
sudo iptables -???
# Version détaillée avec compteurs
sudo iptables -L -v -n
# Voir aussi la politique par défaut (INPUT, OUTPUT, FORWARD)
sudo iptables -L | head -5
▸ AFFICHER LA SOLUTION (essayez d'abord !)
L'option -L de iptables liste toutes les règles :
sudo iptables -L
# Vous verrez probablement : Chain INPUT (policy DROP)
# C'est le travail de Jimmy.
Autoriser HTTP
HTTP tourne sur le port 80 en TCP. Il faut ajouter une règle iptables pour autoriser ce trafic entrant.
# HTTP c'est le port 80 en TCP
# TODO: ajouter la règle pour autoriser HTTP entrant
# Syntaxe : sudo iptables -A INPUT -p tcp --dport PORT -j ACTION
sudo iptables -A ????? -p ??? --dport ?? -j ????
# Vérifier que la règle est bien ajoutée
sudo iptables -L -n | grep 80
▸ AFFICHER LA SOLUTION (essayez d'abord !)
INPUT = chaîne d'entrée, tcp = protocole, 80 = port HTTP, ACCEPT = laisser passer :
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Autoriser HTTPS
HTTPS tourne sur le port 443. Et il faut aussi autoriser le trafic établi — sinon les réponses aux requêtes sortantes seraient bloquées !
# HTTPS c'est le port 443 en TCP
# TODO: même chose pour HTTPS
sudo iptables -A INPUT -p tcp --dport ??? -j ACCEPT
# Autoriser aussi le trafic établi (important pour les réponses !)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
▸ AFFICHER LA SOLUTION
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Vérifier et sauvegarder
Vérifiez que tout fonctionne, puis sauvegardez les règles pour qu'elles survivent au prochain redémarrage. (Ce que Jimmy n'a pas fait.)
# Voir toutes les règles finales
sudo iptables -L -n -v
# Tester qu'HTTP fonctionne (127.0.0.1 force IPv4 — iptables ne filtre pas IPv6)
curl -I http://127.0.0.1
# Sauvegarder les règles (pour qu'elles survivent au reboot)
sudo iptables-save > /etc/iptables/rules.v4