Mémento 10.11 - DNS Split-Brain
Rappel, 2 entités distinctes coexistent sur le réseau :
- Domaine loupvirtuel.fr en zone interne publique.
- Sous-domaine intra.loupipfire.fr en zone interne privée.
Le domaine n'est actuellement pas joignable depuis Internet et le sous-domaine n'est pas compatible avec le domaine.
Pour le fun, vous allez créer un DNS split qui permettra de joindre le domaine depuis Internet ou la zone interne et une délégation de zone qui déclarera la gestion d'un sous-domaine compatible tel intra.loupvirtuel.fr.
2 serveurs DNS dont 1 à créer seront utilisés :
- 1 sur srvdmz pour le domaine loupvirtuel.fr (création).
- 1 sur srvlan pour le sous-domaine intra.loupvirtuel.fr.
Vous finirez en mettant en place un proxy inverse qui permettra de joindre le site Web du sous-domaine depuis Internet.
1 - Préambule
1.1 - Rôle du DNS split
Fournir une IP publique aux requêtes DNS provenant de la zone Internet et une IP locale aux requêtes provenant des zones internes DMZ/LAN.
Cela évitera notamment de dévoiler au monde extérieur l'IP interne du domaine loupvirtuel.fr.
1.2 - Rôle de la délégation de zone
Déléguer la gestion du sous-domaine intra.louvirtuel.fr au serveur DNS de la zone LAN qui sera notamment, pour les noms d'hôtes des VM de la zone LAN, chargé de répondre aux requêtes DNS issues de la zone DMZ.
1.3 - Rôle du proxy inverse
Permettre à un utilisateur d'Internet d'accéder au serveur interne de la zone LAN. Placé en zone DMZ, il agira également comme une barrière de protection.
2 - Mise en place du service DNS sur srvdmz
2.1 - Installation d'un serveur Bind
Commencez par mettre à jour la distribution Debian :
[srvdmz@srvdmz:~$] sudo apt update [srvdmz@srvdmz:~$] sudo apt upgrade [srvdmz@srvdmz:~$] sudo reboot
et installez le même serveur DNS que sur srvlan :
[srvdmz@srvdmz:~$] sudo apt install bind9
Le démon bind9 démarre automatiquement.
- La configuration de base a été créée dans /etc/bind/.
- Les fichiers de zone le seront dans /var/lib/bind/.
La synchronisation horaire normalement assurée par le service systemd-timesyncd de Debian est désactivée automatiquement au profit de celle assurée par le service vboxadd-service de VirtualBox.
Si vous n'utilisez pas VirtualBox, vérifiez ce service :
[srvdmz@srvdmz:~$] sudo systemctl status systemd-timesyncd
Celui-ci doit montrer un serveur x.debian.pool.ntp.org.
2.2 - Création ACL, vues/zones de recherche
Les Access Control List faciliteront l'écriture/lecture de la configuration en proposant de changer les définitions de réseaux IP filtrés par des alias plus explicites.
Les vues internes et externes contiendront pour chacune d'elles les définitions de leurs propres zones de recherche et fichiers de zone associés ainsi que celles des zones en délégation.
Les zones de recherche directe permettront de renvoyer une adresse IP associée à un nom alors que les zones de recherche inverse renverront un nom associé à une adresse IP.
Au préalable, éditez le fichier named.conf :
[srvdmz@srvdmz:~$] sudo nano /etc/bind/named.conf
et commentez l'inclusion des zones par défaut :
#include "/etc/bind/named.conf.default-zones";
Editez ensuite le fichier named.conf.local :
[srvdmz@srvdmz:~$] sudo nano /etc/bind/named.conf.local
et créez les ACL, vues, zones de recherche et délégations en ajoutant ceci en fin de celui-ci :
# Listes de contrôle d'accès pour les zones internes/externes
acl interne { 192.168.2.0/24; 192.168.4.0/24; };
acl externe { any; };
# Définition vue interne, zones loupvirtuel.fr/intra.loupvirtuel.fr
view "interne" {
match-clients { interne; };
# zone de recherche directe loupvirtuel.fr
zone "loupvirtuel.fr" IN {
type master;
file "/var/lib/bind/db.loupvirtuel.fr.directe";
allow-update { none; };
};
# zone de recherche inverse loupvirtuel.fr
zone "4.168.192.in-addr.arpa" IN {
type master;
file "/var/lib/bind/db.loupvirtuel.fr.inverse";
allow-update { none; };
};
# zone de recherche directe sous-domaine intra.loupvirtuel.fr
# Zone déléguée au serveur DNS srvlan
zone "intra.loupvirtuel.fr" IN {
type forward;
forward only;
forwarders { 192.168.3.1; };
};
# zone de recherche inverse sous-domaine intra.loupvirtuel.fr
# Zone déléguée au serveur DNS srvlan
zone "3.168.192.in-addr.arpa" IN {
type forward;
forward only;
forwarders { 192.168.3.1; };
};
# Réinsertion des zones par défaut fournies par bind9
include "/etc/bind/named.conf.default-zones";
};
# Définition vue externe, zone Internet > zone loupvirtuel.fr
view "externe" {
match-clients { externe; };
# zone de recherche directe loupvirtuel.fr
zone "loupvirtuel.fr" IN {
type master;
file "/var/lib/bind/db.loupvirtuel.fr.directe.externe";
allow-update { none; };
};
};
2.3 - Création des fichiers de zone vue interne
Créez le fichier pour la zone directe :
[srvdmz@srvdmz:~$] cd /var/lib/bind [srvdmz@srvdmz:~$] sudo nano db.loupvirtuel.fr.directe
et insérez les lignes suivantes :
; DNS - Vue interne
; Résolution directe pour loupvirtuel.fr
$TTL 86400
@ IN SOA srvdmz.loupvirtuel.fr. root.loupvirtuel.fr. (
2022062101
1w
1d
4w
1w )
@ IN NS srvdmz.loupvirtuel.fr.
srvdmz IN A 192.168.4.2
@ IN A 192.168.4.2
www IN CNAME srvdmz
; Délégation de zone pour intra.loupvirtuel.fr
$ORIGIN intra.loupvirtuel.fr.
@ IN NS srvlan.intra.loupvirtuel.fr.
srvlan IN A 192.168.3.1
2022062101 = créé le 21/06/2022 + index de départ 01
Le fichier contient les enregistrements permettant d'accéder à la zone loupvirtuel.fr ainsi qu'une déclaration de délégation de zone pour l'accès au sous-domaine intra.loupvirtuel.fr.
Créez maintenant le fichier pour la zone inverse :
[srvdmz@srvdmz:~$] cd /var/lib/bind [srvdmz@srvdmz:~$] sudo nano db.loupvirtuel.fr.inverse
et insérez les lignes suivantes :
; DNS - Vue interne
; Résolution inverse pour loupvirtuel.fr
$TTL 86400
@ IN SOA srvdmz.loupvirtuel.fr. root.loupvirtuel.fr. (
2022062101
1w
1d
4w
1w )
@ IN NS srvdmz.loupvirtuel.fr.
2 IN PTR srvdmz.loupvirtuel.fr.
2.4 - Création du fichier de zone vue externe
Effectuez une copie du fichier db.loupvirtuel.fr.directe :
[srvdmz@srvdmz:~$] cd /var/lib/bind [srvdmz@srvdmz:~$] sudo cp *directe db.loupvirtuel.fr.directe.externe
et modifiez la copie avec l'éditeur nano comme suit :
; DNS - Vue externe
; Résolution directe pour loupvirtuel.fr
$TTL 86400
@ IN SOA srvdmz.loupvirtuel.fr. root.loupvirtuel.fr. (
2022062101
1w
1d
4w
1w )
@ IN NS srvdmz.loupvirtuel.fr.
srvdmz IN A 192.168.x.w
@ IN A 192.168.x.w
www IN CNAME srvdmz
Remplacez 192.168.x.w par l'IP de la carte RED IPFire.
N'oubliez pas de supprimer la partie zone déléguée.
2.5 - Réglage des permissions sur les fichiers
Attachez les 3 fichiers de zone créés au groupe bind :
[srvdmz@srvdmz:~$] sudo chgrp bind /var/lib/bind/*loupvirtuel*
Le démon bind9 pourra ainsi accéder à leur contenu.
Modifiez si besoin leurs permissions à la valeur 644 :
[srvdmz@srvdmz:~$] sudo chmod 644 /var/lib/bind/*loupvirtuel*
6 = Lecture/Ecriture pour le propriétaire root.
4 = Lecture pour le groupe bind.
4 = Lecture pour les autres utilisateurs.
2.6 - Réglage des fichiers hosts et resolv.conf
Avant, relancez bind9 pour traiter les fichiers ci-dessus :
[srvdmz@srvdmz:~$] sudo systemctl restart bind9 [srvdmz@srvdmz:~$] sudo systemctl status bind9
Editez ensuite le fichier DNS de nom hosts :
[srvdmz@srvdmz:~$] sudo cat /etc/hosts
et vérifiez qu'il contient bien le FQDN de srvdmz :
192.168.4.2 srvdmz.loupvirtuel.fr srvdmz loupvirtuel.fr
Corrigez ou ajoutez la ligne si nécessaire.
Videz le contenu du fichier DNS /etc/resolv.conf puis désactivez son remplissage auto par le service de NetworkManager comme suit :
[srvdmz@srvdmz:~$] cd /etc/NetworkManager/conf.d [srvdmz@srvdmz:~$] sudo nano 90-dns-none.conf
Entrez les 2 lignes ci-dessous :
[main]
dns=none
et relancez les services NetworkManager et bind9 :
[srvdmz@srvdmz:~$] sudo systemctl reload NetworkManager [srvdmz@srvdmz:~$] sudo systemctl restart NetworkManager [srvdmz@srvdmz:~$] sudo systemctl status NetworkManager [srvdmz@srvdmz:~$] sudo systemctl restart bind9 [srvdmz@srvdmz:~$] sudo systemctl status bind9
Vérifiez que le fichier resolv.conf est bien toujours vide :
[srvdmz@srvdmz:~$] sudo nano /etc/resolv.conf
et si OK, entrez les lignes suivantes :
# Fichier resolv.conf - Client DNS
# Nom du domaine local
domain loupvirtuel.fr
# Ajout automatique du nom de domaine aux hôtes
# non pleinement qualifiés
search loupvirtuel.fr
search intra.loupvirtuel.fr
# Adresses IP du ou des serveurs DNS à interroger
nameserver 192.168.4.2
2.7 - Réglage de la résolution DNS externe
Comme dans le mémento 7.11, vous allez faire en sorte que les demandes de résolution externe (Ex : ping www.yahoo.fr) soient traitées par le serveur DNS de la box Internet.
Editez pour cela le fichier named.conf.options :
[srvdmz@srvdmz:~$] cd /etc/bind [srvdmz@srvdmz:~$] sudo nano named.conf.options
et modifiez celui-ci afin qu'il contienne ces lignes :
options {
directory "/var/cache/bind";
# Pas d'utilisation du protocole DNSSEC
dnssec-validation no;
# Si réponse locale impossible, envoi des requêtes DNS
# vers la box Internet.
forward only;
forwarders { 192.168.x.z; };
auth-nxdomain no;
listen-on-v6 { any; };
};
Remplacez 192.168.x.z par l'IP de votre box Internet.
2.8 - Sécurisation des services fournis par Bind
Editez de nouveau le fichier named.conf.options :
[srvdmz@srvdmz:~$] sudo nano named.conf.options
et ajoutez ce qui suit au dessus de # Pas d'utilis... :
allow-recursion { 192.168.4.0/24;192.168.2.0/24; };
allow-query { any; };
allow-query-cache { 192.168.4.0/24;192.168.2.0/24; };
minimal-responses no;
# Pas d'utilisation du protocole DNSSEC # ligne déjà existante
- Récursivité limitée aux réseaux indiqués.
- Interrogation du DNS autorisée pour tous les réseaux.
- Accès au cache DNS limités aux réseaux indiqués.
- Réponses retournées complètes aux requêtes DNS .
La récursivité, par sécurité, est refusée pour les requêtes DNS provenant d'Internet.
2.9 - Sécurisation des liaisons DNS avec TSIG
La Transaction Signature sécurisera la liaison entre les serveurs DNS de srvdmz et srvlan.
Commencez par créer la clé secrète de TSIG :
[srvdmz@srvdmz:~$] cd /etc/bind [srvdmz@srvdmz:~$] su root [root@srvdmz:~$] sudo tsig-keygen -a HMAC-SHA256 tsig.key > tsig-dns-split.key [root@srvdmz:~$] chown bind:bind tsig-dns-split.key [root@srvdmz:~$] chmod 640 tsig-dns-split.key [root@srvdmz:~$] exit
La Cde tsig-keygen est fournie avec le paquet bind9.
Affichez le contenu de la clé tsig-dns-split.key :
[srvdmz@srvdmz:~$] sudo cat tsig-dns-split.key
Retour :
key "tsig.key" {
algorithm hmac-sha256;
secret "jXfcB8I4v9zVrhZADPcrICdunwzYcmtDo74+iS1DlJo=";
};
Notez la valeur de la clé pour l'utiliser ci-dessous.
Editez, pour déclarer l'usage de la clé, named.conf.local :
[srvdmz@srvdmz:~$] sudo nano /etc/bind/named.conf.local
et ajoutez ce contenu en fin de fichier :
# Déclaration de la clé TSIG et de son algorithme de chiffrage
key tsig-dns-split.key.
{
algorithm hmac-sha256;
secret "jXfcB8I4v9zVrhZADPcrICdunwzYcmtDo74+iS1DlJo=";
};
# IP du serveur DNS en délégation pour intra.loupvirtuel.fr
server 192.168.3.1
{
keys { tsig-dns-split.key; };
};
Nota : Ne pas oublier le point en fin de 2ème ligne.
Redémarrez le serveur DNS :
[srvdmz@srvdmz:~$] sudo systemctl restart bind9 [srvdmz@srvdmz:~$] sudo systemctl status bind9
Retour à observer :
● named.service - BIND Domain Name Server
Loaded: loaded (/lib/sys...named.service; ena...)
Active: active (running) since Thu 2022-06-23 ...
Docs: man:named(8)
Main PID: 6154 (named)
Tasks: 6 (limit: 1116)
Memory: 13.5M
CPU: 102ms
CGroup: /system.slice/named.service
└─6154 /usr/sbin/named -f -u bind
juin.. managed-keys-zone/externe: loaded serial 5
juin.. zone 0.in-addr../IN/interne: load.. 1
juin.. zone 127.in-addr../IN/interne: load.. 1
juin.. zone 255.in-addr../IN/interne: load.. 1
juin.. zone loupvirtuel.fr/IN/in.. load.. 2022062101
juin.. zone 4.168.192.in-addr.../IN/interne: load..
juin.. zone localhost/IN/interne: loaded serial 2
juin.. zone loupvirtuel.fr/IN/ex.. load.. 2022062101
juin.. all zones loaded
juin.. running
Si tout est OK, arrêtez la VM :
[srvdmz@srvdmz:~$] sudo poweroff
3 - Modification du pare-feu IPFire
La suite du mémento impose l'ajout de nouvelles règles.
Accédez à l'interface Web d'IPFire depuis srvlan, puis :
Menu IPFire -> Pakfire
Effectuez la mise à jour du système si nécessaire.
Ensuite :
Menu Pare-feu -> Options de pare-feu
-> Section Paramètres pare-feu
-> Afficher tous les réseaux sur le site de … règles
-> Cochez on
-> Bouton Sauvegarder
Menu Système -> Arrêter -> Redémarrer
Menu Pare-feu -> Groupes de pare-feu
-> Bouton Hôtes -> Ajouter un hôte
-> Nom : srvdmz -> IP/MAC : 192.168.4.2
-> Remarque : Serveur en zone orange
-> Bouton Sauvegarder
-> Nom : srvlan -> IP/MAC : 192.168.3.1
-> Remarque : Serveur en zone verte
-> Bouton Sauvegarder -> Bouton Retour
Menu Pare-feu -> Règles de pare-feu
-> Bouton Nouvelle règle
a ) Ouverture du port HTTPS 443, Internet vers srvdmz :
Nécessaire pour accéder à loupvirtuel.fr depuis Internet.
Paramétrage :
- Source -> Cochez Réseaux standards -> ROUGE
- NAT -> Cochez Utiliser la trad... adresses réseau (NAT)
- Destination -> Cochez Adresse IP de ... -> 192.168.4.2
- Protocole -> Sélectionnez TCP -> Port de dest... -> 443
- Paramètres additionnels -> Remarque
-> Entrez HTTPS vers serveur Web zone orange autorisé
-> Bouton Ajouter -> Bouton Appliquer les changements
Recommencez comme ci-dessus pour le port HTTP 80. Cela permettra de vérifier la redirection de port vers HTTPS pour les URL http://www.loupvirtuel.fr et http://loupvirtuel.fr.
b ) Ouverture du port DNS 53, srvdmz vers srvlan :
Indispensable pour le dialogue DNS entre les 2 serveurs mais représentant un petit trou de sécurité (pinhole IPFire) sachant que les demandes de liaison de la zone orange vers la verte sont normalement toutes bloquées.
Paramétrage :
- Source -> Cochez Hôtes -> srvdmz
- NAT -> Cochez Utiliser la trad... adresses réseau (NAT)
- Destination -> Cochez Hôtes -> srvlan
- Protocole -> Sélectionnez TCP -> Port de dest... -> 53
- Paramètres additionnels -> Remarque
-> Entrez DNS port TCP srvdmz vers srvlan autorisé
-> Bouton Ajouter -> Bouton Appliquer les changements
Recommencez comme ci-dessus pour le protocole UDP car le dialogue DNS se fait en priorité via ce protocole.
c ) Ouverture du port DNS 53, Internet vers srvdmz :
Permettra d'interroger le serveur DNS depuis Internet.
Paramétrage :
- Source -> Cochez Réseaux standards -> ROUGE
- NAT -> Cochez Utiliser la trad... adresses réseau (NAT)
- Destination -> Cochez Adresse IP de … -> 192.168.4.2
- Protocole -> Sélectionnez UDP -> Port de dest... -> 53
- Paramètres additionnels -> Remarque
-> Entrez DNS port UDP Internet vers srvdmz autorisé
-> Bouton Ajouter -> Bouton Appliquer les changements
d ) Ouverture du port HTTP 80, srvdmz vers srvlan :
Règle temporaire créée pour tester l'accès au serveur Web de srvlan depuis Internet ou srvdmz mais représentant un trou de sécurité entre la zone publique DMZ et la zone privée LAN.
Paramétrage :
- Source -> Cochez Hôtes -> srvdmz
- NAT -> Cochez Utiliser la trad... adresses réseau (NAT)
- Destination -> Cochez Hôtes -> srvlan
- Protocole -> Sélectionnez TCP -> Port de dest... -> 80
- Paramètres additionnels -> Remarque
-> Entrez HTTP vers serveur Web zone verte autorisé
-> Bouton Ajouter -> Bouton Appliquer les changements
4 - Modification du service DNS sur srvlan
4.1 - Création des zones de recherche intra...
Editez le fichier de configuration DNS named.conf.local :
[srvlan@srvlan:~$] sudo nano /etc/bind/named.conf.local
et modifiez les 2 zones de recherche comme suit :
# zone de recherche directe
zone "intra.loupvirtuel.fr" {
type master;
file "/var/lib/bind/db.intra.loupvirtuel.fr.directe";
allow-update { key "tsig.key"; };
};
# zone de recherche inverse
# Le réseau 192.168.3.0 aura pour adresse inverse
# 3.168.192.in-addr.arpa
zone "3.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/db.intra.loupvirtuel.fr.inverse";
allow-update { key "tsig.key"; };
};
4.2 - Création des fichiers de zone intra...
Créez le fichier pour la zone directe :
[srvlan@srvlan:~$] cd /var/lib/bind [srvlan@srvlan:~$] sudo nano db.intra.loupvirtuel.fr.directe
et insérez les lignes suivantes :
;
; Zone DNS intra.loupvirtuel.fr - Fichier de zone pour
; la résolution directe
;
$TTL 86400
@ IN SOA srvlan.intra.loupvirtuel.fr. root.intra.loupvirtuel.fr. (
1 ; Serial
604800 ; Refresh - 1w (1 semaine)
84600 ; Retry - 1d (1 jour)
2419200 ; Expire - 4w
604800 ) ; Negative Cache TTL - 1w
;
@ IN NS srvlan.intra.loupvirtuel.fr.
srvlan IN A 192.168.3.1
@ IN A 192.168.3.1
ovs IN A 192.168.3.15
www IN CNAME srvlan
Puis créez le fichier pour la zone inverse :
[srvlan@srvlan:~$] sudo nano db.intra.loupvirtuel.fr.inverse
et insérez les lignes suivantes :
;
; Zone DNS intra.loupvirtuel.fr - Fichier de zone pour
; la résolution inverse
;
$TTL 86400
@ IN SOA srvlan.intra.loupvirtuel.fr. root.intra.loupvirtuel.fr. (
1
1w
1d
4w
1w )
;
@ IN NS srvlan.intra.loupvirtuel.fr.
1 IN PTR srvlan.intra.loupvirtuel.fr.
15 IN PTR ovs.intra.loupvirtuel.fr.
4.3 - Réglage des permissions sur les fichiers
[srvlan@srvlan:~$] sudo chgrp bind /var/lib/bind/*loupvirtuel* [srvlan@srvlan:~$] sudo chmod 644 /var/lib/bind/*loupvirtuel*
4.4 - Réglage des fichiers hosts et resolv.conf
Editez le fichier DNS hosts :
[srvlan@srvlan:~$] sudo nano /etc/hosts
et modifiez son contenu comme suit :
127.0.0.1 localhost
127.0.1.1 srvlan
# IP de srvlan + FQDN + nom d'hôte + domaine
192.168.3.1 srvlan.intra.loupvirtuel.fr srvlan intra.loupvirtuel.fr
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Supprimez la ligne 192.168.4.2 loupvirtuel.fr, c'est le serveur DNS de srvdmz qui fournira dorénavant cette correspondance IP/Nom de domaine.
Videz le contenu du fichier DNS /etc/resolv.conf puis désactivez son remplissage auto par le service de NetworkManager comme suit :
[srvlan@srvlan:~$] cd /etc/NetworkManager/conf.d [srvlan@srvlan:~$] sudo nano 90-dns-none.conf
Entrez les 2 lignes ci-dessous :
[main]
dns=none
et relancez les services NetworkManager et bind9 :
[srvlan@srvlan:~$] sudo systemctl reload NetworkManager [srvlan@srvlan:~$] sudo systemctl restart NetworkManager [srvlan@srvlan:~$] sudo systemctl status NetworkManager [srvlan@srvlan:~$] sudo systemctl restart bind9 [srvlan@srvlan:~$] sudo systemctl status bind9
Vérifiez que le fichier resolv.conf est bien toujours vide :
[srvlan@srvlan:~$] sudo nano /etc/resolv.conf
et si OK entrez les lignes suivantes :
# Fichier resolv.conf - Client DNS
# Nom du domaine local
domain intra.loupvirtuel.fr
# Ajout automatique du nom de domaine aux hôtes
# non pleinement qualifiés
search intra.loupvirtuel.fr
# Adresses IP du ou des serveurs DNS à interroger
nameserver 192.168.3.1
4.5 - Modification des fichiers named.conf...
Editez le fichier named.conf.options :
[srvlan@srvlan:~$] sudo nano /etc/bind/named.conf.options
et modifiez la valeur de ces paramètres comme suit :
dnssec-validation no;
forwarders { 192.168.4.2; };
192.168.4.2 = IP du serveur DNS de srvdmz
Editez ensuite le fichier named.conf.local :
[srvlan@srvlan:~$] sudo nano /etc/bind/named.conf.local
et ajoutez à la fin les informations sur la clé TSIG :
# Déclaration de la clé TSIG à utiliser lors
# des transactions DNS entre srvdmz et srvlan
key tsig-dns-split.key.
{
algorithm hmac-sha256;
secret "jXfcB8I4v9zVrhZADPcrICdunwzYcmtDo74+iS1DlJo=";
};
# IP du serveur DNS srvdmz pour la zone "loupvirtuel.fr"
server 192.168.4.2
{
keys { tsig-dns-split.key; };
};
Editez le fichier de configuration DHCP dhcpd.conf :
[srvlan@srvlan:~$] sudo nano /etc/dhcp/dhcpd.conf
et remplacez tous les loupipfire par loupvirtuel.
Redémarrez ensuite le service et vérifiez son statut :
[srvlan@srvlan:~$] sudo systemctl restart isc-dhcp-server [srvlan@srvlan:~$] sudo systemctl status isc-dhcp-server
Purgez les Bdd contenant les baux générés par dhcpd :
[srvlan@srvlan:~$] cd /var/lib/dhcp
[srvlan@srvlan:~$] su root
[root@srvlan:~#] sudo rm dhcpd.leases~
[root@srvlan:~#] echo "" > dhcpd.leases
[root@srvlan:~#] exit
dhcpd.leases~ = Fichier de Bdd archive
dhcpd.leases = Fichier de Bdd exploité
Observez le contenu du cache DNS avant sa purge :
[srvlan@srvlan:~$] sudo rndc dumpdb -cache
La Cde ci-dessus crée dans /var/cache/bind/ un fichier de nom named_dump.db. Celui-ci renferme le contenu du cache DNS qui peut ainsi être édité pour lecture.
[srvlan@srvlan:~$] sudo cat /var/cache/bind/named_dump.db
Purgez maintenant le cache et relancez la même Cde :
[srvlan@srvlan:~$] sudo rndc flush [srvlan@srvlan:~$] sudo rndc dumpdb -cache
Puis éditez et observez le contenu du nouveau cache.
Pour terminer, redémarrez la VM srvlan :
[srvlan@srvlan:~$] sudo reboot
4.6 - Installation de Apache pour les tests
Au préalable, redémarrez srvdmz sinon srvlan ne sera pas en mesure de joindre le monde extérieur pour notamment installer un nouveau paquet Linux.
Ensuite, installez le paquet Apache :
[srvlan@srvlan:~$] sudo apt install apache2 [srvlan@srvlan:~$] sudo systemctl status apache2
Erreur : AH00558: apache2: Could not reliably determine the server's fully qualified domain name
Entrez ces Cdes pour régler le problème du FQDN :
[srvlan@srvlan:~$] sudo echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf [srvlan@srvlan:~$] sudo a2enconf fqdn [srvlan@srvlan:~$] sudo systemctl restart apache2 [srvlan@srvlan:~$] sudo systemctl status apache2
et depuis srvdmz, testez l'URL http://192.168.3.1.
Préparez la personnalisation de l'accueil du site Web :
[srvlan@srvlan:~$] cd /var/www/html [srvlan@srvlan:~$] sudo mv index.html index.html.origine [srvlan@srvlan:~$] sudo nano index.html
et remplissez le nouvel index.html avec ce contenu :
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body style="background-color:#D8E6E7">
<h1 style="color:#000000">
Accueil Intranet de l'entreprise Loup Virtuel
</h1>
<p style="font-size:30px;color:#6E7783">
Ici, des outils pour vous aider dans votre travail !
</p>
</body>
</html>
Pour finir, testez de nouveau l'URL http://192.168.3.1.
5 - Modifications sur les VM de la zone LAN
- VM ovs
Editez son fichier résolveur DNS resolv.conf :
[switch@ovs:~$] sudo nano /etc/resolv.conf
et remplacez tout le contenu par les lignes suivantes :
# Fichier resolv.conf - Client DNS
# Nom du domaine local
domain intra.loupvirtuel.fr
# Ajout automatique du nom de domaine aux hôtes
# non pleinement qualifiés
search intra.loupvirtuel.fr
# Adresses IP du ou des serveurs DNS à interroger
nameserver 192.168.3.1
Pour finir, redémarrez ovs et vérifiez la mise à jour automatique des fichiers DNS resolv.conf des conteneurs ctn1 et 2 (Réf. Mémento 5.21).
- VM debian11-vm*
Faites un clic droit sur l'applet réseau NetworkManager :
-> Modifier les connexions...
Une fenêtre Connexions réseau s'ouvre :
-> Sélectionnez la connexion affichée
-> Cliquez sur la roue dentée située en bas à gauche
Une fenêtre Modification de ... s'ouvre :
-> Onglet Paramètres IPv4
-> Domaines de recherche supplémentaires
-> Remplacez intra.loupipfire.fr par intra.loupvirtuel.fr
-> Bouton Enregistrer
Le paramètre search du fichier /etc/resolv.conf doit être mis à jour comme ceci :
[client-linux@debian11-vm*:~$] sudo systemctl restart NetworkManager [client-linux@debian11-vm*:~$] cat /etc/resolv.conf
Par curiosité, observez au bout de quelques minutes la bonne MAJ dynamique du fichier de zone DNS /var/lib/bind/db.intra.loupvirtuel.fr.directe situé sur srvlan :
6 - Contrôle de la configuration DNS split
6.1 - Côté srvdmz
a ) Vérifiez l'usage de TSIG entre srvdmz/srvlan :
[srvdmz@srvdmz:~$] sudo dig -y hmac-sha256:tsig-dns-split.key:jXfcB8I4v9zVrhZADPcrICdunwzYcmtDo74+iS1DlJo= @192.168.3.1 AXFR intra.loupvirtuel.fr
Retour :
; <<>> DiG .. <<>> -y hmac-sha25.. intra.virtuel.fr
; (1 server found)
;; global options: +cmd
intra.loupvirt.. 86400 IN SOA srvlan.intra.loup..
intra.loupvirt.. 86400 IN NS srvlan.intra.loup..
intra.loupvirt.. 86400 IN A 192.168.3.1
ctn1.intra.loupvirt.. 3600 IN TXT "318b3ddc97.."
ctn1.intra.loupvirt.. 3600 IN A 192.168.3.20
ctn2.intra.loupvirt.. 3600 IN TXT "31eefe30c9.."
ctn2.intra.loupvirt.. 3600 IN A 192.168.3.31
debian11-vm1.intra.. 3600 IN TXT "3164da5294a.."
debian11-vm1.intra.. 3600 IN A 192.168.3.32
debian11-vm2.intra.. 3600 IN TXT "316e74b10ff.."
debian11-vm2.intra.. 3600 IN A 192.168.3.33
ovs.intra.loupvirt.. 86400 IN A 192.168.3.15
srvlan.intra.loupv.. 86400 IN A 192.168.3.1
www.intra.loupvirt.. 86400 IN CNAME srvlan.intra.l..
intra.loupvirtuel.. 86400 IN SOA srvlan.intra.l..
tsig-dns-split.key. 0 ANY TSIG hmac... NOERROR 0
;; Query time: 4 msec
;; SERVER: 192.168.3.1#53(192.168.3.1)
;; WHEN: Tue Jun 28 16:06:47 CEST 2022
;; XFR size: 15 records (messages 1, bytes 624)
b ) Vérifiez le contenu du fichier named.conf :
[srvdmz@srvdmz:~$] sudo named-checkconf
Aucune erreur ne sera retournée si OK.
c ) Vérifiez la zone directe db.loupvirtuel.fr.directe :
[srvdmz@srvdmz:~$] cd /var/lib/bind [srvdmz@srvdmz:~$] sudo named-checkzone -d loupvirtuel.fr db.loupvirtuel.fr.directe
Retour :
loading "loupvirtuel.fr" from "..directe" class "IN"
zone loupvirtuel.fr/IN: loaded serial 2022062101
OK
d ) Vérifiez la zone inverse db.loupvirtuel.fr.inverse :
[srvdmz@srvdmz:~$] sudo named-checkzone -d 3.168.192.in-addr.arpa db.loupvirtuel.fr.inverse
Retour :
loa.. "3.168.192.in-add.." .. "..inverse" class "IN"
zone 3.168.192.in-add../IN: loaded serial 2022062101
OK
e ) Vérifiez le résultat des 2 Cdes suivantes :
[srvdmz@srvdmz:~$] host -v srvdmz.loupvirtuel.fr
Retour :
Trying "srvdmz.loupvirtuel.fr"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id..
;; flags: qr aa rd ra; ..RY: 1, ..ER: 1, ..TY: 1,..
;; QUESTION SECTION:
;srvdmz.loupvirtuel.fr. IN A
;; ANSWER SECTION:
srvdmz.loupvirtuel.fr. 86400 IN A 192.168.4.2
;; AUTHORITY SECTION:
loupvirtuel.fr. 86400 IN NS srvdmz.loupvir..
Received 69 bytes from 192.168.4.2#53 in 1 ms
Trying "srvdmz.loupvirtuel.fr"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id..
;; flags: ..; ..RY: 1, ..ER: 0, ..TY: 1, ..AL: 0
;; QUESTION SECTION:
;srvdmz.loupvirtuel.fr. IN AAAA
;; AUTHORITY SECTION:
loupvirtuel.fr. 86400 IN SOA srvdmz.loupvir..
Received 80 bytes from 192.168.4.2#53 in 1 ms
Trying "srvdmz.loupvirtuel.fr"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id..
;; flags: ..; ..RY: 1, ..ER: 0, ..TY: 1, ..AL: 0
;; QUESTION SECTION:
;srvdmz.loupvirtuel.fr. IN MX
;; AUTHORITY SECTION:
loupvirtuel.fr. 86400 IN SOA srvdmz.loupvir..
Received 80 bytes from 192.168.4.2#53 in 0 ms
[srvdmz@srvdmz:~$] sudo dig SOA srvdmz.loupvirtuel.fr
Retour :
; <<>> DiG 9.16.27... <<>> SOA srvdmz.loupvirtuel.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id..
;; flags: ..; ..RY: 1, ..ER: 0, ..TY: 1, ..AL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 411fb5402c2a5322532f434a5ef0c784.. (good)
;; QUESTION SECTION:
;srvdmz.loupvirtuel.fr. IN SOA
;; AUTHORITY SECTION:
loupvirtuel.fr. 86400 IN SOA srvdmz.lo..
;; Query time: 0 msec
;; SERVER: 192.168.4.2#53(192.168.4.2)
;; WHEN: Wed. jun 29 17:00:20 CEST 2022
;; MSG SIZE rcvd: 119
f ) Contrôlez les IP retournées selon le domaine ciblé :
[srvdmz@srvdmz:~$] nslookup loupvirtuel.fr
Retour :
Server: 192.168.4.2
Address: 192.168.4.2#53
Name: loupvirtuel.fr
Address: 192.168.4.2
[srvdmz@srvdmz:~$] nslookup intra.loupvirtuel.fr
Retour :
Server: 192.168.4.2
Address: 192.168.4.2#53
Non-authoritative answer:
Name: intra.loupvirtuel.fr
Address: 192.168.3.1
6.2 - Côté srvlan
a ) Vérifiez l'usage de TSIG entre srvlan/srvdmz :
[srvlan@srvlan:~$] sudo dig -y hmac-sha256:tsig-dns-split.key:jXfcB8I4v9zVrhZADPcrICdunwzYcmtDo74+iS1DlJo= @192.168.4.2 AXFR loupvirtuel.fr
et réalisez les mêmes tests que ci-dessus avec srvdmz :
[srvlan@srvlan:~$] sudo named-checkconf [srvlan@srvlan:~$] cd /var/lib/bind [srvlan@srvlan:~$] sudo named-checkzone -d intra.loupvirtuel.fr db.intra.loupvirtuel.fr.directe [srvlan@srvlan:~$] sudo named-checkzone -d 3.168.192.in-addr.arpa db.intra.loupvirtuel.fr.inverse [srvlan@srvlan:~$] sudo host -v srvlan.intra.loupvirtuel.fr [srvlan@srvlan:~$] sudo dig SOA srvlan.intra.loupvirtuel.fr
b ) Vérifiez ensuite le statut du serveur DHCP :
[srvlan@srvlan:~$] sudo systemctl status isc-dhcp-server
Redémarrez les VM debian11-vm* et vérifiez sur srvlan que le fichier des baux /var/lib/dhcp/dhcpd.leases montre à présent le sous-domaine intra.loupvirtuel.fr.
c ) Contrôlez le résultat des pings suivants :
[srvlan@srvlan:~$] ping debian11-vm1
[srvlan@srvlan:~$] ping debian11-vm2.intra.loupvirtuel.fr
[srvlan@srvlan:~$] ping srvlan # 127.0.1.1
[srvlan@srvlan:~$] ping srvlan.intra.loupvirtuel.fr # 192.168.3.1
[srvlan@srvlan:~$] ping ovs
[srvlan@srvlan:~$] ping ctn1.intra.loupvirtuel.fr
[srvlan@srvlan:~$] ping ctn2
[srvlan@srvlan:~$] ping intra.loupvirtuel.fr
[srvlan@srvlan:~$] ping loupvirtuel.fr
[srvlan@srvlan:~$] ping www.google.fr
Tous les pings doivent recevoir une réponse positive.
d ) Contrôlez les IP retournées selon le domaine ciblé :
[srvlan@srvlan:~$] nslookup intra.loupvirtuel.fr
Retour :
Server: 192.168.3.1
Address: 192.168.3.1#53
Name: intra.loupvirtuel.fr
Address: 192.168.3.1
[srvlan@srvlan:~$] nslookup loupvirtuel.fr
Retour :
Server: 192.168.3.1
Address: 192.168.3.1#53
Non-authoritative answer:
Name: loupvirtuel.fr
Address: 192.168.4.2
6.3 - Côté clients debian11-vm*
Testez les 2 Cdes suivantes :
[client-linux@debian11-vm*:~$] dig SOA www.loupvirtuel.fr [client-linux@debian11-vm*:~$] dig SOA www.yahoo.fr
Retours à observer dans la section AUTHORITY :
- SOA srvdmz.loupvirtuel.fr pour la première ligne.
- SOA nom-serveur-DNS de Yahoo pour la seconde.
Testez également la résolution directe et inverse :
[client-linux@debian11-vm*:~$] nslookup www.loupvirtuel.fr [client-linux@debian11-vm*:~$] nslookup 192.168.4.2
- Cde 1, srvlan renvoie l'IP locale de srvweb.
- Cde 2, srvlan renvoie l'hôte srvdmz.loupvirtuel.fr.
7 - Test depuis Internet (simulation)
Le domaine loupvirtuel.fr n'étant pas public, vous ne pouvez pas accéder au site Web depuis Internet en tapant simplement son URL dans le champ adresse d'un navigateur Web.
En revanche, vous pouvez simuler un accès Internet depuis le PC hôte de VirtualBox.
7.1 - Préparation pour la simulation
L'exemple ci-dessous concerne un PC Windows 10/11.
Désactivez l'IPv6 et modifiez l'IPv4 du serveur DNS utilisé en remplaçant celle-ci par l'IP 192.168.x.w de la carte RED d'IPFire comme suit :
a) Désactivation du protocole IPv6 :
- Clic droit sur le menu Windows 10/11 -> Exécuter
-> Entrez ncpa.cpl > Bouton OK
-> Sélectionnez votre carte réseau active
-> Clic droit sur celle-ci -> Propriétés
-> Décochez Protocole Internet version 6 (TCP/IPv6)
b) Adresse IPv4 du serveur DNS préféré à utiliser :
- Sélectionnez Protocole Internet version 4 (TCP/IPv4)
> Bouton Propriétés
Vous pouvez à présent effectuer les tests ci-dessous.
7.2 - Test du DNS de srvdmz depuis Internet
Depuis l'Invite de commandes du PC Windows, entrez :
[C:\Users\...>] nslookup loupvirtuel.fr
Retour :
Serveur : UnKnown
Address: 192.168.x.w
Nom : loupvirtuel.fr # Réponse du DNS de srvdmz
Address: 192.168.x.w # IP externe retournée
[C:\Users\...>] nslookup yahoo.fr
Retour :
Serveur : UnKnown
Address: 192.168.x.w
*** UnKnown ne parvient ... yahoo.fr : Query refused
[C:\Users\...>] nslookup intra.loupvirtuel.fr
Retour :
Serveur : UnKnown
Address: 192.168.x.w
*** UnKnown ... intra.loupvirtuel.fr : Non-existe...
Les 2 dernières requêtes sont rejetées car, voir plus haut, la récursivité DNS a été bloquée pour les requêtes DNS provenant d'Internet, ceci pour raison de sécurité.
192.168.x.w = IP carte RED du serveur IPFire.
7.3 - Test du site loupvirtuel.fr depuis Internet
Testez depuis le navigateur Web du PC Windows les 2 URL suivantes :
http://www.loupvirtuel.fr et http://loupvirtuel.fr
Toutes les deux doivent basculer vers le protocole https sous réserve d'avoir au préalable importé le certificat ssl loupvirtuel-ca.pem dans le magasin des autorités gérées par le navigateur Web (voir ici).
Les autres URL comme par exemple http://google.fr doivent rester sans réponse car la récursivité DNS est bloquée.
7.4 - Test du site Web de srvlan depuis Internet
Possible en utilisant le proxy inverse fourni par Apache.
Chargez les modules concernant la fonction de proxy :
[srvdmz@srvdmz:~$] sudo a2enmod proxy [srvdmz@srvdmz:~$] sudo a2enmod proxy_http
Editez ensuite le virtualhost du domaine loupvirtuel.fr :
[srvdmz@srvdmz:~$] cd /etc/apache2/sites-available [srvdmz@srvdmz:~$] sudo nano loupvirtuel.conf
et ajoutez la section VirtualHost ci-dessous :
<VirtualHost *:80>
ServerName extra.loupvirtuel.fr
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass "/" "http://192.168.3.1:80/"
ProxyPassReverse "/" "http://192.168.3.1:80/"
ErrorLog /var/log/apache2/extra.loupvirtuel.error.log
CustomLog /var/log/apache2/extra.loupvirtuel.access.log combined
</VirtualHost>
Redémarrez Apache :
[srvdmz@srvdmz:~$] sudo systemctl restart apache2 [srvdmz@srvdmz:~$] sudo systemctl status apache2
Modifiez maintenant le fichier de zone DNS suivant :
[srvdmz@srvdmz:~$] cd /var/lib/bind [srvdmz@srvdmz:~$] sudo nano db.loupvirtuel.fr.directe.externe
en ajoutant l'enregistrement DNS ci-dessous :
extra IN A 192.168.x.w
192.168.x.w = IP carte RED du serveur IPFire.
Pour finir, redémarrer le serveur DNS :
[srvdmz@srvdmz:~$] sudo systemctl restart bind9
et testez, depuis le navigateur Web du PC hôte, l'URL :
http://extra.loupvirtuel.fr.
Vous devez observer l'accueil du site Web de srvlan.
Vous pouvez à présent désactiver ou non la règle de pare-feu "HTTP vers serveur Web zone verte autorisé".
Enfin, pensez à remettre en place sur le PC Windows la configuration initiale IPv4 et IPv6.
Voilà, c'est terminé pour le DNS split.
Le mémento 11.11 vous attend pour
mettre en place un serveur de
courrier basé sur Postfix.