Skip to content

TP 4 — DMZ & Règles de pare-feu avec pfSense

BTS SIO SISR 1ère année Bloc 2 — Sécurité réseau & Pare-feu pfSense + VirtualBox

Contexte

La société InfoSecure souhaite héberger un serveur web accessible depuis son réseau interne tout en le isolant des postes clients. Votre mission est de mettre en place une architecture DMZ (Zone démilitarisée) à l'aide de pfSense et d'y appliquer une politique de sécurité stricte contrôlant les flux entre les trois zones du réseau.

Modalités

Toutes les configurations sont à réaliser sur des machines virtuelles VirtualBox. Vous devrez constituer un rapport-annexe contenant les captures d'écran demandées à chaque étape. Les captures sont indiquées par 📸. Sauvegardez vos VMs régulièrement via des snapshots.

Prérequis : vous avez déjà installé pfSense lors du TP précédent. Ce TP repart de cette base.


Qu'est-ce qu'une DMZ ?

Une DMZ (Demilitarized Zone) est une zone réseau intermédiaire, isolée à la fois d'Internet et du réseau local interne. Elle est utilisée pour héberger des serveurs accessibles depuis l'extérieur (web, mail…) sans exposer le réseau interne en cas de compromission.

Internet ──── [Pare-feu] ──── LAN (postes clients)

                 DMZ (serveurs exposés)

Le pare-feu contrôle tous les flux entre ces trois zones. C'est le cœur de ce TP.


Topologie du réseau

WAN — Internet (simulé)NAT / DHCPpfSensePare-feu 3 interfacesem0 — WANDHCPLAN — 192.168.10.0/24VM-Client192.168.10.10/24Debian / Windowsem1 — LAN192.168.10.1DMZ — 10.0.50.0/24VM-Serveur10.0.50.10/24Apache2 (HTTP)em2 — DMZ10.0.50.1❌ BLOQUÉ

Plan d'adressage

MachineInterface VMInterface pfSenseAdresse IPMasquePasserelleZone
pfSenseAdaptateur 1 (NAT)em0DHCPWAN
pfSenseAdaptateur 2 (Réseau interne lan)em1192.168.10.1/24LAN
pfSenseAdaptateur 3 (Réseau interne dmz)em210.0.50.1/24DMZ
VM-ClientAdaptateur 1 (Réseau interne lan)192.168.10.10/24192.168.10.1LAN
VM-ServeurAdaptateur 1 (Réseau interne dmz)10.0.50.10/2410.0.50.1DMZ

Politique de sécurité — Règles à mettre en place

Une fois l'infrastructure montée, les règles suivantes doivent être appliquées sur pfSense :

Règles LAN — appliquées sur l'interface LAN (trafic entrant depuis les clients)

#SourceDestinationServiceAction
1LAN 192.168.10.0/24VM-Serveur 10.0.50.10HTTP — TCP/80✅ PERMIT
2LAN 192.168.10.0/24DMZ 10.0.50.0/24SSH — TCP/22❌ DENY
3LAN 192.168.10.0/24DMZ 10.0.50.0/24Tout❌ DENY
4LAN 192.168.10.0/24Toutes destinationsTout✅ PERMIT

Règles DMZ — appliquées sur l'interface DMZ

#SourceDestinationServiceAction
5DMZ 10.0.50.0/24LAN 192.168.10.0/24Tout❌ DENY
6DMZ 10.0.50.0/24Toutes destinationsDNS — UDP/53✅ PERMIT
7DMZ 10.0.50.0/24Toutes destinationsHTTP/HTTPS — TCP/80,443✅ PERMIT
8DMZ 10.0.50.0/24Toutes destinationsTout❌ DENY

Pourquoi ces règles ?

  • La règle 2 empêche un administrateur mal intentionné (ou compromis) de SSH directement sur le serveur depuis un poste client standard.
  • La règle 5 est cruciale : si le serveur DMZ est piraté, il ne doit pas pouvoir atteindre les postes du LAN.
  • Les règles 6 et 7 permettent au serveur de se mettre à jour (apt update) sans ouvrir tous les flux sortants.

