Le pare-feu
Sommaire
Laisser passer les flux autorisés et bloquer le reste : écrire des règles ordonnées, distinguer filtrage avec et sans état, placer une DMZ et configurer le NAT.
1. Le rôle du pare-feu
Un pare-feu contrôle ce qui entre et sort d'un réseau, comme le gardien d'un immeuble : il vérifie qui arrive, d'où il vient et chez qui il va, puis laisse passer ou refuse selon des consignes écrites à l'avance, les règles.
Ce qu'il empêche :
- un accès non autorisé : un inconnu sur Internet qui se connecte à un serveur interne ;
- un scan de ports : un attaquant qui teste les ports d'une machine pour trouver un service ouvert ;
- une sortie suspecte : un poste infecté qui contacte un serveur pirate à l'extérieur.
Il peut être matériel (boîtier dédié) ou logiciel (pfSense, pare-feu de Windows, iptables sous Linux).
2. Ports, TCP et UDP
Si l'adresse IP est l'adresse de l'immeuble, le port est le numéro de l'appartement : il désigne le service visé sur la machine.
| Port et transport | Service |
|---|---|
| 80 / TCP | HTTP : site web non chiffré |
| 443 / TCP | HTTPS : site web chiffré (cadenas du navigateur) |
| 53 / UDP et TCP | DNS : traduire un nom en adresse IP |
| 22 / TCP | SSH : administration à distance, chiffrée |
| 25 / TCP | SMTP : envoi d'e-mails |
| 3389 / TCP | RDP : bureau à distance Windows |
- TCP : avec connexion et accusés de réception, donc fiable (web, SSH, mail).
- UDP : sans connexion, plus rapide mais sans garantie (DNS, vidéo, jeux).
Une connexion TCP commence par trois messages : SYN (« je veux ouvrir une connexion »), SYN-ACK (« d'accord ») et ACK (« bien reçu, on commence »). Le client utilise un port source au hasard (ex. 51324) vers le port du service (ex. 443).
3. Les règles de filtrage
Une règle associe des critères à une action. Les critères :
- l'interface et le sens (ex. entrée sur l'interface LAN) ;
- l'IP source (ex. 192.168.10.0/24) et l'IP destination (ex. 172.16.50.10) ;
- le protocole (TCP, UDP, ICMP) et le port de destination (443, 53, 22…).
Les actions :
- ACCEPT / PASS : le paquet passe ;
- DROP / BLOCK : le paquet est jeté en silence, l'émetteur attend jusqu'au délai d'expiration ;
- REJECT : le paquet est jeté et l'émetteur reçoit un refus (ICMP ou TCP RST).
4. L'ordre des règles et la politique par défaut
Les règles sont lues de haut en bas et c'est la première qui correspond qui s'applique ; les suivantes ne sont pas lues.
1 192.168.10.10 -> 172.16.50.10 TCP 22 ACCEPT 2 192.168.20.0/24 -> Internet TCP 443 ACCEPT 3 192.168.20.0/24 -> Internet TCP 80 ACCEPT 4 any -> any any DROP
Un paquet 192.168.20.12 → 142.250.1.1 en TCP 443 correspond à la règle 2 : il passe, les règles 3 et 4 ne sont pas lues.
- Politique par défaut restrictive : tout ce qui n'est pas explicitement autorisé est interdit.
La dernière règle est
any → any → DROP(deny all). - Elle est recommandée car un oubli bloque un service (visible, vite corrigé) au lieu d'ouvrir une faille (invisible).
- Une règle large placée trop haut masque les règles précises en dessous. Placée après le DROP final, une règle ne sert plus à rien.
5. Stateless ou stateful
- Sans état (stateless) : chaque paquet est jugé seul, sans mémoire. Il faut une règle pour l'aller et une pour le retour. Exemple : une ACL standard sur un routeur.
- Avec état (stateful) : le pare-feu note les connexions dans une table d'états. Les réponses d'une connexion autorisée (état ESTABLISHED) passent toutes seules, sans règle retour. Exemples : pfSense, iptables avec conntrack.
Conséquence : environ deux fois moins de règles en stateful, et des règles plus strictes. En stateless, la règle retour (ex. source 172.16.50.10, port source 443, vers any) ouvre plus large.
Filtrage applicatif : un proxy ou un pare-feu nouvelle génération inspecte aussi le contenu (URL, application).
6. Les zones : LAN, WAN et DMZ
- LAN : la zone de confiance (postes, serveurs internes).
- WAN : Internet, la zone non fiable.
- DMZ : les serveurs publiés sur Internet (web, mail). S'ils sont piratés, ils ne donnent pas accès au LAN.
Règle d'or : la DMZ ne peut jamais initier de connexion vers le LAN. Ses serveurs sont exposés et peuvent être compromis : l'interdiction empêche l'attaquant de rebondir vers le réseau interne.
Un serveur web public se place donc en DMZ, jamais dans le LAN.
7. Adresses privées et NAT
Les adresses privées sont libres en interne et ne circulent jamais sur Internet : 10.0.0.0/8, 172.16.0.0/12 (172.16 à 172.31) et 192.168.0.0/16. Une adresse publique est unique au monde et fournie par le FAI (ex. 203.0.113.2).
Le NAT traduit une adresse privée en adresse publique, et inversement :
- NAT source (masquerading) : les postes du LAN sortent sur Internet avec l'IP publique du pare-feu (192.168.10.10 → 203.0.113.2).
- NAT destination (redirection de port) : une connexion sur l'IP publique, port 443, est envoyée au serveur web de la DMZ (203.0.113.2:443 → 172.16.50.10:443).
Le NAT traduit, il ne filtre pas. Une redirection de port sans règle de filtrage qui l'autorise ne laisse rien passer. Site inaccessible malgré la redirection : vérifier d'abord la règle WAN → 172.16.50.10 TCP 443, puis que le service web écoute et que la passerelle du serveur est bien le pare-feu.
8. Méthode : de la matrice des flux aux règles
D'abord, sur papier, la matrice des flux : qui parle à qui, sur quel port. Ensuite, une règle par case autorisée, puis le DROP final. Exemple du TD, avec un pare-feu stateful :
- LAN Admin → Internet : HTTP, HTTPS et DNS. LAN Élèves → Internet : HTTPS et DNS seulement.
- Les deux LAN → site web de la DMZ : HTTPS ; seul le PC admin (192.168.10.10) y accède aussi en SSH.
- Internet → site web : HTTPS, par l'IP publique 203.0.113.2.
- DMZ → LAN et Internet → LAN : interdit.
N Source Destination Proto Port Action 1 192.168.10.0/24 WAN TCP 80,443 PASS 2 192.168.10.0/24 WAN TCP+UDP 53 PASS 3 192.168.20.0/24 WAN TCP 443 PASS 4 192.168.20.0/24 WAN TCP+UDP 53 PASS 5 192.168.10.0/24 172.16.50.10 TCP 443 PASS 6 192.168.20.0/24 172.16.50.10 TCP 443 PASS 7 192.168.10.10 172.16.50.10 TCP 22 PASS 8 WAN 172.16.50.10 TCP 443 PASS 9 any any any any DROP
NAT à prévoir : NAT source des deux LAN vers 203.0.113.2, et NAT destination 203.0.113.2 TCP 443 → 172.16.50.10 TCP 443 (autorisé par la règle 8).
Si un collègue ajoute en tête « 192.168.20.0/24 → any → ACCEPT », les élèves obtiennent tous les services et les règles 3, 6 et 7 ne sont plus jamais lues : c'est contraire à la politique de sécurité.
9. pfSense et iptables
pfSense : système dédié pare-feu et routeur (basé sur FreeBSD), installé sur un PC ou une machine virtuelle, gratuit. Il se configure par une interface web, menu Firewall > Rules, avec une liste de règles par interface. Le TP correspondant est dans la fiche pfSense, DMZ et filtrage.
iptables : pare-feu intégré à Linux, en ligne de commande (successeur : nftables). Les règles sont rangées dans des chaînes : INPUT (trafic destiné à la machine), OUTPUT (trafic émis par la machine), FORWARD (trafic qui la traverse, cas d'un routeur).
# Politique par défaut : tout refuser en transit iptables -P FORWARD DROP # Laisser passer les réponses des connexions autorisées iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Le LAN peut naviguer en HTTPS vers Internet iptables -A FORWARD -i eth0 -o eth2 -s 192.168.10.0/24 -p tcp --dport 443 -j ACCEPT # NAT source vers Internet iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
-P: politique par défaut ;-A: ajouter une règle en fin de chaîne.-i/-o: interface d'entrée / de sortie ;-s: source.-p tcp --dport 443: protocole et port de destination.-j ACCEPT/-j DROP: l'action ;MASQUERADE: NAT source.
À retenir
- Pare-feu = équipement qui filtre le trafic entre des zones
- Règle = critères (source, destination, protocole, port) + action
- Première règle qui correspond = les règles sont lues de haut en bas, la première qui correspond s'applique
- Politique par défaut = sort des paquets sans règle : en général DROP (deny all en dernier)
- ACCEPT / DROP / REJECT = laisser passer / jeter en silence / jeter en prévenant l'émetteur
- Port = numéro du service visé sur une machine (443 = HTTPS)
- TCP = transport fiable avec connexion (SYN, SYN-ACK, ACK)
- UDP = transport rapide sans connexion (DNS, vidéo)
- Ports à connaître = HTTP 80, HTTPS 443, DNS 53, SSH 22, SMTP 25, RDP 3389
- Stateless = chaque paquet jugé seul : une règle pour l'aller et une pour le retour
- Stateful = table d'états : le retour d'une connexion autorisée passe seul
- DMZ = zone des serveurs accessibles depuis Internet ; DMZ vers LAN interdit
- Adresses privées = 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, jamais routées sur Internet
- NAT source = les postes internes sortent avec l'IP publique du pare-feu
- NAT destination = redirection d'un port public vers un serveur interne
- NAT et filtrage = le NAT traduit mais ne filtre pas : il faut aussi une règle
- Matrice des flux = tableau qui parle à qui, sur quel port, avant d'écrire les règles
- iptables = pare-feu Linux : chaînes INPUT, OUTPUT, FORWARD