I – Contexte :
II – Configuration IP des postes :
Serveur WEB | Serveur 2012 | Client Windows 7 |
IP : 192.168.2.150
Passerelle : 192.168.2.254 DNS : 12.168.1.150 |
IP : 192.168.1.150
Passerelle : 192.168.1.254 DNS : 192.168.1.150 Nom DNS : office.local |
IP : 192.168.1.X (DHCP)
Passerelle : 192.168.1.254 DNS : 192.168.1.150 |
III – Objectifs :
On va tout d’abord paramétrer la DMZ pour filtrer les trames qui entre et qui sortent dans les différents réseaux (WEB et LAN)
On va donc dresser un tableau de filtrage qui représente les autorisations de la DMZ :
(Les chiffres représentés sont ceux du contexte) ; « » signifie « parle à »
Dialogue autorisé | Dialogue interdit |
1 2
1 3 1 4 2 3 3 2 4 1 4 2 4 3 |
2 1
3 1 2 4 3 4 |
IV – Pourquoi effectuer un filtrage sur la zone DMZ ?
Le filtrage va nous servir à protéger le serveur Web des intrusions tout en le rendant accessible pour ses fonctions principales (Visionner le contenu de la page HTML du serveur, accès à la base de données).
V – Configuration du filtrage:
Tout d’abord il faut vérifier la situation initiale, pour ce faire il faut réalise un ping vers l’extérieur et dans le réseau local. Si les deux répondent c’est que la configuration est correcte.
Les commandes à réaliser dans le terminal :
ping free.fr ping 192.168.1.150
Etape 1 – Supprimer tout filtrage existant sur notre routeur Debian :
Pourquoi ? Pour partir sur une base saine ou l’on pourra tout choisir a notre guise.
iptables -F
Test : pour tester les modifications il va falloir afficher le contenu de la table, si cette dernière est vide, la commande a réussi.
iptables -L
Etape 2 – Mettre en place la politique par défaut qui consiste à tout bloquer sauf sorties du routeur URANUS.
On bloque toutes trames traversant le routeur:
iptables -P FORWARD DROP
On bloque toutes trames entrant dans le routeur:
iptables -P INPUT DROP
On accepte les trames sortant du routeur:
iptables -P OUTPUT ACCEPT
Test : réaliser un ping vers l’extérieur et dans le réseau local. Si les deux ne répondent pas c’est que la politique par défaut a bien été appliquée.
ping free.fr ping 192.168.1.150
Etape 3 – Autoriser le Trafic établi
Le trafic établi est la réponse aux trames déjà existantes, il est important de l’autoriser.
Accepter les trames établies pour toutes trames traversant, entrant ou sortant du routeur :
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
Etape 4 – Nouvelle règle : le LAN parle vers la DMZ et le LAN parle vers le WAN
L’objectif est d’autoriser toutes les trames sortant du LAN afin qu’elles puissent communiquer avec toutes les zones de notre situation initiale.
Accepter les trames traversant le routeur en provenance d’eth0 (LAN) :
iptables -A FORWARD -i eth0 -j ACCEPT
Test :
Réaliser un ping sur le poste client Windows 7 en direction d’internet et de la DMZ, ceux-là doivent fonctionner.
ping free.fr ping 192.168.1.150
Etape 5 – Règle : le LAN parle au routeur
Le but est d’autoriser le dialogue avec le routeur. (ex : administration du routeur)
Accepter les trames en entrée du LAN vers le routeur :
iptables -A INPUT -i eth0 -j ACCEPT
Test: réaliser un un ping vers le routeur URANUS depuis le poste client Windows 7, ce dernier doit répondre à votre ping.
ping 192.168.1.254
Etape 6 – Règle : la DMZ parle vers le WAN
Quand le serveur web aura besoin d’aller sur internet il pourra envoyer des paquets sur ce dernier, ce qui n’était pas possible auparavant.
Accepter les trames en sortie du DMZ en direction du WAN (internet) :
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
Test : Réaliser un ping vers internet depuis le serveur web dans la DMZ.
ping free.fr
Etape 7 – Règle : Autoriser les trames du WAN vers le Serveur WEB
Quand le serveur web envoie des paquets il faut que le destinataire lui réponde, c’est pour cela qu’il est important que ce paramètre soit ajouté au script.
Autoriser les trames traversant du WAN vers la DMZ ayant comme port 80 pour aller en direction du serveur web :
iptables -A FORWARD -i eth1 -o eth2 -d 192.168.2.150 -p tcp --dport 80 -j ACCEPT
Etape 8 – Règle : Autoriser l’accès au serveur DNS depuis le serveur WEB
Cela permettra au serveur web de pouvoir bénéficier de la résolution de noms proposée par le serveur 2012.
Filtrer et accepter toutes les trames traversant de la DMZ vers le LAN ayant comme port 53 via le protocole UDP ayant pour destination le serveur 2012 pour une résolution de nom (DNS) :
iptables -t filter -A FORWARD -i eth2 -o eth0 -d 192.168.1.150 -p udp --dport 53 -j ACCEPT
Ensuite il faut bien sûr ajouter le serveur DNS dans la configuration IP de votre poste Debian (Voir documentation : configuration IP d’un poste Debian)
Une fois que tout cela est fait il faut savoir si le serveur DNS a bien accroché à votre serveur web.
nslookup # écran va afficher via quel serveur Debian passe. Dans mon cas il s’agit d’office.local (nom du serveur 2012)
Etape 9 – Règle : Autoriser l’accès en consultation au serveur web depuis l’extérieur
Cela consiste à rediriger les trames adressées à l’IP publique du réseau vers le serveur web. Cela permettra à l’avenir d’avoir accès à la page web du serveur web depuis l’extérieur.
Accorder l’adresse IP publique du routeur Uranus pour un accès externe à la page publique du serveur WEB. L’accès se fera comme cela (http://XX.XX.XX.XX:80) :
iptables –t nat –A PREROUTING –i eth1 –p tcp --dport 80 –j DNAT --to-destination 192.168.2.150
Test : se rendre sur une machine à l’extérieur du groupement de réseau et entrer dans la barre d’adresse l’adresse IP de la broche eth1 (comprendre adresse IP publique). Et vous devriez voir la page par défaut de votre serveur web (apache /var/www/index.html).
It works!This is the default web page for this server. The web server software is running but no content has been added, yet. |
VI – Sauvegarder la configuration d’iptables :
Toutes les lignes que nous avons rentré dans la partie V sont éphémères, c’est-à-dire qu’après un redémarrage de votre routeur Debian elles ne prennent plus effet, il est donc préférable de sauvegarder la configuration d’iptables grâce au paquet iptables-persistent
apt install iptables-persistent
Il suffit d’enregistrer les règles IPv4 dynamique :
BONUS – Création du fichier script de filtrage
Etape 1 – Création du fichier et du dossier
Créer un dossier « scripts » :
mkdir /root/scripts
Création du fichier « script_filtrage » :
nano /root/scripts/scripts_filtrage
Etape 2 – rendre le fichier note en un script
Sur Windows la création d’un script se passe par le biais de la surcouche « bloc-notes » et après on le sauvegarde au format « .bat ». Sur linux c’est formellement la même chose sauf que bloc-notes se surnomme « nano » nous sommes à l’intérieur à présent, il suffit d’y ajouter une première ligne qui définira le type de fichier, dans notre cas nous voulons un script (donc il s’agit d’un « .sh »).
A insérer au début du script :
# !/bin/sh
Etape 3 – insertion de lignes présentées dans la partie V
(PS : les « # » représentent les lignes de commentaires, elles ne sont pas obligatoires mais vous aide à comprendre votre script)
# !/bin/sh # supprimer le filtrage iptables -F # politique par defaut: on bloque tout sauf output iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT # trafic etabli autorise iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT # le LAN parle vers la DMZ et le LAN parle vers le WAN iptables -A FORWARD -i eth0 -j ACCEPT # le LAN parle au routeur iptables -A INPUT -i eth0 -j ACCEPT # la DMZ parle vers le WAN iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT # redirection ip-pub/serveur web iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.150 # autorise les trames rediriges du WAN vers le serveur web iptables -A FORWARD -i eth1 -o eth2 -d 192.168.2.150 -p tcp --dport 80 -j ACCEPT # Acces au DNS depuis le serveur WEB iptables –t filter –A FORWARD –i eth2 –o eth0 –d 192.168.1.150 –p udp --dport 53 –j ACCEPT
Il est entièrement possible d’appeler ce script au démarrage du poste par exemple.
Cet article totalise 4 458 vues 👍 Merci pour votre visite! 🙂
2 commentaires
Seurre · 28 octobre 2020 à 15h06
Un site très intéressant ! Utilisé pour la mise en place d’un routeur Debian avec redirection NAT. et pour la prise de connaissance sur l’installation d’une DMZ debian
Alex BACHER · 29 octobre 2020 à 0h51
Bonjour, merci pour votre retour sur mon article ! 🙂