🔥 pfSense, DMZ & Analyse de trafic réseau

Bloc 3 Module 3.4 Séance 2/2 BTS SIO SLAM
FormationBTS SIO option SLAM — IRIS Mediaschool
BlocB3 — Cybersécurité des services informatiques
ModuleM3.4 — Disponibilité, intégrité et confidentialité
Durée3h30 (5 min rappel · 10 min accroche · 70 min théorie · 85 min TP · 10 min synthèse)
PrérequisC3.4.1 Séance 1 — iptables, nftables, DNAT/SNAT, zonage DMZ
MatérielLab pfSense 2.7 (VM ou appliance) — 3 interfaces : WAN, LAN, DMZ (OPT1)

🎯 Objectifs

  • Comprendre l'architecture de pfSense (FreeBSD + pf, filtrage par interface)
  • Créer et configurer une DMZ accessible depuis Internet via l'interface graphique
  • Configurer un Port Forward NAT depuis l'interface WAN
  • Capturer et analyser du trafic réseau avec tcpdump et Wireshark
  • Identifier un scan réseau et produire un rapport d'incident

📖 Section 1 — pfSense en détail

Architecture et principe de filtrage

pfSense est une distribution basée sur FreeBSD + pf (packet filter). Contrairement à iptables/nftables qui filtrent selon des tables et chaînes, pf dans pfSense filtre à l'entrée de chaque interface (ingress). Cette différence est fondamentale pour l'écriture des règles.

      [Internet]
         |
       WAN (em0)
         |
    +----------------+
    |    pfSense      |
    |  (FreeBSD + pf) |
    |                 |
    | LAN (em1)  DMZ (em2)
    +----------------+
       |192.168.1.x      |192.168.10.x
       |                 |
    Postes LAN      Serveurs DMZ
⚠️ Règle fondamentale pfSense — Les règles s'appliquent sur l'interface d'entrée du paquet. Pour bloquer DMZ → LAN, la règle doit être placée sur l'interface DMZ. Pour autoriser LAN → DMZ, la règle est sur LAN.

Création d'une DMZ dans pfSense — pas à pas (GUI)

A. Ajouter et configurer l'interface DMZ

  • Interfaces > Assignments : ajouter OPT1
  • Renommer en "DMZ", IPv4 static : 192.168.10.1/24, description "DMZ - Serveurs publiés"
  • Save > Apply Changes

B. Règles de filtrage

  • Firewall > Rules > LAN : Pass / LAN net → DMZ net / Any (LAN peut accéder à la DMZ)
  • Firewall > Rules > DMZ : Block / DMZ net → LAN net / Any — cocher "Log packets" pour journaliser
  • Firewall > NAT > Port Forward : WAN → 192.168.10.10:80 (pfSense génère automatiquement la règle WAN associée)

C. Logs pfSense

Les logs firewall se trouvent dans Status > System Logs > Firewall. Format d'un log de blocage :

2026-02-20 10:15:23 FILTER: BLOCK IN on DMZ:
  src=192.168.10.12:45213 dst=192.168.1.5:22 proto=TCP
  rule=DMZ->LAN BLOCK

Suricata sur pfSense (IDS/IPS)

  • Installation : System > Package Manager > Available Packages > Suricata
  • Configuration : Services > Suricata > Interfaces > Add > sélectionner DMZ
  • Mode Legacy : détection uniquement (alertes)
  • Mode Inline/IPS : bloque activement le trafic malveillant en temps réel

📖 Section 2 — Analyse de trafic réseau (tcpdump / Wireshark)

tcpdump — commandes essentielles

# Capturer tout le trafic sur une interface
sudo tcpdump -i eth0 -nn -s 0 -w /tmp/capture.pcap

# Capturer uniquement HTTP vers une IP
sudo tcpdump -i eth0 -nn 'host 192.168.10.10 and tcp port 80' -w /tmp/http.pcap

# Capturer trafic DMZ → LAN
sudo tcpdump -i em2 -nn -s 0 'src net 192.168.10.0/24 and dst net 192.168.1.0/24' -w /tmp/scan_dmz_lan.pcap

# Surveiller les requêtes DNS suspectes
sudo tcpdump -i eth0 -nn 'udp port 53'

# Lire un fichier pcap
sudo tcpdump -r /tmp/capture.pcap -n

Wireshark — filtres d'affichage utiles

FiltreUsage
tcp.port == 80HTTP uniquement
ip.addr == 192.168.1.100Trafic d'une IP spécifique
tcp.flags.syn == 1 && tcp.flags.ack == 0SYNs isolés — détection de scan
http.request.method == "POST"Requêtes POST HTTP

Détecter un scan réseau dans Wireshark

Indicateurs : une source unique envoie de nombreux paquets SYN vers différents ports et cibles. Wireshark : appliquer tcp.flags.syn == 1 && tcp.flags.ack == 0 puis Statistics > Conversations pour identifier la source la plus active.

