🔥 pfSense — DMZ et publication de services

Séance 2 Bloc B2 Module M2.1 3h30 BTS SIO SISR
FormationBTS SIO option SISR — IRIS Mediaschool
Bloc / ModuleB2 — M2.1 Infrastructure réseau
CompétencesB2.1 / B2.2 / Lien B3.4
Durée3h30
PrérequisAvoir 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).

🎯 Objectifs de la séance
  • 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, tcpdump et pfctl.

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 :

ZoneRéseauRôle
WAN91.208.45.12 (IP publique)Lien vers Internet (ISP)
DMZ192.168.30.0/24Serveurs publiés (debian-srv02 : 192.168.30.5)
LAN192.168.10.0/24Réseau interne (debian-srv01, win-srv01, etc.)

Règles générales de flux

FluxPolitiqueJustification
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éfautCloisonnement : un serveur web compromis ne peut pas atteindre l'AD
LAN → DMZ⚠️ Restreint (admin)SSH depuis VLAN Admin éventuellement autorisé depuis sources identifiées
💡 Avantage clé

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

  1. Interfaces › Assignments : ajouter l'interface OPT1, renommer en DMZ.
  2. Interfaces › (WAN) : configurer IP statique 91.208.45.12 et renseigner le gateway fourni par l'ISP.
  3. Interfaces › (LAN) : configurer 192.168.10.1/24.
  4. 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) :

ChampValeur
ActionPass
InterfaceLAN
SourceLAN net
Destinationany
DescriptionAllow LAN to Internet

DMZ — autoriser les sorties nécessaires (mises à jour) :

ChampValeur
ActionPass
InterfaceDMZ
SourceDMZ net
Destinationany
Ports destination80, 443, 53 (selon besoins)
DescriptionAllow DMZ to WAN for updates

DMZ — bloquer explicitement DMZ → LAN :

ChampValeur
ActionBlock
InterfaceDMZ
SourceDMZ net
DestinationLAN net
DescriptionBlock DMZ to LAN

Étape 3 — Port Forward (DNAT) pour publication HTTP/HTTPS

Firewall › NAT › Port Forward › Add :

ChampHTTP (80)HTTPS (443)
InterfaceWANWAN
ProtocolTCPTCP
DestinationWAN addressWAN address
Destination portHTTP (80)HTTPS (443)
Redirect target IP192.168.30.5192.168.30.5
Redirect target port80443
Filter rule association✅ Cocher✅ Cocher
💡 Info

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
💡 Note

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)

🏢 Contexte — InnovatTech

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-srv02 en 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

  1. Interfaces
    • Interfaces › Assign › ajouter OPT1 → renommer DMZ, configurer IP 192.168.30.1/24.
    • WAN : configurer IP 91.208.45.12 et gateway fourni par l'ISP.
    • LAN : configurer IP 192.168.10.1/24.
  2. 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.
  3. 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.
  4. NAT sortant
    • Vérifier Outbound NAT : laisser sur Automatic sauf si un SNAT statique est nécessaire.
  5. Sauvegarde
    • Diagnostics › Backup & Restore : télécharger config.xml (livrable).
  6. 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 50 et sudo pfctl -s nat.
    • Sur debian-srv02 : sudo tcpdump -i eth0 tcp port 80 or tcp port 443 -n.

Livrables attendus

  • Fichier config.xml exporté depuis pfSense.
  • Capture pcap (ou extrait tcpdump) montrant une connexion WAN→DMZ et la redirection.
  • Résultat de nmap montrant 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 : nmap depuis WAN, pfctl -s nat montrant la redirection, capture tcpdump montrant le trafic redirigé.

Synthèse (10 min)

💡 À retenir

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

  1. Q1 (QCM) : Dans une architecture DMZ à trois zones, quel flux est normalement INTERDIT par défaut ?

  2. Q2 (Vrai/Faux) : "Dans pfSense, cocher Filter rule association lors d'un port-forward crée automatiquement la règle firewall WAN correspondante."

  3. Q3 (QCM) : Quelle commande pfSense (shell) affiche les règles NAT actives ?

  4. Q4 (QCM) : Quelle est l'adresse IP de debian-srv02 (serveur web en DMZ) dans la topologie du cours ?

  5. 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
  1. 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.
  2. 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.
  3. sudo pfctl -s natpfctl -s nat affiche les règles NAT (DNAT/SNAT) actives ; -s rules affiche les règles de filtrage, -s state la table d'état des connexions.
  4. 192.168.30.5debian-srv02 est placé en DMZ sur le réseau 192.168.30.0/24 ; l'adresse passerelle DMZ de pfSense est 192.168.30.1.
  5. Pour éviter qu'un attaquant ayant compromis un serveur en DMZ puisse pivoter vers le réseau interne et atteindre des ressources critiques.