🌐 Réseaux · Bases Avancé 📅 Publié en 2022 🎬 29 min 31

Une Zone DMZ

Une zone DMZ (Demilitarized Zone) est un sous-réseau isolé qui sépare votre réseau interne des réseaux non fiables. Elle héberge les serveurs accessibles depuis Internet tout en protégeant votre infrastructure interne des attaques directes.

Introduction

Qu'est-ce qu'une zone démilitarisée (DMZ) ?

Nous allons aborder sur le sujet sur ce que c’est une zone DMZ ou Zone Démilitarisée dans le domaine du réseau informatique.

En informatique, une zone démilitarisée, ou DMZ (en anglais, demilitarized zone) est un sous-réseau séparé du réseau local et isolé de celui-ci ainsi que d'Internet (ou d'un autre réseau) par un pare-feu. Ce sous-réseau contient les machines étant susceptibles d'être accédées depuis Internet, et qui n'ont pas besoin d'accéder au réseau local.

Elle agit comme une zone tampon avec les réseaux non sécurisés tels qu'Internet.

Les services susceptibles d'être accédés depuis Internet seront situés en DMZ, et tous les flux en provenance d'Internet sont redirigés par défaut vers la DMZ par le pare-feu. Le pare-feu bloquera donc les accès au réseau local à partir de la DMZ pour garantir la sécurité. En cas de compromission d'un des services dans la DMZ, le pirate n'aura accès qu'aux machines de la DMZ et non au réseau local.

Le nom provient à l'origine de la zone coréenne démilitarisée.

La figure ci-dessous représente une architecture DMZ avec un pare-feu à trois interfaces.

DMZ à trois interfaces

L'inconvénient est que si cet unique pare-feu est compromis, plus rien n'est contrôlé. Il est cependant possible d'utiliser deux pare-feux en cascade afin d'éliminer ce risque. Il existe aussi des architectures de DMZ où celle-ci est située entre le réseau Internet et le réseau local, séparée de chacun de ces réseaux par un pare-feu.

Les DMZ ont pour objectif de renforcer le niveau de sécurité du réseau local de l'entreprise. Dans ce système, un nœud de réseau protégé et surveillé, tourné vers l'extérieur, a accès aux éléments exposés au sein de la zone dématérialisée tandis que le reste du réseau est protégé par un pare-feu.

Lorsqu'elles sont correctement mises en œuvre, les DMZ aident les entreprises à détecter et corriger les failles de sécurité avant qu'elles n'atteignent le réseau interne, où sont stockées les ressources les plus précieuses.

Objectif des zones démilitarisées

Les DMZ visent avant tout à protéger les hôtes les plus exposés aux attaques. Parmi ces hôtes, on trouve généralement des services accessibles aux utilisateurs en dehors du réseau local, tels que la messagerie, les serveurs Web et les serveurs DNS. En raison de leur vulnérabilité, ceux-ci sont placés dans un sous-réseau surveillé, afin que le reste du réseau soit protégé en cas d'attaque.

Les hôtes hébergés dans la DMZ peuvent uniquement posséder des autorisations d'accès extrêmement restreintes aux autres services du réseau interne, car le niveau de sécurité des données transmises dans cette zone fait parfois défaut. Par ailleurs, les communications entre les hôtes hébergés dans la DMZ et le réseau externe sont également limitées afin d'étendre autant que possible cette zone tampon. Cette pratique permet aux hôtes situés dans le réseau protégé d'interagir avec les réseaux interne et externe tandis que le pare-feu se charge de répartir et de gérer le trafic partagé entre la DMZ et le réseau interne. En général, un pare-feu complémentaire sera utilisé pour protéger la DMZ de toute menace émanant du réseau externe.

Tous les services accessibles aux utilisateurs depuis un réseau externe devront être placés dans la zone DMZ. Parmi les services les plus souvent rencontrés, on retrouvera :

  • Les serveurs Web : les serveurs Web utilisés à des fins de communication avec un serveur de base de données interne peuvent être placés dans une DMZ afin de protéger la base de données interne, qui contient généralement des informations sensibles. Les serveurs Web peuvent alors interagir, directement ou par l'intermédiaire d'un pare-feu pour applications, avec le serveur de base de données interne tandis que leur sécurité est assurée par la DMZ.
  • Serveurs de messagerie : les e-mails ainsi que la base de données utilisateur qui accueille les informations d'identification et les messages personnels sont généralement stockés sur des serveurs dépourvus d'accès direct à Internet. C'est pourquoi les serveurs de messagerie sont généralement construits ou placés dans la DMZ, afin qu'il soit possible d'accéder à la base de données de messagerie et d'interagir avec sans qu'elle ne soit directement exposée à un trafic susceptible de représenter un danger.
  • Serveurs FTP : ce type de serveur peut héberger des contenus sensibles sur le site Web d'une entreprise tout en permettant une interaction directe avec les fichiers. Les serveurs FTP doivent donc être partiellement isolés des systèmes internes critiques.

