Skip to content

DNS externe

Arnaud Meunier edited this page Feb 10, 2023 · 3 revisions

Organisation des deux réseaux

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.

Organisation des configurations

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.

named.conf

Configuration principale du SOA externe dans option {};

	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;

Configuration de la zone du DNS

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"; 
};

Fichier de zone "db.fr"

Ce fichier peut être découpé en deux parties:

- Configuration de la zone globale à proprement dit (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
;

- Configuration des autres services atteignables depuis internet:

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

Maintenance

Procédure pour mettre à jour le logiciel serveur :

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 ! 👍

Procédure à suivre en cas d'ajout d'un nouveau serveur dans la zone externe de l'entreprise :

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.

Troubleshooting

Procédures et collecte d'information

Il existe plusieurs façons de trouver et résoudre des problèmes de fonctionnement:

Depuis l'extérieur du serveur:

  • 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)

Depuis l'intérieur du serveur:

  • 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.

Erreurs fréquentes

  • 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 commande named -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

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.

  1. Génération de la clé KSK
dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE fr.brainwash-corp.org
  1. Génération de la clé ZSK
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE ca.brainwash-corp.org
  1. Vérification des permissions sur les clés privées .private (chmod 600)
ls -la /etc/bind/keys
  1. 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" ;
  1. 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
  1. Modification du fichier de zone et dernière vérification
  • Dans le fichier named.conf (/etc/bind/named.conf), dans zone "fr.brainwash-corp.org" , remplacer le ligne file "/etc/bind/db.fr.brainwash-corp.org" par file "/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;
  1. Recommencer pour la zone ca.brainwash-corp.org

  2. Redémarrer le service bind

systemctl restart bind9.service
  1. Tester le fonctionnement du DNS
dig fr.brainwash-corp.org
dig ca.brainwash-corp.org
Clone this wiki locally