Aller au contenu
Sécurité medium

La DMZ : isoler les services exposés sur Internet

10 min de lecture

Une DMZ (DeMilitarized Zone, zone démilitarisée) est un sous-réseau isolé placé entre Internet et votre réseau interne (LAN). On y héberge les services qui doivent être joignables depuis Internet (serveur web, mail, DNS public) pour que, en cas de compromission, l'attaquant reste confiné dans cette zone sans atteindre le LAN. Ce guide explique le rôle d'une DMZ, ses deux architectures, la matrice de flux qui en fait la sécurité, une implémentation nftables testée, et pourquoi le « DMZ host » de votre box n'en est pas une. Pour administrateurs et profils blue team.

  • Ce qu'est une DMZ et pourquoi elle réduit la surface d'attaque.
  • Les deux architectures : un seul ou deux pare-feu.
  • La matrice de flux entre WAN, DMZ et LAN.
  • Implémenter une DMZ avec nftables.
  • Pourquoi le DMZ host d'une box est un faux ami.

Le terme vient du vocabulaire militaire : une zone tampon neutre entre deux territoires hostiles. En réseau, une DMZ est un segment isolé entre la zone non fiable (Internet) et la zone de confiance (LAN).

L'idée est simple : un service exposé sur Internet est une cible. S'il est compromis, vous voulez que l'attaquant se retrouve dans une zone cloisonnée, pas au milieu de vos postes de travail et de vos bases de données. La DMZ est cette zone cloisonnée.

C'est une application directe de la défense en profondeur et de la segmentation réseau : chaque zone n'accède qu'à ce qui lui est strictement nécessaire.

Sans DMZ, un serveur web exposé vit sur le même réseau que vos données internes : le compromettre donne un pied dans le LAN. Avec une DMZ, vous obtenez trois bénéfices :

  • une surface d'attaque réduite : seuls les ports des services publics sont ouverts vers la DMZ ;
  • une segmentation claire entre l'exposé et l'interne ;
  • une defense en profondeur : franchir la DMZ ne suffit pas pour atteindre le LAN.

Il existe deux façons classiques de construire une DMZ, et le choix est un compromis entre coût et robustesse.

ArchitecturePrincipeCompromis
Un seul pare-feu (three-legged)1 pare-feu à 3 interfaces : WAN, DMZ, LANéconomique, mais point unique de défaillance
Double pare-feu (back-to-back)1 pare-feu externe (WAN-DMZ) + 1 interne (DMZ-LAN)plus sûr, plus coûteux

L'architecture three-legged (à trois pattes) repose sur un seul équipement portant trois interfaces. Simple et abordable, elle convient aux petits environnements, mais si ce pare-feu tombe ou est contourné, toute la défense s'effondre.

L'architecture back-to-back place deux pare-feu en série, idéalement de constructeurs différents : un attaquant doit alors franchir deux barrières reposant sur des technologies distinctes pour passer de la DMZ au LAN.

C'est le cœur de la sécurité d'une DMZ. Chaque flux entre les trois zones est soit autorisé, soit interdit, selon une logique stricte.

Source vers destinationRèglePourquoi
WAN vers DMZautorisé (80, 443, 25, 53...)services publics
WAN vers LANinterditjamais d'accès direct Internet vers interne
LAN vers DMZautoriséadministration, consultation
LAN vers WANautorisénavigation, mises à jour
DMZ vers LANinterdit (règle clé)un service compromis ne doit pas atteindre le LAN
DMZ vers WANlimitémises à jour seulement, filtré par port

La règle DMZ vers LAN interdit est le pivot de toute l'architecture. Si un attaquant prend le contrôle du serveur web en DMZ, cette règle l'empêche d'initier une connexion vers vos machines internes. Les réponses légitimes (quand le LAN interroge la DMZ) transitent, elles, par le suivi de connexion (established, related).

Voici une politique nftables qui implémente cette matrice pour un pare-feu à trois interfaces. Ce ruleset a été chargé et vérifié en lab. Adaptez les noms d'interfaces (eth0, eth1, eth2) aux vôtres.