Si les DMZ offrent une sécurité supplémentaire contre les attaques externes, elles ne protègent toutefois pas des attaques internes comme les attaques par reniflage via un analyseur de paquets ou le spoofing par e-mail.

Conception d'un réseau avec une DMZ

Il existe de multiples façons de concevoir un réseau intégrant une zone démilitarisée. Deux méthodes sont fréquemment employées : l'utilisation d'un pare-feu unique (parfois appelé « pare-feu à trois interfaces ») et l'utilisation de deux pare-feux. Chacun de ces systèmes peut être étendu afin de créer des architectures complexes répondant aux exigences du réseau :

  • Pare-feu unique : une approche plus modeste de l'architecture réseau consiste à utiliser un pare-feu unique incluant au moins trois interfaces réseau. La zone démilitarisée sera alors placée à l'intérieur de ce pare-feu. Son fonctionnement est le suivant : le périphérique réseau externe établit la connexion à partir du FAI, le réseau interne est connecté par le deuxième périphérique, puis les connexions établies dans la DMZ sont gérées par le troisième périphérique réseau.
  • Deux pare-feux : l'approche la plus sécurisée consiste à utiliser deux pare-feux pour créer la DMZ. Le premier pare-feu (appelé pare-feu « frontal ») est configuré de façon à n'autoriser que le trafic destiné à la DMZ. Le second pare-feu (appelé pare-feu « principal ») est uniquement responsable du trafic entre la DMZ et le réseau interne. Pour renforcer le niveau de protection, il est possible d'utiliser des pare-feux développés par deux fournisseurs distincts, qui seront alors moins susceptibles de présenter les mêmes vulnérabilités. S'il est plus performant, ce modèle peut toutefois s'avérer plus coûteux à mettre en œuvre dans un réseau étendu.

Dans quelle mesure les DMZ sont-elles importantes ?

Dans de nombreux réseaux domestiques, les périphériques connectés à Internet sont construits autour d'un même réseau local, qui accède à Internet à partir d'un routeur haut débit. Ce routeur sert alors à la fois de point de connexion et de pare-feu, automatisant ainsi le filtrage du trafic afin de garantir que seuls les messages sécurisés pénètrent dans le réseau local. Dans un tel réseau, une zone démilitarisée peut être construite en ajoutant un pare-feu dédié qui isolera le réseau local du routeur. Quoique plus onéreuse, cette structure peut permettre de protéger les périphériques internes des attaques extérieures complexes.

Cas pratique

Nous allons mettre en place une Zone DMZ, pour que vous puissiez dans la pratique, le fonctionnement d'une DMZ ; pour cela nous aurons besoin de quatre serveurs, de deux ordinateurs, d'un pare-feu (serveur ASA), de deux Switch et d'un routeur.

Equipement Adresse IP Remarque
PC-1 192.168.1.1/24 Configuration manuellement
PC-2 192.168.1.2/24 Configuration manuellement
Switch-2 Commutateur LAN Inside
Serveur-ASA gig1/1 192.168.1.254/24 Inside
Serveur-ASA gig1/2 192.168.3.254/24 DMZ
Serveur-ASA gig1/3 192.168.2.254/24 outside
Switch-1 Commutateur - LAN DMZ
Serveur - A 192.168.3/.1/24 Serveur DNS
Serveur - B 192.168.3.2/24 Serveur messagerie
Serveur - C 192.168.3.3/24 Serveur Web
Routeur fa0/0 192.168.2.200/24 Outside
Router fa0/1 172.16.1.254/16 Internet
Serveur - D 172.16.1.1/16 Serveur - externe
Topologie de la maquette

Réinitialisation du serveur ASA

Dans un premier temps, nous allons remettre à zéro la configuration du serveur ASA, en utilisant ces commandes ci-dessous :