Missions de configuration

Rappel

Les chemins de navigation dans l'interface pfSense sont indiqués en gras : Interfaces → Assignments. En cas de blocage, relisez attentivement les captures d'exemple et les indications de chaque tâche.


Mission 1 — Ajout de la troisième interface réseau sur pfSense

Votre pfSense dispose actuellement de deux interfaces (WAN et LAN). Il faut lui ajouter une troisième pour la DMZ.

Tâche 1.1 — Éteindre la VM pfSense

Dans VirtualBox, éteignez la VM pfSense (clic droit → Fermer → Éteindre).

Ne jamais modifier les interfaces d'une VM allumée

Modifier les adaptateurs réseau d'une VM en cours d'exécution peut corrompre la configuration réseau de pfSense.

Tâche 1.2 — Ajouter l'adaptateur réseau DMZ

Dans les paramètres VirtualBox de la VM pfSense :

  • Allez dans Réseau → Adaptateur 3
  • Cochez Activer l'adaptateur réseau
  • Mode d'accès : Réseau interne
  • Nom : dmz (tapez exactement ce nom, il doit correspondre à la VM-Serveur)

Tâche 1.3 — Vérifier les adaptateurs des VMs Client et Serveur

VMAdaptateurModeNom réseau interne
VM-ClientAdaptateur 1Réseau internelan
VM-ServeurAdaptateur 1Réseau internedmz

Démarrez la VM pfSense.

📸 Capture 1

Fenêtre des paramètres VirtualBox de pfSense — onglet Réseau, montrant les 3 adaptateurs activés.


Mission 2 — Assignation de l'interface DMZ dans pfSense

Tâche 2.1 — Identifier la nouvelle interface

Dans la console pfSense (écran de la VM), vous devriez voir trois interfaces listées (em0, em1, em2). Si ce n'est pas le cas, choisissez l'option 1) Assign Interfaces dans le menu et assignez em2 comme interface supplémentaire.

Tâche 2.2 — Assigner l'interface dans l'interface web

Depuis la VM-Client (ou votre machine), connectez-vous à http://192.168.10.1 puis naviguez dans Interfaces → Assignments.

Vous devriez voir em2 listée comme interface disponible. Cliquez sur + Add pour l'ajouter. Elle apparaît sous le nom OPT1.

Tâche 2.3 — Configurer l'interface OPT1 (future DMZ)

Cliquez sur OPT1 dans le menu Interfaces pour la configurer :

ChampValeur
Enable✅ Coché
DescriptionDMZ
IPv4 Configuration TypeStatic IPv4
IPv4 Address10.0.50.1 / 24

Cliquez sur Save puis sur Apply Changes.

📸 Capture 2

Page de configuration de l'interface DMZ dans pfSense — champs remplis avant de sauvegarder.

Tâche 2.4 — Vérifier les interfaces

Allez dans Interfaces → Overview. Vous devez voir trois interfaces actives :

InterfaceIPÉtat
WAN (em0)Adresse DHCP obtenueup
LAN (em1)192.168.10.1up
DMZ (em2)10.0.50.1up

📸 Capture 3

Page Interfaces → Overview montrant les 3 interfaces actives avec leurs adresses IP.


Mission 3 — Configuration du serveur DHCP pour la DMZ

pfSense peut distribuer des adresses IP aux machines en DMZ, tout comme il le fait pour le LAN.

Tâche 3.1 — Activer le DHCP sur l'interface DMZ

Naviguez dans Services → DHCP Server → DMZ et configurez :

ChampValeur
Enable✅ Coché
Range — From10.0.50.100
Range — To10.0.50.200

Cliquez sur Save.

WARNING

Pour ce TP, VM-Serveur aura une adresse IP statique (10.0.50.10), pas DHCP. Le serveur DHCP DMZ est activé pour d'éventuelles futures machines, mais VM-Serveur sera configurée manuellement.


Mission 4 — Configuration de VM-Serveur (DMZ)

Tâche 4.0 — Vérifier l'obtention d'une adresse DHCP