-- Exemple de trames Wireshark lors d'un scan --
No.  37  192.168.10.12 → 192.168.1.5  TCP  45213→22  [SYN]
No.  38  192.168.10.12 → 192.168.1.5  TCP  45213→80  [SYN]
No.  39  192.168.10.12 → 192.168.1.6  TCP  45213→443 [SYN]
(pattern : même source, ports différents → scan SYN)

🛠️ TP — Analyse d'incident InnovatTech (85 min)

Scénario : un technicien suspecte qu'un poste de la DMZ tente de se connecter au LAN sur des ports non autorisés.

Étape 1 — Générer le trafic de test (scan simulé)

# Depuis la VM simulant la DMZ (192.168.10.12)
nmap -sS 192.168.1.0/24

# Sur pfSense — capturer le trafic DMZ → LAN
sudo tcpdump -i em2 -nn -s 0 'src net 192.168.10.0/24 and dst net 192.168.1.0/24' -w /tmp/scan_dmz_lan.pcap

Étape 2 — Analyser dans Wireshark

Filtre Wireshark : tcp.flags.syn == 1 && tcp.flags.ack == 0
→ Statistics > Conversations (identifier la source la plus active)
→ Statistics > Endpoints (confirmer IP source)

Étape 3 — Vérifier les logs pfSense

Status > System Logs > Firewall — filtrer par interface = DMZ pendant la période du test. Extraits attendus :

2026-02-20 11:05:12 FILTER: BLOCK IN on DMZ:
  src=192.168.10.12:45213 dst=192.168.1.5:22  proto=TCP  rule=DMZ->LAN BLOCK
2026-02-20 11:05:12 FILTER: BLOCK IN on DMZ:
  src=192.168.10.12:45213 dst=192.168.1.6:80  proto=TCP  rule=DMZ->LAN BLOCK

Étape 4 — Rédiger le rapport d'incident (1 page)

  • Qui : machine source identifiée (IP, hostname si disponible)
  • Quoi : SYN scan vers le réseau LAN depuis DMZ en violation de la politique réseau
  • Quand : plage horaire et durée du test
  • Preuves : numéros de trames pcap + extraits de logs (3 lignes minimum)
  • Mesures prises : isolement de la machine, modification des règles, mise en place d'une alerte Suricata

💬 Synthèse — Question finale

Pourquoi pfSense filtre-t-il à l'ENTRÉE de l'interface ? Quelle conséquence pour l'écriture des règles ?

pf applique les règles sur l'interface par laquelle le paquet arrive (ingress) pour garantir une évaluation déterministe et empêcher le spoofing. Conséquence : pour bloquer DMZ → LAN, la règle doit être sur l'interface DMZ (pas sur LAN). Pour autoriser LAN → Internet, la règle est sur LAN.

📝 QCM — Testez vos connaissances

  1. Sur pfSense (pf), sur quelle interface et dans quel sens les règles de filtrage sont-elles appliquées ?
  2. Quelle commande tcpdump permet de capturer uniquement les paquets entre la DMZ et le LAN sur l'interface em2, et de les sauvegarder ?
  3. Quel filtre Wireshark permet de détecter les paquets SYN isolés caractéristiques d'un scan de ports (SYN scan) ?
  4. Vrai ou Faux — En mode Inline/IPS dans pfSense, Suricata peut bloquer activement le trafic malveillant en temps réel.
  5. Expliquez pourquoi pfSense filtre le trafic à l'entrée de l'interface et quelle conséquence cela a sur la rédaction des règles de blocage DMZ → LAN.
📝 Afficher les corrections
  1. Sur l'interface d'entrée (ingress) du paquet — pf/pfSense évalue les règles sur l'interface par laquelle le paquet arrive dans le pare-feu. Une règle sur l'interface DMZ s'applique aux paquets provenant de la DMZ, pas à ceux qui y sont envoyés.
  2. tcpdump -i em2 -nn -s 0 'src net 192.168.10.0/24 and dst net 192.168.1.0/24' -w /tmp/scan_dmz_lan.pcap — filtre les paquets ayant une source dans 192.168.10.0/24 et une destination dans 192.168.1.0/24, sur l'interface em2, et sauvegarde le résultat.
  3. tcp.flags.syn == 1 && tcp.flags.ack == 0 — sélectionne uniquement les paquets SYN sans ACK. Ces paquets correspondent à la phase d'initiation d'une connexion TCP, utilisée par nmap -sS (SYN scan half-open) pour sonder les ports.
  4. Vrai — en mode Inline/IPS, Suricata s'insère dans le chemin du trafic et peut dropper ou rejeter les paquets déclenchant des règles de sécurité. En mode Legacy (SPAN), Suricata se contente de générer des alertes sans interrompre le flux.
  5. pfSense filtre à l'ingress pour garantir une évaluation déterministe et prévenir le spoofing — conséquence : la règle de blocage DMZ → LAN doit être placée sur l'interface DMZ (là où les paquets de la DMZ entrent dans pfSense), et non sur l'interface LAN.
← C3.4.1 Séance 1 C3.4.2 Séance 1 →