IOS — Commande Cisco · Par-feu ASA

          ! ── Passer en mode privilégié ─────────────────────────
          ciscoasa> enable

          ! ── Entrer en mode de configuration globale ───────────
          ciscoasa# configure terminal

          ! ── Suppression de la configuration DHCP par défaut ───────────
          ciscoasa(config)# no dhcpd address 192.168.1.5-192.168.1.36 inside
          ciscoasa(config)# no dhcpd enable inside

          ! ── Suppression de l'adresse IP sur le vlan1 ───────────
          ciscoasa(config)# interface vlan1
          ciscoasa(config-if)# no ip address 192.168.1.1 255.255.255.0
        

Configuration d'un Vlan pour l'inside

Maintenant, nous allons configurer un Vlan dans le pare-feu (Serveur ASA)

IOS — Commande Cisco · Par-feu ASA

          ! ── Passer en mode privilégié ─────────────────────────
          ciscoasa> enable

          ! ── Entrer en mode de configuration globale ───────────
          ciscoasa# configure terminal

          ! ── Création du Vlan 1 - inside ───────────
          ciscoasa(config)# interface vlan1

          ! ── configuration de l'interface - LAN par défaut le niveau est à 100 ───────────
          ciscoasa(config-if)# nameif inside
          ciscoasa(config-if)#security-level 100

          ! ── adressage IP à l'interface ───────────
          ciscoasa(config-if)# ip address 192.168.1.254 255.255.255.0

          ! ── Activation de l'interface ───────────
          ciscoasa(config-if)# no shutdown

          ! ── Quitter l'interface ───────────
          ciscoasa(config-if)# exit

          ! ── Configuration de l'interface gig1/1 ───────────
          ciscoasa(config)# interface gigabitEthernet 1/1
          ciscoasa(config-if)# switchport access vlan 1
        

Configuration du Vlan 2 pour l'outside

Nous allons configurer l'interface gig1/3, celui qui nous permet d'aller sur Internet.

IOS — Commande Cisco · Par-feu ASA

          ! ── Passer en mode privilégié ─────────────────────────
          ciscoasa> enable

          ! ── Entrer en mode de configuration globale ───────────
          ciscoasa# configure terminal

          ! ── Création du Vlan 2 - outside ───────────
          ciscoasa(config)# interface vlan2

          ! ── Adressage ip de l'interface outside ───────────
          ciscoasa(config-if)# ip address 192.168.2.254 255.255.255.0

          ! ── Configuration de l'interface outside par défaut le niveau est à 0 ───────────
          ciscoasa(config-if)# nameif outside
          ciscoasa(config-if)# security-level 0

          ! ── Activation de l'interface ───────────
          ciscoasa(config-if)# no shutdown

          ! ── Quitter l'interface ───────────
          ciscoasa(config-if)# exit

          ! ── Configuration de l'interface gig1/3 ───────────
          ciscoasa(config)# interface gigabitEthernet 1/3
          ciscoasa(config-if)# switchport access vlan 2
        

Mise en place du DMZ-Vlan 3

Nous attaquons le plus intéressant : c'est la configuration de la Zone DMZ dans le serveur ASA — pare-feu.

IOS — Commande Cisco · Par-feu ASA

          ! ── Passer en mode privilégié ─────────────────────────
          ciscoasa> enable

          ! ── Entrer en mode de configuration globale ───────────
          ciscoasa# configure terminal

          ! ── Création du Vlan3 - DMZ ───────────
          ciscoasa(config)# interface vlan3

          ! ── MEP l'interface DMZ ───────────
          ciscoasa(config-if)# no forward interface vlan1

          ! ── MEP l'interface DMZ par défaut le niveau est à 0 ───────────
          ciscoasa(config-if)# nameif dmz
          ciscoasa(config-if)# security-level 50

          ! ── Adressage ip de l'interface DMZ ───────────
          ciscoasa(config-if)# ip address 192.168.3.254 255.255.255.0

          ! ── Activation de l'interface ───────────
          ciscoasa(config-if)# no shutdown

          ! ── Quitter l'interface ───────────
          ciscoasa(config-if)# exit

          ! ── Configuration de l'interface gig1/2 ───────────
          ciscoasa(config)# interface gigabitEthernet 1/2
          ciscoasa(config-if)# switchport access vlan 3
        

Vérification de la configuration

Nous allons vérifier avec quelques commandes dans le pare-feu que tout est bien paramétré pour toutes les interfaces et adresses IP renseignées.

IOS — Commande Cisco · Par-feu ASA

          ! ── vérifcation des Vlans ─────────────────────────
          ciscoasa(config)# show switch vlan

          ! ── vérifcation des IP adresse ─────────────────────────
          ciscoasa(config)# show ip address

          ! ── vérifcation des interface ─────────────────────────
          ciscoasa(config)# show interface ip brief
        