Démarrez VM-Serveur (Debian). Avant toute configuration manuelle, vérifiez que la machine obtient bien une adresse IP depuis le serveur DHCP de pfSense.

bash
ip a

Vous devriez voir une adresse dans la plage 10.0.50.100 – 10.0.50.200 sur votre interface réseau.

INFO

Ne tentez pas de pinguer pfSense à cette étape — pfSense bloque par défaut tout le trafic initié depuis une interface DMZ tant qu'aucune règle n'est créée. Le ping échouera, c'est normal.

📸 Capture 4

Sortie de ip a sur VM-Serveur — adresse DHCP obtenue dans la plage 10.0.50.100–10.0.50.200.

Si vous n'obtenez pas d'adresse DHCP

  • Vérifiez que le serveur DHCP est bien activé sur l'interface DMZ dans pfSense (Services → DHCP Server → DMZ)
  • Vérifiez que l'adaptateur réseau de VM-Serveur est bien en mode Réseau interne avec le nom dmz
  • Relancez la demande DHCP manuellement : systemctl restart networking

Tâche 4.1 — Configurer l'adresse IP statique

Le serveur web doit toujours être joignable à la même adresse — on passe donc en IP statique. Créez un fichier dédié dans /etc/network/interfaces.d/ :

bash
nano /etc/network/interfaces.d/customNetwork

Ajoutez-y le contenu suivant :

bash
auto enp0s3
iface enp0s3 inet static
    address 10.0.50.10
    netmask 255.255.255.0
    gateway 10.0.50.1
    dns-nameservers 8.8.8.8

TIP

/etc/network/interfaces ne doit pas être modifié directement — il est réservé à la configuration de base du système (lo). Les fichiers placés dans /etc/network/interfaces.d/ sont automatiquement inclus.

Appliquez la configuration :

bash
systemctl restart networking

Vérifiez :

bash
ip a

📸 Capture 5

Sortie de ip a sur VM-Serveur montrant l'adresse 10.0.50.10/24.

Tâche 4.2 — Installer Apache2

bash
apt update && apt install apache2 -y

Modifiez la page d'accueil pour identifier clairement le serveur :

bash
echo "<h1>Serveur InfoSecure — DMZ</h1><p>Accès autorisé depuis le LAN uniquement.</p>" > /var/www/html/index.html

Vérifiez qu'Apache tourne :

bash
systemctl status apache2

📸 Capture 6

Sortie de systemctl status apache2 sur VM-Serveur — état active (running).


Mission 5 — Configuration de VM-Client (LAN)

Tâche 5.1 — Configurer l'adresse IP statique

Sur VM-Client, configurez l'adresse IP statique 192.168.10.10/24 avec la passerelle 192.168.10.1 (même méthode que VM-Serveur).

Tâche 5.2 — Tests de connectivité initiaux (avant les règles de pare-feu)

Depuis VM-Client, effectuez les tests suivants et notez les résultats dans votre rapport :

bash
# Test 1 — Passerelle LAN
ping -c 3 192.168.10.1

# Test 2 — Interface DMZ de pfSense
ping -c 3 10.0.50.1

# Test 3 — VM-Serveur
ping -c 3 10.0.50.10

# Test 4 — Internet
ping -c 3 8.8.8.8

À ce stade

Par défaut, pfSense autorise tout le trafic sortant depuis le LAN. Les tests 1, 2, 3 et 4 devraient réussir. Le test 3 peut échouer si aucune règle par défaut n'existe encore sur l'interface DMZ — c'est normal, notez simplement le résultat.

📸 Capture 7

Résultats des 4 commandes ping depuis VM-Client (avant configuration des règles).

Tâche 5.3 — Test HTTP initial

Ouvrez un navigateur sur VM-Client et accédez à http://10.0.50.10. Si la page Apache s'affiche, notez-le dans votre rapport.

📸 Capture 8

Navigateur de VM-Client affichant (ou non) la page Apache de VM-Serveur — avant les règles.


Mission 6 — Mise en place des règles de pare-feu

