Le rôle d'un pare-feu réseau, les paquets, adresses IP et ports, les règles lues de haut en bas, la politique « tout refuser sauf », la zone démilitarisée (DMZ) pour un serveur web, et la configuration d'un pare-feu pour le trafic HTTP et HTTPS.
1Situer
Le serveur de Souk Atlas est branché sur Internet : des milliers de machines inconnues peuvent lui envoyer des paquets, sur n'importe lequel de ses 65 535 ports. Seuls deux services doivent être visibles du public, le site en HTTP et en HTTPS. Le pare-feu réseau est le portier qui laisse passer ces deux-là et ferme tout le reste, avant même que PHP ne s'exécute.
2Comprendre
Les paquets traversent les règles du pare-feu
Un client de Casablanca demande le site en HTTPS. La règle 3 « autoriser tcp 443 vers web » correspond : le paquet passe.
1 / 4
Ce que voit un pare-feu
Sur Internet, les données voyagent découpées en paquets. Chaque paquet porte une étiquette que le pare-feu sait lire :
Champ
Exemple
Ce que c’est
Adresse source
41.250.3.7
La machine qui envoie
Adresse destination
10.0.0.10
La machine visée
Protocole
tcp, udp, icmp
La façon de transporter (icmp sert au ping)
Port destination
443
Le service visé sur la machine
Le pare-feu réseau ne lit pas le contenu : il ne sait pas si la requête HTTP contient un formulaire, un mot de passe ou une injection SQL. Il décide seulement sur l’adresse, le protocole et le port.
Des règles lues de haut en bas
Dans le simulateur de cette leçon, une règle s’écrit ainsi :
politique refuser # ce que rien n'autorise est bloqué
autoriser tcp 443 vers web # HTTPS vers le serveur web, depuis partout
autoriser tcp 22 de admin vers web # SSH, seulement depuis le poste admin
refuser tous de 185.220.101.4 # une adresse bannie, tous protocoles
Les vrais pare-feux ont une syntaxe différente, mais la même logique. Sur un serveur Linux, avec l’outil ufw :
sudo ufw default deny incoming
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from 192.168.1.5 to any port 22 proto tcp
sudo ufw enable
Tout refuser, sauf
La DMZ : isoler le serveur web
Pour Souk Atlas, cela donne trois zones et deux pare-feux (ou un pare-feu à trois pattes) :
Internet ──[443, 80]──▶ DMZ : serveur web 10.0.0.10
DMZ ──[3306, seulement depuis web]──▶ réseau interne : base 10.0.1.20
Bureau ──[22, seulement depuis admin]──▶ serveur web
Si une faille du site est exploitée, l’attaquant contrôle le serveur web, mais il ne peut pas joindre les postes du bureau, et ne parle à la base que sur le port 3306.
Configurer le pare-feu pour HTTP
Pour un serveur web, la configuration type :
80 et 443 ouverts à tous. Le port 80 ne sert qu’à rediriger vers HTTPS (réponse 301 vers https://).
22 (SSH) limité à l’adresse de l’administration, ou accessible seulement par un VPN.
3306 (MySQL) jamais ouvert vers Internet : seul le serveur web y accède.
Le trafic sortant du serveur web limité lui aussi : un serveur piraté qui ne peut pas contacter Internet ne peut pas télécharger d’outils ni envoyer les données volées.
Les journaux du pare-feu conservés et surveillés : une rafale de paquets refusés sur le port 22 signale une attaque en cours.
Exemple simple
Le gardien de la résidence
Le gardien a une liste : les livreurs vont à l'accueil, les résidents entrent avec leur badge, et personne n'entre au local technique. Celui qui n'est pas sur la liste reste dehors. Un pare-feu est ce gardien, et sa liste, ce sont les règles.
Exemple simple
Les guichets de la poste
Le bâtiment a une adresse (l'adresse IP) et des guichets numérotés (les ports) : guichet 443 pour les colis, 22 pour l'administration. Le pare-feu décide quel guichet ouvre, et pour qui.
Publicité
3Manipuler
Écrivez les règles du pare-feu de Souk Atlas. Le site (machine web) doit être joignable par tous en HTTP et HTTPS. La base de données (bdd) ne doit recevoir que les requêtes du serveur web. L'administration à distance (SSH, port 22) n'est permise que depuis le poste admin. L'adresse 185.220.101.4 a attaqué le site : bloquez-la entièrement. Tout le reste est refusé. Cliquez sur « Tester les paquets » : chaque ligne passe au vert quand sa décision est la bonne.
Les règles sont lues de haut en bas : la première qui correspond décide.
Paquets à traiter 0 / 10
Paquet
De → vers
Service
Il faut
Décision
Règle appliquée
Un client ouvre le site en HTTPS
41.250.3.7 → 10.0.0.10 (web)
tcp 443
laisser passer
…
…
Un client tape http:// (il sera redirigé vers HTTPS)
41.250.3.7 → 10.0.0.10 (web)
tcp 80
laisser passer
…
…
Le serveur web interroge la base
10.0.0.10 (web) → 10.0.1.20 (bdd)
tcp 3306
laisser passer
…
…
Un inconnu tente de joindre MySQL directement
41.250.3.7 → 10.0.1.20 (bdd)
tcp 3306
bloquer
…
…
Un robot essaie des mots de passe SSH
41.250.3.7 → 10.0.0.10 (web)
tcp 22
bloquer
…
…
L'administratrice se connecte en SSH
192.168.1.5 (admin) → 10.0.0.10 (web)
tcp 22
laisser passer
…
…
Un inconnu tente le bureau à distance Windows
41.250.3.7 → 10.0.0.10 (web)
tcp 3389
bloquer
…
…
Un ping depuis Internet
41.250.3.7 → 10.0.0.10 (web)
icmp (ping)
bloquer
…
…
L'attaquant revient sur le site en HTTPS
185.220.101.4 → 10.0.0.10 (web)
tcp 443
bloquer
…
…
La politique par défaut est « refuser » (ce qui n'est pas autorisé est bloqué).
4Pratiquer
Exercice 1 · Lire une règle
Que fait la règle `autoriser tcp 3306 de web vers bdd` ? Et pourquoi n'écrit-on pas simplement `autoriser tcp 3306` ?
Voir le corrigé
Elle laisse passer les connexions TCP vers le port 3306 (MySQL) seulement quand elles partent
de la machine web et vont vers la machine bdd.
« autoriser tcp 3306 » sans « de » ni « vers » ouvrirait MySQL à toutes les adresses d'Internet :
n'importe qui pourrait tenter des mots de passe sur la base.
Exercice 2 · L'ordre compte
Ces règles doivent bloquer l'adresse 185.220.101.4. Pourquoi ne fonctionnent-elles pas ? Corrigez-les.
```
politique refuser
autoriser tcp 443 vers web
refuser tous de 185.220.101.4
```
Voir un indice
Pour un paquet de 185.220.101.4 vers le port 443, quelle est la première règle qui correspond ?
Voir le corrigé
La première règle qui correspond décide. Un paquet HTTPS de l'attaquant correspond déjà
à la ligne 2, il passe : la ligne 3 n'est jamais lue pour lui.
Il faut placer le blocage avant :
politique refuser
refuser tous de 185.220.101.4
autoriser tcp 443 vers web
Exercice 3 · Un réseau entier
Les machines du bureau ont toutes une adresse entre 192.168.1.0 et 192.168.1.255. Écrivez une seule règle qui leur permet le SSH vers web.
Voir le corrigé
autoriser tcp 22 de 192.168.1.0/24 vers web
/24 signifie que les 24 premiers bits (192.168.1) sont fixes : les 256 adresses du réseau sont concernées.