Zone démilitarisée (DMZ)
En informatique, une zone démilitarisée, ou DMZ est un sous-réseau séparé du réseau local et isolé de celui-ci et 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.
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 firewall. 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.
Architecutre
/image%2F3625927%2F20210415%2Fob_b75733_1.png)
Explication de l’architecture
Cette architecture est assez éloquente pour être expliquée en détails. Néanmoins, voici donc ses fondamentaux :
Sur notre architecture, le Firewall est relié à trois réseaux : DMZ, le LAN et INTERNET.
- L’interface enp0s9 est celle qui est connectée à internet avec l’adresse réseau 192.168.0.0/16
- L’interface enp0s3 qui est connectée au LAN dont l’adresse réseau est 172.16.0.0/16. Ce pendant, la passerelle de toutes les machines du LAN est 172.16.0.254/16
- L’interface enp0s8 connectée à la DMZ dont l’adresse réseau est 169.10.0.0/16 . Elle est donc la passerelle des serveurs WEB et Asterisk de la DMZ. Son adresse est 168.18.0.254/16
Présentation des règles qui doivent être fixées sur le firewall
Le réseau (LAN) contient les machines du réseau local, pour leur sécurité, le firewall
- Les connexions depuis internet vers le LAN sont interdites
- Les connexions depuis la DMZ vers le LAN sont interdites
- Les connexions depuis le LAN vers la DMZ sont autorisées
- Les connexions depuis le LAN vers internet sont autorisées
- Les connexions depuis internet vers la DMZ sont autorisées
- Les connexions depuis la DMZ vers internet sont autorisées
Une machine sur INTERNET doit pouvoir accéder aux bastions se trouvant dans la DMZ. Pour des raisons de sécurité, on ne souhaite pas que la machine sur INTERNET accède directement aux différents serveurs, avec son adresse IP.
Pour cela, il faut mettre en place un ré-routage de ports ou port forwarding pour que toute connexion arrivant sur l'interface externe du Parefeu (firewall), soit redirigée vers le port standard ou défini du serveur concerné (dans la DMZ) par la requête.
Dans le sens (DMZ) vers (INTERNET) et (LAN) vers (DMZ), une translation d'adresses est nécessaire et sera réalisée !
Mise en oeuvre
- Config IP du parefeu
/image%2F3625927%2F20210422%2Fob_ea9e31_1.png)
Comme sur l’architecture, l’interface enp0s9 est celle directement connectée au réseau publique, et nous avons décidé de lui fournir des élément TCP/IP en mode DHCP et elle a une adresse IP 192.168.6.185 /16
Récap
- enp0s3 qui a 172.16.0.254 /16 qui est directement connecté au LAN
- enp0s8 qui a 169.18.0.254 /16 qui est directement connecté à la DMZ
- enp0s9 qui a 192.168.6.185/16 qui est directement connecté au réseau publique (internet)
Voici les détails
/image%2F3625927%2F20210422%2Fob_162a1c_2.png)
Activation du routage
Rendez-vous dans /etc/sysctl.conf pour faire ceci:
/image%2F3625927%2F20210422%2Fob_883180_3.png)
Ensuite ceci:
/image%2F3625927%2F20210422%2Fob_6cc0ea_4.png)
Étape suivante : Config IP des autres machines
Dans cette partie, la vigilance est de mise. Il faut pour chaque machine fixer sa passerelle par défaut. Donc la notion de passerelle est primordiale !
Après les différentes config IP, les machines du LAN et celles de la DMZ pourront naturellement communiquer. Preuve :
/image%2F3625927%2F20210422%2Fob_b775ab_24.png)
Mise en place des règles de filtrage et de translation d’adresses
Du NAT pour la DMZ
Puisque les machines de la DMZ doivent accéder à internet pour pouvoir télécharger des paquets afin de mettre en place leurs services, nous allons donc faire NAT sur le firewall comme suit :
# iptables -t nat -A POSTROUTING -s 169.18.0.0/16 -o enp0s9 -j MASQUERADE
En claire :
/image%2F3625927%2F20210422%2Fob_b9dd92_5.png)
Après cette commande sur le firewall, les machines de la DMZ ont accès à internet !
Sur le serveur WEB, on a déjà installé apache2 et ses ingrédients, nous avons ensuite héberger notre site dans un dossier du nom de dmz, Voici d'ailleurs son contenu
/image%2F3625927%2F20210422%2Fob_4e7927_6.png)
Pour des mesures de sécurité, nous allons changer le port d'écoute de notre serveur Web. On lui fait écouter sur le 8080 au lieu de 80.
- Dans /etc/apache2/ports.conf
/image%2F3625927%2F20210422%2Fob_dffbc4_7.png)
- Dans /etc/apache2/sites-enabled/000-default.conf
/image%2F3625927%2F20210422%2Fob_bfecbf_8.png)
# /etc/init.d/apache2 restart
Est-ce que le serveur Web écoute réellement sur le port auquel nous l'avons imposé ?
/image%2F3625927%2F20210422%2Fob_21075c_10.png)
C'est claire !
Règles de filtrage et de redirection
Naturellement, ces règles sont à appliquer sur le parefeu
- Redirection de toutes les connexions HTTP provenant du LAN vers le serveur Web de la DMZ
On appelle cela du forwarding
# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 80 -j DNAT --to-destination 169.18.0.2:8080
En claire :
/image%2F3625927%2F20210422%2Fob_3aa4bd_11.png)
Pas besoin de commentaires !
Test de bon fonctionnement
Depuis un navigateur du LAN, tentons d’accéder au serveur. Il faudra juste saisir l’adresse IP de la passerelle du LAN
Résultat
/image%2F3625927%2F20210422%2Fob_d75135_12.png)
ça marche comme sur des roulettes
- Interdiction des connexions depuis la DMZ vers le LAN
Voici la règle qui gère cette partie
/image%2F3625927%2F20210422%2Fob_54a229_13.png)
Test de bon fonctionnement
Depuis le serveur Web de la DMZ, tentons de joindre une machine du LAN
/image%2F3625927%2F20210422%2Fob_de9fea_14.png)
Voilà ! Les connexions depuis la DMZ vers le LAN sont interdites. C'est de la sécurité à l'état pur !
- Accessibilité du service Web depuis internet
Puisque les machines du LAN ne sont pas directement accessibles depuis le réseau publique, c’est pourquoi c’est l’interface externe du firewall qui va recevoir les requêtes pour les rediriger vers le serveur adéquat.
Pour mettre cette option en place, nous allons faire du port forwarding (redirection de ports). Celà consiste à rediriger toutes les connexions web reçues sur l’interface externe du firewall (enp0s9) vers la machine 169.18.0.2 (le serveur Web dans la DMZ).
Voici la règle qui s'occupe de ça :
# iptables -t nat -A PREROUTING -i enp0s9 -p tcp --dport 80 -j DNAT --to-destination 169.18.0.2:8080
Facilitons les choses ...
Sur le serveur WEB, on se rend dans le dossier /etc/apache2/sites-available et créer un fichier que je nomme dmz.conf pour y mettre ceci :
<VirtualHost 169.18.0.2>
ServerAdmin admin@localhost
DocumentRoot /var/www/html/dmz
DirectoryIndex index.html
</VirtualHost>
- Activer le site virtuel
# a2ensite dmz.conf
- Recharger le serveur
# /etc/init.d/apache2 reload
Test de bon fonctionnement
Sur une machine du réseau publique, on a qu’a saisir l’adresse IP de l’interface externe du firewall pour accéder au site héberger sur le serveur Web dans la DMZ. 😉
/image%2F3625927%2F20210422%2Fob_34b94f_16.png)
- Autorisation d'accès à internet aux machines du LAN
La règle suivante pourrait s'occuper de ça :
# iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o enp0s9 -j MASQUERADE
Preuve :
/image%2F3625927%2F20210426%2Fob_76d087_00.png)
Accès libre à internet !
Remarque: Les machines depuis l'extérieur ne pourront pas accéder au machines du LAN, parce que tout simplement nous n'avons pas fait du NAT dans ce sens. Le principe même de la DMZ nous interdit de le faire !
- Redirection des requêtes du port 5060 (la téléphonie) sur son serveur adéquat
Dans cette partie, nous allons mettre en place un serveur de téléphonie Asterisk sur la machine 169.18.0.1.(Censée être le serveur de téléphonie). Tous les paquets sont déjà installés, puisqu’elle a accès à internet !
Config basique du serveur de téléphonie
- On crée deux comptes dans /etc/asterisk/sip.conf
/image%2F3625927%2F20210422%2Fob_6e6096_17.png)
- On définie le plan de numérotation dans /etc/asterisk/extensions.conf
/image%2F3625927%2F20210422%2Fob_25b6bd_18.png)
Après avoir redémarrer le serveur de téléphonie, il faut maintenant faire la redirection de ports sur le firewall
- Configuration sur le firewall
Rediriger toutes les connexions udp du port 5060 arrivant sur l’interface enp0s9 vers la machine 169.18.0.1 sur le même port.
Voici la règle qui gère cela :
# iptables -t nat -A PREROUTING -i enp0s9 -p udp --dport 5060 -j DNAT --to-destination 169.18.0.1:5060
En claire :
/image%2F3625927%2F20210422%2Fob_5f2e9e_19.png)
Test de bon fonctionnement
- Connexion du compte 1000
/image%2F3625927%2F20210422%2Fob_f49a91_20.png)
- Connexion du compte 1001
/image%2F3625927%2F20210422%2Fob_4a1577_21.png)
- Communication entre les deux clients
/image%2F3625927%2F20210422%2Fob_507898_22.png)
- Réaction du serveur
/image%2F3625927%2F20210422%2Fob_8788bb_23.png)
Comme nous l’avons constaté, les connexions arrivent sur l’interface externe du firewall qui sont ensuite redirigées vers le serveur adéquat. C’est ça le port forwarding.
Le principe de la DMZ se résume à ceci : Accéder aux serveurs de l'entreprise depuis l'extérieur tout en gardant les données sensibles de celle-ci à l'abris des "bandits digitaux" !