Mise en place d'une route par défaut plus NAT

Mise en place d'une route par défaut.

IOS — Commande Cisco · Par-feu ASA

          ! ── route par défaut ─────────────────────────
          ciscoasa(config)# route outside 0.0.0.0 0.0.0.0 192.168.2.200

          ! ── Configuration du NAT ─────────────────────────
          ciscoasa(config)# object network INTERNET

          ! ── Configuration de l'object ─────────────────────────
          ciscoasa(config-network-object)# subnet 192.168.1.0 255.255.255.0
          ciscoasa(config-network-object)# nat (inside,outside) dynamic interface
          ciscoasa(config-network-object)# exit

           ! ── Configuration du serveur asa ─────────────────────────
          ciscoasa(config)# object network SERVER

          ! ── Configuration de l'object ─────────────────────────
          ciscoasa(config-network-object)# subnet 192.168.3.0 255.255.255.0
          ciscoasa(config-network-object)# nat (dmz,outside) dynamic interface

          ! ── Configuration de ACL ─────────────────────────
          ciscoasa(config)# access-list OUTSIDE_IN extended permit tcp any any eq 80
          ciscoasa(config)# access-list OUTSIDE_IN extended permit icmp any any
          ciscoasa(config)# access-group OUTSIDE_IN in interface outside
          ciscoasa(config)# exit
        

NAT statique — Accès entrant vers les serveurs DMZ

Le NAT dynamique (PAT) configuré précédemment permet aux serveurs DMZ d'initier des connexions vers l'extérieur. Pour que des clients externes puissent atteindre les serveurs (Web, DNS, Mail), il faut ajouter du NAT statique inbound pour chaque service.

IOS — Commande Cisco · Par-feu ASA

          ! ── NAT statique : Serveur Web (TCP 80) ─────────────────────────
          ciscoasa(config)# object network SRV-WEB
          ciscoasa(config-network-object)# host 192.168.3.3
          ciscoasa(config-network-object)# nat (dmz,outside) static interface service tcp 80 80
          ciscoasa(config-network-object)# exit

          ! ── NAT statique : Serveur DNS (UDP 53) ─────────────────────────
          ciscoasa(config)# object network SRV-DNS
          ciscoasa(config-network-object)# host 192.168.3.1
          ciscoasa(config-network-object)# nat (dmz,outside) static interface service udp 53 53
          ciscoasa(config-network-object)# exit

          ! ── NAT statique : Serveur Mail (TCP 25) ─────────────────────────
          ciscoasa(config)# object network SRV-MAIL
          ciscoasa(config-network-object)# host 192.168.3.2
          ciscoasa(config-network-object)# nat (dmz,outside) static interface service tcp 25 25
          ciscoasa(config-network-object)# exit
        

ACL — Autoriser le réseau Inside vers la DMZ

Par défaut, l'ASA autorise le trafic des interfaces de sécurité haute vers basse. Dès qu'une ACL est appliquée sur l'interface inside, cette règle implicite est supprimée. Il faut donc explicitement autoriser les PC internes à communiquer avec les serveurs DMZ.

IOS — Commande Cisco · Par-feu ASA

          ! ── ACL : Inside → DMZ ─────────────────────────
          ciscoasa(config)# access-list INSIDE_DMZ extended permit ip 192.168.1.0 255.255.255.0 192.168.3.0 255.255.255.0
          ciscoasa(config)# access-list INSIDE_DMZ extended permit icmp any any
          ciscoasa(config)# access-group INSIDE_DMZ in interface inside
        

Configuration du routeur externe

Il nous reste plus qu'à configurer le routeur externe et tout sera opérationnel.

IOS — Commande Cisco · Routeur

          ! ── Passer en mode privilégié ─────────────────────────
          router> enable

          ! ── Entrer en mode de configuration globale ───────────
          router# configure terminal

          ! ── Configuration de l'interface fa0/0 — vers l'ASA (Outside) ─────────────
          router(config)# interface FastEthernet 0/0
          router(config-if)# ip address 192.168.2.200 255.255.255.0
          router(config-if)# no shutdown
          router(config-if)# exit

          ! ── Configuration de l'interface fa0/1 — vers Internet ─────────────────────
          router(config)# interface FastEthernet 0/1
          router(config-if)# ip address 172.16.1.254 255.255.0.0
          router(config-if)# no shutdown
          router(config-if)# exit

          ! ── Activation du protocole RIP version 2 ──────────────────────────────────
          router(config)# router rip
          router(config-router)# version 2
          router(config-router)# network 172.16.0.0
          router(config-router)# network 192.168.2.0
          router(config-router)# no auto-summary
          router(config-router)# exit
        

