-
Notifications
You must be signed in to change notification settings - Fork 1
DNS externe
Nous sommes supposés mettre en place deux réseaux distants (France, Canada). Pour chacun de ces réseaux nous avons un service DNS publique qui répondra aux requêtes DNS venant de l'extérieur. Le problème pour ce projet est que nous avons une unique adresse publique à partager pour les deux réseaux supposés distants.
Nous devrions atteindre les différents services d'un réseau à l'aide de son adresse publique. Mais comme ici nous n'en avons qu'une seule nous nous sommes passés la question de comment c'était possible.
Les fichiers de configuration du service DNS externe (SOA) se trouvent ici.
Ils sont organisés de la manière suivante :
- Le fichier db.fr.brainwash-corp.org qui représente la zone externe de l'entreprise avec les différents Ressource Records disponibles.
- Le fichier named.conf qui est le fichier de configuration du SOA externe et qui lui donne ses directives.
directory "/etc/bind";
listen-on { any; };
listen-on-v6 { none; };
allow-query { any; }; // On autorise n'importe quelle machine à faire une requête vers notre DNS.
allow-transfer {
none;
};
pid-file "/var/run/named/named.pid"; // Cette ligne précise le fichier dans lequel l'id du processus bind sera stocké.
allow-recursion { none; }; // On accepte pas les requêtes récursives
recursion no;
Plus loin dans le fichier vient la configuration de la zone de notre entreprise,
c'est à dire:
#Zone locale
zone "fr.brainwash-corp.org" {
type master; //serveur authoritaire
file "/etc/bind/db.fr.brainwash-corp.org";
};
On peut y paramétrer la durée pour laquelle l'information sera valable, ici 2419200.
$ORIGIN fr.brainwash-corp.org.
$TTL 604800
@ IN SOA ns.fr.brainwash.org. admin.fr.brainwash.org. (
2021060809 ; Serial
43200 ; Refresh
7100 ; Retry
2419200 ; Expire
86300 ) ; Negative Cache TTL
;
On remarque que chaque service possède une ligne qui lui est dédiée dans la configuration. Ces lignes sont appellées Ressource Records et indiquent pour chaque type de requêtes (NS, MX, A, AAA, etc) à quelle serveur elles correspondent.
@ IN NS ns.fr.brainwash-corp.org.
@ IN MX 10 relais
;
ns IN A 193.190.65.84
reverse_proxy IN A 193.190.65.84
relais IN A 193.190.65.84
Il se peut que vous vouliez mettre à jour BIND pour obtenir de nouvelles fonctionnalités ou résoudre des bugs.
- Tout d'abord, pour savoir dans quelle version de BIND vous vous trouvé actuellement, il faut entrer la commande
named -v
(pour "named -version") sur le serveur.
# named -v
BIND 9.11.3-1ubuntu1.17-Ubuntu (Extended Support Version) <id:a375815>
Un résultat comme celui-ci devrait s'afficher.
Si vous constatez que la version est inférieure à la dernière version du logiciel et que vous souhaiter le mettre à jour, il faudra alors éxécuter la commande apt update bind
qui va mettre à jour le logiciel.
- Premièrement exécutez la commande
sudo apt-get update
pour mettre à jour les packets de ubuntu. - Deuxièmement pour être sûr d'installer la dernière version de BIND, effectuez la commande
sudo apt-get install bind9 bind9-doc dnsutils
.
Une fois BIND mis à jour, il faut relancer le processus du DNS, car la mise à jour de BIND arrête automatiquement les processus liés. Pour ce faire, rien de plus simple, il suffit d'effectuer cette commande:
named -g
Voilà votre serveur BIND mis à jour ! 👍
Les modifications devrons s'effectuer dans le fichier de la zone dans lequel vous ajouter le serveur (par exemple la zone externe de l'entreprise).
Imaginons que notre fichier de configuration contient les informations suivantes:
@ IN NS ns.fr.brainwash-corp.org.
@ IN MX 10 relais
;
ns IN A 193.190.65.84
reverse_proxy IN A 193.190.65.84
relais IN A 193.190.65.84
;
Imaginons que l'on veut ajouter un serveur web, on devra alors ajouter une ligne de cette forme:
www IN A 193.190.65.84
- La première partie indique le nom du serveur dans la résolution de nom.
- La seconde partie (IN A), indique que cette Ressource Record précise une adresse IP. En effet il existe plusieurs types de RessourceRecords.
- La dernière partie indique l'adresse IP du serveur qui sera transmise lors d'une requête DNS envers ce dernier.
Une fois les changements effectués, il faut redémarrer le service DNS comme précisé au point sur la mise à jour avec la commande named -g
.
Il existe plusieurs façons de trouver et résoudre des problèmes de fonctionnement:
- Utiliser la commande "dig" pour tester des requêtes vers le DNS et voir si tous les Ressources Records sont opérationnels.
- Utiliser la commande "ping" pour tester l'adressage Ip sur le serveur DNS (couche 1 et 2)
- Examiner les logs se trouvant dans "/var/log/bind" pour identifier un problème potentiel
- Utiliser la commande "ps -A" pour vérifier que le processus nommé "named" tourne bien sur le serveur
- Utiliser la commande "netstat -nltpu" pour vérifier que le processus écoute bien sur le port 53 udp
- Faire vérifier la syntaxe des fichiers de zones avec la commande
named-checkzone
+ le chemin vers le fichier. - Faire vérifier la syntaxe du fichier de configuration named.conf avec la commande
named-checkconf
+ le chemin vers le fichier.
- Erreur de syntax dans les fichiers de configuration: il faut veiller à bien indenter le code, à bien fermer chaque accolade et ne pas oublier de ";" en fin de ligne.
- Erreur sur l'attribution du port pour le service DNS, à vérifier avec la commande
netstat -nltpu
. - Oublier de lancer le processus named, il faut vérifier cela avec la commande
ps -A
. Si il n'est pas lancer entrer la commandenamed -g
. - Vérifier que les adresses IP sont correctes dans le fichier
named.conf
et dans le fichier de zone.
À préciser que d'une manière générale, named vous indiquera d'où viens l'erreur lors du lancement avec la command named -g
.
DNSSEC permet de sécuriser les échanges DNS en utilisant des signatures numériques basées sur un système de clé privée-publique. Protégeant ainsi l'intégrité des données et permet de vérifier que la source des données soit correcte.
- Génération de la clé KSK
dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE fr.brainwash-corp.org
- Génération de la clé ZSK
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE ca.brainwash-corp.org
- Vérification des permissions sur les clés privées .private (
chmod 600
)
ls -la /etc/bind/keys
- Importer les clés dans le fichier de zone
Dans le fichier de la zone fr.brainwash-corp.org (
cd /etc/bind/db.fr.brainwash-corp.org
), ajouté ceci en dessous du champ SOA
$INCLUDE "/etc/bind/keys/Kmfr.brainwash-corp.org+008+15349.key" ;
$INCLUDE "/etc/bind/keys/Kmfr.brainwash-corp.org.+008+32361.key" ;
- Signer le fichier de zone
Rendez-vous dans le dossier contenant les clés (
cd /etc/bind/keys
) et tapez ceci pour créer un nouveau fichier de zone signé
dnssec-signzone -e20170320030000 -t -g -k Kmfr.brainwash-corp.org.+008+15349.key -o fr.brainwash-corp.org ../db.fr.brainwash-corp.org Kmfr.brainwash-corp.org.+008+32361.key
- Modification du fichier de zone et dernière vérification
-
Dans le fichier named.conf (
/etc/bind/named.conf
), danszone "fr.brainwash-corp.org"
, remplacer le lignefile "/etc/bind/db.fr.brainwash-corp.org"
parfile "/etc/bind/db.fr.brainwash-corp.org.signed"
-
Vérifier également que
option
contient bien ceci
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
-
Recommencer pour la zone ca.brainwash-corp.org
-
Redémarrer le service bind
systemctl restart bind9.service
- Tester le fonctionnement du DNS
dig fr.brainwash-corp.org
dig ca.brainwash-corp.org