Avant de commencer

Relisez attentivement la politique de sécurité définie plus haut. Dans pfSense, les règles sont lues de haut en bas — la première règle qui correspond au trafic est appliquée. L'ordre est donc primordial.

Règles existantes sur l'interface LAN

En ouvrant Firewall → Rules → LAN, vous constaterez que pfSense a déjà créé 3 règles :

  • Anti-Lockout Rule — règle spéciale qui garantit que vous ne pouvez jamais vous couper l'accès à l'interface web de pfSense depuis le LAN, même si vous créez des règles trop restrictives. Elle autorise toujours l'accès aux ports 80 et 443 de pfSense depuis le LAN. Elle ne peut pas être supprimée ici (elle se désactive uniquement dans System → Advanced).
  • Default allow LAN to any rule (IPv4) — autorise tout le trafic IPv4 sortant depuis le LAN vers n'importe quelle destination.
  • Default allow LAN to any rule (IPv6) — même chose pour IPv6.

Vos nouvelles règles devront être placées au-dessus de ces règles par défaut pour être évaluées en premier.

Règles sur l'interface LAN

Naviguez dans Firewall → Rules → LAN.

Tâche 6.1 — Règle 1 : Autoriser HTTP du LAN vers VM-Serveur

Cliquez sur Add ↑ (ajouter en haut de la liste) :

ChampValeur
ActionPass
InterfaceLAN
ProtocolTCP
SourceLAN subnets
DestinationSingle host — 10.0.50.10
Destination PortHTTP (80)
DescriptionLAN → DMZ : HTTP autorisé

Sauvegardez.

Tâche 6.2 — Règle 2 : Bloquer SSH du LAN vers la DMZ

Ajoutez une règle en dessous de la règle 1 (Add ↓ depuis la règle 1) :

ChampValeur
ActionBlock
ProtocolTCP
SourceLAN subnets
DestinationDMZ subnets (10.0.50.0/24)
Destination PortSSH (22)
DescriptionLAN → DMZ : SSH bloqué

Tâche 6.3 — Règle 3 : Bloquer tout autre trafic LAN → DMZ

ChampValeur
ActionBlock
ProtocolAny
SourceLAN subnets
DestinationDMZ subnets (10.0.50.0/24)
DescriptionLAN → DMZ : tout autre trafic bloqué

TIP

La règle 4 (PERMIT tout vers toutes destinations) est déjà couverte par la règle par défaut pfSense sur le LAN. Il n'est pas nécessaire de la recréer.

Cliquez sur Apply Changes.

📸 Capture 9

Liste des règles LAN dans pfSense — les 3 règles créées visibles dans l'ordre correct, au-dessus des règles par défaut.

Règles sur l'interface DMZ

Naviguez dans Firewall → Rules → DMZ.

INFO

Par défaut, pfSense ne crée aucune règle sur les interfaces OPT (comme DMZ). Tout le trafic initié depuis la DMZ est donc bloqué. Vous allez créer uniquement les règles nécessaires.

Tâche 6.4 — Règle 5 : Bloquer explicitement DMZ → LAN

ChampValeur
ActionBlock
ProtocolAny
SourceDMZ subnets (10.0.50.0/24)
DestinationLAN subnets (192.168.10.0/24)
DescriptionDMZ → LAN : totalement bloqué

Tâche 6.5 — Règle 6 : Autoriser DNS sortant depuis la DMZ

ChampValeur
ActionPass
ProtocolUDP
SourceDMZ subnets
DestinationAny
Destination PortDNS (53)
DescriptionDMZ → WAN : DNS autorisé

Tâche 6.6 — Règles 7a et 7b : Autoriser HTTP et HTTPS sortants

Créez deux règles séparées (ou une seule avec un alias) :

ChampRègle 7aRègle 7b
ActionPassPass
ProtocolTCPTCP
SourceDMZ subnetsDMZ subnets
DestinationAnyAny
Destination PortHTTP (80)HTTPS (443)
DescriptionDMZ → WAN : HTTPDMZ → WAN : HTTPS