#!/usr/sbin/nft -f
flush ruleset
define WAN = eth0
define DMZ = eth1
define LAN = eth2
table inet firewall {
chain forward {
type filter hook forward priority filter; policy drop;
# Retours des connexions deja etablies
ct state established,related accept
ct state invalid drop
# WAN -> DMZ : services exposes uniquement
iifname $WAN oifname $DMZ tcp dport { 80, 443 } accept
# LAN -> DMZ : administration / consultation
iifname $LAN oifname $DMZ accept
# LAN -> WAN : navigation
iifname $LAN oifname $WAN accept
# DMZ -> WAN : sortie limitee (HTTPS pour les MAJ, DNS)
iifname $DMZ oifname $WAN tcp dport 443 accept
iifname $DMZ oifname $WAN udp dport 53 accept
# DMZ -> LAN et WAN -> LAN : INTERDITS -> tombent sur policy drop
}
}

Le point pédagogique essentiel : avec policy drop, tout ce qui n'est pas explicitement autorisé est bloqué. Les flux DMZ vers LAN et WAN vers LAN ne nécessitent donc aucune règle : ils sont refusés par défaut. C'est le bon réflexe (une liste d'autorisation, jamais une liste d'interdiction). Pour surveiller les tentatives suspectes, vous pouvez ajouter une règle de journalisation explicite sur DMZ -> LAN avant le drop.

Attention à un faux ami répandu. Le réglage DMZ host des box grand public (Livebox, Freebox, routeurs TP-Link/Netgear) n'est pas une vraie DMZ.

DMZ host (box)Vraie DMZ
Mécanismeredirige tout le trafic vers une IPsous-réseau isolé
Isolation du LANaucunerègles de pare-feu strictes
DMZ vers LANpossibleinterdit

Le DMZ host redirige tout le trafic entrant (tous ports, tous protocoles) vers une seule machine interne, qui reste sur le LAN. C'est du port forwarding total : aucune isolation. Si cette machine est compromise, l'attaquant a un accès complet au réseau interne, soit l'exact inverse d'une DMZ. Préférez toujours du port forwarding ciblé (un port précis vers un hôte précis).

Le concept se transpose directement chez les fournisseurs cloud, sans pare-feu à trois pattes. La DMZ devient un subnet public (qui héberge le reverse proxy ou le load balancer exposé), et le LAN un subnet privé (bases de données et backends sans IP publique). Les flux sont filtrés par des security groups et des NACL au sein d'un VPC. Le principe reste identique : seul l'indispensable est exposé, et le privé n'est jamais joignable directement depuis Internet.

  • Aucune donnée sensible en DMZ : les bases de données et annuaires restent dans le LAN privé.
  • Durcir les hôtes DMZ : surface minimale, mises à jour, services réduits au strict nécessaire.
  • Monitorer la DMZ : un IDS comme Snort repère les tentatives d'exploitation, et toute connexion DMZ vers LAN doit déclencher une alerte.
  • Micro-segmenter dans la DMZ : un service compromis ne doit pas atteindre ses voisins de la même zone.
  • Traiter la DMZ comme semi-hostile, même depuis le LAN : ne lui accordez jamais une confiance implicite.
  • Une DMZ est un sous-réseau isolé entre Internet et le LAN, qui héberge les services exposés.
  • Deux architectures : three-legged (1 pare-feu, économique) et back-to-back (2 pare-feu, plus sûr).
  • La règle clé est DMZ vers LAN interdit : un service compromis ne doit pas atteindre l'interne.
  • Avec policy drop, on autorise flux par flux ; les flux interdits ne nécessitent aucune règle.
  • Le DMZ host des box est du port forwarding total, pas une vraie DMZ.
  • Dans le cloud, la DMZ devient un subnet public filtré par security groups, le LAN un subnet privé.
  • Aucune donnée sensible en DMZ ; monitorez-la avec un IDS.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn