🔥 pfSense — DMZ et publication de services
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc / Module | B2 — M2.1 Infrastructure réseau |
| Compétences | B2.1 / B2.2 / Lien B3.4 |
| Durée | 3h30 |
| Prérequis | Avoir complété la Séance 1 (Firewall types et NAT) |
Introduction (10 min)
Publier un service web sans zone DMZ, c'est exposer directement le réseau interne : le jour où le serveur web est compromis, l'attaquant peut pivoter et atteindre les services internes (AD, NAS, bastion). La DMZ est une zone tampon qui limite les flux autorisés et réduit le risque de mouvement latéral.
Cette séance montre comment concevoir une DMZ à trois zones (WAN/LAN/DMZ), configurer pfSense 2.7 pour isoler et publier un service web sur debian-srv02, et vérifier la configuration par des outils (nmap, tcpdump, pfctl).
- Concevoir une architecture DMZ et justifier les flux autorisés/refusés.
- Configurer pfSense 2.7 (interfaces WAN/LAN/DMZ, règles firewall, NAT port-forward).
- Valider la publication d'un service HTTP/HTTPS depuis le WAN vers un serveur en DMZ à l'aide de
nmap,tcpdumpetpfctl.
1. Architecture DMZ et principes (30 min)
Une DMZ (Demilitarized Zone) est une zone réseau séparée où sont placés les services accessibles depuis Internet (web, mail, reverse proxy). L'architecture minimale comprend trois zones :
| Zone | Réseau | Rôle |
|---|---|---|
| WAN | 91.208.45.12 (IP publique) | Lien vers Internet (ISP) |
| DMZ | 192.168.30.0/24 | Serveurs publiés (debian-srv02 : 192.168.30.5) |
| LAN | 192.168.10.0/24 | Réseau interne (debian-srv01, win-srv01, etc.) |
Règles générales de flux
| Flux | Politique | Justification |
|---|---|---|
| WAN → DMZ | ✅ Autorisé (ports publiés) | Seuls TCP 80/443 via DNAT — accès au service web public |
| DMZ → WAN | ✅ Autorisé (limité) | HTTP/HTTPS/DNS pour mises à jour, avec restrictions |
| DMZ → LAN | 🚫 Interdit par défaut | Cloisonnement : un serveur web compromis ne peut pas atteindre l'AD |
| LAN → DMZ | ⚠️ Restreint (admin) | SSH depuis VLAN Admin éventuellement autorisé depuis sources identifiées |
Le cloisonnement par DMZ limite le mouvement latéral en cas de compromission : même si debian-srv02 est totalement contrôlé par un attaquant, celui-ci ne peut pas atteindre les ressources critiques du LAN tant que la règle Block DMZ → LAN est active sur pfSense.
2. pfSense 2.7 — configuration pas à pas (70 min)
pfSense est administré via une interface web (https://<ip-pfsense>). Les étapes suivantes décrivent les actions principales dans l'interface web et les vérifications en CLI.
Topologie retenue
Internet
│
[pfSense WAN] 91.208.45.12
/ | \
(NAT) / | \ (Routing)
DMZ | LAN
192.168.30.0/24| 192.168.10.0/24
debian-srv02 | debian-srv01
192.168.30.5 | 192.168.10.10
Étape 1 — Assignation des interfaces
- Interfaces › Assignments : ajouter l'interface OPT1, renommer en DMZ.
- Interfaces › (WAN) : configurer IP statique
91.208.45.12et renseigner le gateway fourni par l'ISP. - Interfaces › (LAN) : configurer
192.168.10.1/24. - Interfaces › DMZ : configurer
192.168.30.1/24.
Étape 2 — Règles firewall de base
LAN — autoriser le LAN vers Internet (ou restreindre selon politique) :
| Champ | Valeur |
|---|---|
| Action | Pass |
| Interface | LAN |
| Source | LAN net |
| Destination | any |
| Description | Allow LAN to Internet |
DMZ — autoriser les sorties nécessaires (mises à jour) :
| Champ | Valeur |
|---|---|
| Action | Pass |
| Interface | DMZ |
| Source | DMZ net |
| Destination | any |
| Ports destination | 80, 443, 53 (selon besoins) |
| Description | Allow DMZ to WAN for updates |
DMZ — bloquer explicitement DMZ → LAN :
| Champ | Valeur |
|---|---|
| Action | Block |
| Interface | DMZ |
| Source | DMZ net |
| Destination | LAN net |
| Description | Block DMZ to LAN |
Étape 3 — Port Forward (DNAT) pour publication HTTP/HTTPS
Firewall › NAT › Port Forward › Add :
| Champ | HTTP (80) | HTTPS (443) |
|---|---|---|
| Interface | WAN | WAN |
| Protocol | TCP | TCP |
| Destination | WAN address | WAN address |
| Destination port | HTTP (80) | HTTPS (443) |
| Redirect target IP | 192.168.30.5 | 192.168.30.5 |
| Redirect target port | 80 | 443 |
| Filter rule association | ✅ Cocher | ✅ Cocher |
Cocher Filter rule association crée automatiquement la règle WAN correspondante dans Firewall › Rules › WAN, ce qui évite de devoir créer manuellement une deuxième règle pour autoriser le trafic entrant redirigé.
Étape 4 — NAT sortant
Firewall › NAT › Outbound : par défaut pfSense utilise l'Automatic outbound NAT. Pour des besoins particuliers (SNAT statique, NAT 1:1), sélectionner Manual outbound et ajouter les règles nécessaires pour la DMZ/LAN.
Étape 5 — Logs firewall
Status › System Logs › Firewall : vérifier les logs. En CLI pfSense :
# Afficher le log du firewall (circular log)
clog /var/log/filter.log | tail -n 100
# Ou en temps réel
clog -f /var/log/filter.log
Étape 6 — Vérifications CLI (shell pfSense)
# Lister les règles pf actives
sudo pfctl -s rules
# Lister les règles NAT actives
sudo pfctl -s nat
# Statistiques et table d'état
sudo pfctl -s state
pfSense utilise pf (packet filter OpenBSD) comme moteur de filtrage. pfctl est l'outil de contrôle en ligne de commande.
3. Publication d'un service HTTP/HTTPS depuis le WAN (40 min)
3.1 Vérifier le service web sur debian-srv02
# Vérifier qu'un service web écoute sur 80 et 443
sudo ss -tlnp | grep -E ":(80|443)"
# Démarrer nginx si nécessaire
sudo systemctl enable --now nginx
3.2 Validation depuis le WAN avec Nmap
Depuis une machine située sur le WAN (ou une VM simulant Internet) :
# Scan SYN sur 80 et 443
nmap -Pn -sS -p 80,443 91.208.45.12
Sortie attendue si le DNAT est correctement configuré :
PORT STATE SERVICE
80/tcp open http
443/tcp open https
3.3 Capture réseau avec tcpdump sur pfSense
# Identifier l'interface WAN, puis capturer :
sudo tcpdump -i <wan_if> -nn tcp port 80 or tcp port 443 -w /tmp/pf_wan_capture.pcap
# Analyser avec tcpdump -r (ou Wireshark)
tcpdump -r /tmp/pf_wan_capture.pcap -nn
3.4 Vérifier les règles pf et le NAT
sudo pfctl -s rules
sudo pfctl -s nat
Vous devriez voir les entrées de redirection NAT (DNAT) et les règles de filtrage correspondantes créées automatiquement par pfSense.
Travaux Pratiques (70 min)
InnovatTech souhaite publier son site public hébergé sur debian-srv02 (192.168.30.5). Vous disposez d'un équipement pfSense 2.7 et d'un accès admin web. Vous devez configurer les trois interfaces, les règles firewall et les DNAT HTTP/HTTPS, puis valider l'accès depuis l'extérieur.
Prérequis techniques
- Accès admin à pfSense web GUI.
- Accès à
debian-srv02en DMZ (192.168.30.5) pour vérifier le service web. - Une machine située sur le WAN pour les tests (ou VM NATée hors réseau interne).
Étapes
-
Interfaces
- Interfaces › Assign › ajouter OPT1 → renommer DMZ, configurer IP
192.168.30.1/24. - WAN : configurer IP
91.208.45.12et gateway fourni par l'ISP. - LAN : configurer IP
192.168.10.1/24.
- Interfaces › Assign › ajouter OPT1 → renommer DMZ, configurer IP
-
Firewall rules
- LAN : règle Allow LAN net → any (ou restreindre selon politique).
- DMZ : règle Allow DMZ net → any (ports 80/443/53) et règle Block DMZ → LAN.
-
Port Forward
- Firewall › NAT › Port Forward : règle TCP 80 et TCP 443 vers
192.168.30.5. - Vérifier que les règles WAN apparaissent aussi dans Firewall › Rules › WAN.
- Firewall › NAT › Port Forward : règle TCP 80 et TCP 443 vers
-
NAT sortant
- Vérifier Outbound NAT : laisser sur Automatic sauf si un SNAT statique est nécessaire.
-
Sauvegarde
- Diagnostics › Backup & Restore : télécharger
config.xml(livrable).
- Diagnostics › Backup & Restore : télécharger
-
Tests
- Depuis la machine WAN :
nmap -Pn -sS -p80,443 91.208.45.12→ ports ouverts. - Sur pfSense :
clog /var/log/filter.log | tail -n 50etsudo pfctl -s nat. - Sur
debian-srv02:sudo tcpdump -i eth0 tcp port 80 or tcp port 443 -n.
- Depuis la machine WAN :
Livrables attendus
- Fichier
config.xmlexporté depuis pfSense. - Capture pcap (ou extrait tcpdump) montrant une connexion WAN→DMZ et la redirection.
- Résultat de
nmapmontrant 80/443 ouverts sur l'IP publique.
Critères de réussite
- DNAT HTTP et HTTPS correctement redirigés vers
192.168.30.5. - Règles DMZ→LAN bloquant tout trafic non explicitement autorisé.
- Preuves :
nmapdepuis WAN,pfctl -s natmontrant la redirection, capturetcpdumpmontrant le trafic redirigé.
Synthèse (10 min)
La DMZ isole les services exposés du réseau interne : elle réduit considérablement le risque de mouvement latéral après compromission d'un serveur web. Nous avons configuré pfSense pour créer cette séparation, mis en place des DNAT pour la publication HTTP/HTTPS et appris à valider par nmap, tcpdump et pfctl.
Question de vérification : en une phrase, expliquez pourquoi on n'autorise normalement pas le trafic DMZ→LAN.
Cours suivant : Poursuite des mises en pratique et intégration d'IPS/IDS sur pfSense (surveillance et durcissement des services publiés).
🎯 Quiz gamifié — Auto-évaluation
-
Q1 (QCM) : Dans une architecture DMZ à trois zones, quel flux est normalement INTERDIT par défaut ?
-
Q2 (Vrai/Faux) : "Dans pfSense, cocher Filter rule association lors d'un port-forward crée automatiquement la règle firewall WAN correspondante."
-
Q3 (QCM) : Quelle commande pfSense (shell) affiche les règles NAT actives ?
-
Q4 (QCM) : Quelle est l'adresse IP de
debian-srv02(serveur web en DMZ) dans la topologie du cours ? -
Q5 (Réponse libre) : En une phrase, expliquez pourquoi on bloque le trafic DMZ → LAN (principe de défense en profondeur).
Le plugin de quiz donnera un score et enregistrera vos points pour le leaderboard.
📝 Afficher les corrections
- DMZ → LAN (tout trafic vers le réseau interne) — Un serveur en DMZ compromis ne doit pas pouvoir atteindre le LAN (AD, NAS, bastion). Ce cloisonnement limite le mouvement latéral.
- Vrai — La case Filter rule association génère automatiquement dans Firewall › Rules › WAN une règle autorisant le trafic DNAT entrant vers la cible, évitant ainsi une configuration manuelle redondante.
- sudo pfctl -s nat —
pfctl -s nataffiche les règles NAT (DNAT/SNAT) actives ;-s rulesaffiche les règles de filtrage,-s statela table d'état des connexions. - 192.168.30.5 —
debian-srv02est placé en DMZ sur le réseau 192.168.30.0/24 ; l'adresse passerelle DMZ de pfSense est 192.168.30.1. - Pour éviter qu'un attaquant ayant compromis un serveur en DMZ puisse pivoter vers le réseau interne et atteindre des ressources critiques.