Vérifications end-to-end

Une fois toutes les configurations appliquées, il est indispensable de tester la connectivité sur l'ensemble de l'architecture pour valider le bon fonctionnement de la DMZ.

IOS — Commande Cisco · Tests de connectivité

          ! ── Depuis un PC interne (PC-1 ou PC-2) ────────────────────────────────────
          C:\> ping 192.168.1.254
          ! Passerelle inside ASA — doit répondre

          C:\> ping 192.168.3.1
          ! Serveur DNS en DMZ — doit répondre

          C:\> ping 192.168.3.3
          ! Serveur Web en DMZ — doit répondre

          C:\> ping 172.16.1.1
          ! Serveur externe (Internet) — doit répondre via NAT

          ! ── Depuis le pare-feu ASA ──────────────────────────────────────────────────
          ciscoasa# ping outside 192.168.2.200
          ! Routeur externe — doit répondre

          ciscoasa# ping outside 172.16.1.1
          ! Serveur externe — doit répondre

          ! ── Vérification des ACL (compteurs de hits) ────────────────────────────────
          ciscoasa# show access-list

          ! ── Vérification des règles NAT actives ─────────────────────────────────────
          ciscoasa# show nat detail

          ! ── Vérification des connexions actives ─────────────────────────────────────
          ciscoasa# show conn

          ! ── Vérification de la table de routage ─────────────────────────────────────
          ciscoasa# show route
        

Récapitulatif des flux autorisés

Le tableau ci-dessous résume l'ensemble des communications autorisées ou bloquées par l'ASA dans cette architecture DMZ.

Source Destination Port / Proto Autorisé ?
InsideDMZTous✅ Oui (ACL INSIDE_DMZ)
InsideOutsideTous✅ Oui (NAT PAT)
OutsideDMZ — Serveur WebTCP 80✅ Oui (ACL OUTSIDE_IN)
OutsideDMZ — Serveur DNSUDP 53✅ Oui (ACL OUTSIDE_IN)
OutsideDMZ — Serveur MailTCP 25✅ Oui (ACL OUTSIDE_IN)
OutsideInsideTous❌ Non (bloqué par ASA)
DMZInsideTous❌ Non (no forward vlan1)
DMZOutsideTous✅ Oui (NAT PAT)

Conclusion

Les DMZ sont un composant essentiel de tout système de sécurité des réseaux et permettent de protéger les utilisateurs individuels comme les grandes entreprises. Ces zones offrent un niveau de protection supplémentaire en restreignant l'accès distant aux serveurs et aux informations internes, dont la violation serait particulièrement préjudiciable.

Dans ce cas pratique, nous avons mis en place une architecture DMZ complète sur un pare-feu Cisco ASA avec trois zones distinctes : Inside (réseau interne), DMZ (serveurs exposés) et Outside (Internet). Nous avons configuré le NAT dynamique (PAT) pour permettre aux réseaux internes et DMZ d'accéder à Internet, le NAT statique inbound pour rendre les serveurs DMZ accessibles depuis l'extérieur, ainsi que des ACL précises pour contrôler chaque flux entre les zones.

Il est important de garder à l'esprit que la DMZ ne protège pas contre toutes les menaces. Les attaques internes comme le sniffing de paquets ou le spoofing par e-mail ne sont pas bloquées par ce dispositif. Une DMZ est une couche de sécurité parmi d'autres, qui doit être combinée avec d'autres mécanismes : surveillance des logs, mises à jour régulières des services exposés, et segmentation fine du réseau interne.

Pour aller plus loin, l'architecture à deux pare-feux présentée en introduction est fortement recommandée en environnement de production. Elle élimine le point de défaillance unique de notre maquette : si le premier pare-feu est compromis, le second continue de protéger le réseau interne. L'utilisation de deux équipements de marques différentes renforce encore davantage cette protection en évitant qu'une même vulnérabilité ne touche les deux appareils simultanément.

Pour approfondir ce sujet, je t'invite à explorer les notions suivantes : les ACL avancées pour affiner le filtrage, le MPF (Modular Policy Framework) sur ASA pour l'inspection applicative en profondeur, ainsi que la mise en place du HTTPS/TLS sur les serveurs Web exposés en DMZ. Ces compétences sont également au programme de la certification CCNA Security de Cisco.