Tâche 6.7 — Règle 8 : Bloquer tout le reste depuis la DMZ

ChampValeur
ActionBlock
ProtocolAny
SourceDMZ subnets
DestinationAny
DescriptionDMZ : tout autre trafic bloqué

Cliquez sur Apply Changes.

📸 Capture 10

Liste des règles DMZ dans pfSense — les 5 règles créées dans l'ordre correct.


Mission 7 — Tests de validation

Effectuez l'ensemble des tests ci-dessous depuis VM-Client et VM-Serveur et renseignez les résultats dans votre rapport.

Tests depuis VM-Client (LAN)

#Commande / ActionRésultat attendu
T1curl http://10.0.50.10✅ Page HTML renvoyée
T2Navigateur → http://10.0.50.10✅ Page Apache visible
T3ssh user@10.0.50.10❌ Connexion refusée / timeout
T4ping 10.0.50.10❌ Timeout (ICMP non autorisé)
T5ping 8.8.8.8✅ Succès (sortie Internet LAN)
T6curl http://192.168.10.10 (ping LAN)✅ Succès (trafic LAN interne)

Tests depuis VM-Serveur (DMZ)

#Commande / ActionRésultat attendu
T7ping 192.168.10.10❌ Timeout (DMZ → LAN bloqué)
T8ping 192.168.10.1❌ Timeout (DMZ → LAN bloqué)
T9curl http://example.com✅ Contenu renvoyé (HTTP autorisé)
T10apt update✅ Succès (DNS + HTTPS autorisés)

Si T9 ou T10 échoue

Vérifiez que le DNS Resolver de pfSense est actif : Services → DNS Resolver → Enable. Vérifiez aussi que la règle DNS de la DMZ est bien au-dessus de la règle de blocage final.

📸 Capture 11

Résultat de T1 — sortie de curl http://10.0.50.10 depuis VM-Client (HTML visible).

📸 Capture 12

Résultat de T2 — navigateur de VM-Client affichant la page du serveur DMZ.

📸 Capture 13

Résultat de T3 — tentative SSH depuis VM-Client vers VM-Serveur (connexion refusée).

📸 Capture 14

Résultat de T7 — ping depuis VM-Serveur vers VM-Client (timeout).

📸 Capture 15

Résultat de T10 — sortie de apt update sur VM-Serveur (téléchargement des dépôts réussi).


Mission 8 — Observation des logs du pare-feu

pfSense enregistre les connexions bloquées en temps réel.

Tâche 8.1 — Consulter les logs de filtrage

Naviguez dans Status → System Logs → Firewall.

Effectuez un ping depuis VM-Client vers VM-Serveur (T4) puis observez les logs.

📸 Capture 16

Extrait des logs du pare-feu pfSense montrant un paquet ICMP bloqué en provenance de 192.168.10.10 vers 10.0.50.10.

Tâche 8.2 — Analyser une entrée de log

Repérez une ligne de log correspondant à un paquet bloqué et identifiez dans votre rapport :

  • L'interface concernée
  • L'adresse IP source et destination
  • Le protocole et le port
  • L'action appliquée (block)

Questions de synthèse

Répondez à ces questions dans votre rapport, en vous basant sur ce que vous avez observé durant le TP :

  1. Quel est le rôle d'une DMZ dans une infrastructure réseau ? Pourquoi ne pas simplement placer le serveur dans le LAN ?
  2. Expliquez pourquoi la règle DMZ → LAN : bloqué (règle 5) est la plus importante de ce TP du point de vue de la sécurité.
  3. Que se passerait-il si un attaquant compromettait VM-Serveur ? Quelles zones seraient protégées grâce à votre configuration ?
  4. Pourquoi avez-vous autorisé HTTP/HTTPS et DNS sortants depuis la DMZ, mais bloqué le reste ?
  5. Donnez deux exemples concrets d'entreprises ou de services qui utiliseraient ce type d'architecture.

Rendu sur Moodle

Déposez votre rapport (PDF) avec l'ensemble des captures d'écran et les réponses aux questions de synthèse sur Moodle.