Bind9
On this page… (hide)
BIND pour Berkeley Internet Name Domain est un serveur DNS proposé par l’ISC (Internet Systems Consortium), que vous pouvez utiliser sur Linux, notamment sur Debian, Ubuntu, ou encore Fedora. Il est mondialement connu et utilisé par des entreprises, des agences gouvernementales ou encore des institutions financières. Il dispose de toutes les fonctionnalités nécessaires pour répondre aux besoins en matière de sécurité, de stabilité et de performances.
1. Mise en place
1.1 Installation avec APT
sudo apt-get update
sudo apt-get install bind9 dnsutils
1.2 Configuration de BIND9
Les fichiers de configuration de Bind se trouvent dans le répertoire “/etc/bind”
Par défaut, ce répertoire contient déjà un ensemble de fichiers de configuration. Vous devez savoir que :
- Les fichiers “db.<nom>” correspondent aux fichiers de zones intégrés par défaut dans Bind. Vous pouvez vous en inspirer en tant que modèle pour la création de vos fichiers de zones.
- Le fichier “named.conf” est le fichier de configuration principal de Bind9. Il contient des directives “include” pour charger 3 autres fichiers :
- “named.conf.options” contient les options de configuration de Bind
- “named.conf.local” sert à déclarer des zones
- “named.conf.default-zones” contient la définition des zones incluses par défaut avec Bind.
1.3 Sauvegarde des fichiers de base
Par sécurité, vous pouvez effectuer une copie des 2 fichiers de Bind (named.conf.options et named.conf.local) qui sont susceptibles d’être modifiés lors de la mise en place du DNS. Pour cela, utilisez les commandes suivantes :
cd /etc/bind
cp named.conf.options named.conf.options.bkp
cp named.conf.local named.conf.local.bkp
1.4 Configuration globale de BIND9
Comme je l’ai dit précédemment, les options de configuration de Bind sont définies dans le fichier “named.conf.options”. Voici un aperçu de ce fichier, dans sa configuration par défaut :
image Named.conf.options
On peut voir qu’il y a beaucoup de lignes commentées (celles qui débutent par “//”), ainsi que plusieurs options définies par défaut. Nous allons devoir ajuster cette configuration.
sudo nano /etc/bind/named.conf.options
Dans ce fichier, vous allez devoir définir plusieurs options, notamment pour permettre la résolution des noms externes, via les DNS publics de Cloudflare (1.1.1.1) et Quad9 (9.9.9.9), que vous pouvez remplacer par d’autres IP. Il convient aussi de mettre en écoute le serveur DNS.
Voici la configuration commentée que vous pouvez utiliser :
options {
// Répertoire de travail de Bind
directory “/var/cache/bind”;
// Redirecteurs DNS (résolveurs externes)
forwarders {
1.1.1.1;
9.9.9.9;
};
// Mode récursif, pour résoudre les noms externes
recursion yes;
// Active la validation DNSSEC (vérifier l’authenticité des réponses DNS signées)
dnssec-validation auto;
// Ecouter sur toutes les interfaces réseau en IPv4 et IPv6
listen-on { any; };
listen-on-v6 { any; };
};
Pour aller plus loin, nous pouvons définir une ACL (règle d’accès) pour indiquer que seules les machines du LAN peuvent contacter ce serveur DNS. Ainsi, nous autorisons “192.168.1.0/24”, le serveur lui-même (localhost) et le réseau auquel il est connecté, soit “192.168.14.0/24” (localnets).
Cette ACL doit être déclarée avant le bloc “options” :
// Autoriser uniquement certains réseaux à solliciter ce DNS
acl “lan” {
192.168.1.0/24;
localhost;
localnets;
};
Puis, dans le bloc “options”, Ã la suite des directives “listen-on” mais avant la fermeture du bloc, ajoutez ceci :
// Autoriser les requêtes pour les hôtes de l’ACL “lan”
allow-query { lan; };
Quand c’est fait, enregistrez le fichier. Vous pouvez le fermer et exécuter la commande ci-dessous pour vérifier la syntaxe :
sudo named-checkconf
S’il y a des erreurs de syntaxe, les numéros de lignes seront retournés dans la console. Sinon, c’est que c’est bon.
Nous venons d’effectuer la configuration de base de Bind9. Passons à la suite : la création du fichier de zone.
2. Création d’un nouvelle zone DNS
2.1 Déclaration de la Zone
Nous allons devoir déclarer notre nouvelle zone DNS. Pour cela, éditez ce fichier de configuration :
sudo nano /etc/bind/named.conf.local
Puis, ajoutez le code suivant :
zone “it-connect.local” {
type master;
file “/etc/bind/db.it-connect.local”;
allow-update { none; };
};
Pour rappel, nous allons créer la zone DNS “it-connect.local” et le fichier de zone sera “/etc/bind/db.it-connect.local”. L’instruction “allow-update { none; };” permet de refuser les mises à jour des enregistrements DNS par un tiers non autorisé.
Quand c’est fait, enregistrez et fermez le fichier.
Désormais, vous allez copier le fichier “db.local” pour l’utiliser comme base pour votre nouvelle zone :
sudo cp /etc/bind/db.local /etc/bind/db.it-connect.local
Quand c’est fait, vous pouvez passer à l’édition du fichier de zone.
2.2 Configuration de la zone DNS
Nous allons modifier le fichier de zone pour le configurer et créer nos premiers enregistrements DNS. Nous verrons comment créer un enregistrement A, ainsi qu’un alias CNAME.
Commencez par ouvrir le fichier de zone :
sudo nano /etc/bind/db.it-connect.local
Après modifications, voici le fichier de zone “it-connect.local” prêt à l’emploi. Il permet de déclarer le serveur local, à savoir SRV-DNS, comme serveur faisant autorité sur la zone. Nous déclarons également un enregistrement A avec l’adresse IP du serveur DNS, à savoir “192.168.14.99”.
Quelques explications supplémentaires :
- “$TTL 604800” correspond à la durée de vie des informations fournies et donc la durée pendant laquelle elles sont gardées en cache par les autres serveurs DNS. Par défaut, ce temps est défini sur 24 heures (86400 secondes).
- @ : désigne la racine de la zone, c’est-à -dire it-connect.local.
- “SOA” signifie Start Of Authority, soit les paramètres principaux de la zone. Il indique le serveur qui a autorité sur la zone, puis l’adresse e-mail du contact technique dont le caractère « @ » est remplacé par un «.». La valeur “srv-dns.it-connect.local.” sert à indiquer le serveur DNS primaire (le point final indique un FQDN complet).
- Serial “1” : numéro de série de la zone. À incrémenter chaque fois que le fichier de zone est modifié pour notifier les serveurs secondaires d’une mise à jour.
- Refresh “604800” : c’est le délai de rafraichissement pour la synchronisation des configurations entre plusieurs serveurs DNS.
- Retry “86400” : c’est le délai au bout duquel un serveur DNS secondaire devra retenter une synchronisation si celle qu’il a faite au bout du temps “refresh” a échoué.
- Expire “2419200” : si toutes les tentatives de synchronisation échouent, un serveur DNS secondaire considérera qu’il ne peut plus répondre aux requêtes concernant cette zone une fois que le temps est écoulé. Par défaut, le temps est de “2419200” secondes, soit 28 jours.
- Negative Cache TTL “86400” : durée de conservation dans le cache de l’information “NXDOMAIN” lorsqu’un incident se produit (échec de résolution).
Enfin, terminons par un rappel sur les types d’enregistrements principaux, puisqu’ils ont chacun un rôle différent :
- NS (Name Server) : sert à définir le ou les serveurs DNS qui font autorité sur l’espace de noms (zone).
- A : enregistrement d’un hôte ayant une adresse IPv4 (32 bits).
- AAAA : enregistrement d’un hôte ayant une adresse IPv6 (128 bits).
- CNAME (Canonical Name) : enregistrement qui sert d’alias à un enregistrement d’un hôte existant.
- MX : sert à définir le ou les serveurs SMTP à utiliser pour l’envoi des e-mails sur ce domaine, selon un ordre de priorité défini dans l’enregistrement.
- TXT : enregistrement textuel pouvant être utilisé dans différents contextes, notamment le SPF, la validation du domaine avec certains outils, etc.
