Démarrer avec le serveur DNS BIND

Le serveur de noms de domaine (DNS) est un composant essentiel de l’infrastructure Internet, et la création de votre serveur DNS peut être un défi. Eh bien, ce n’est pas le cas avec BIND, où vous pouvez créer votre serveur DNS BIND en un rien de temps. BIND jouit d’une excellente réputation auprès des administrateurs en raison de sa flexibilité et de son support haute disponibilité.

Dans cet article, vous apprendrez comment installer et configurer un serveur DNS BIND sécurisé et vérifier que les sous-domaines sont résolus à la bonne adresse IP.

Lisez la suite et créez votre serveur DNS sans effort !

Prérequis

Ce tutoriel sera une démonstration pratique. Pour suivre, assurez-vous d’avoir ce qui suit.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

Installation des packages BIND

Le dépôt par défaut d’Ubuntu propose des packages BIND, mais ils ne sont pas installés sur votre système par défaut. Vous pouvez installer BIND en tant que serveur DNS principal ou uniquement autoritaire. BIND vous offre des fonctionnalités puissantes telles que le support de l’installation maître-esclave, le support DNSSEC et des listes de contrôle d’accès intégrées (ACL).

Pour commencer avec BIND DNS, vous devrez d’abord installer les packages BIND sur votre machine avec le gestionnaire de paquets apt.

1. Ouvrez votre terminal et connectez-vous à votre serveur.

2. Ensuite, exécutez la commande apt update ci-dessous pour mettre à jour et rafraîchir l’index des packages du dépôt. Cette commande assure que vous installez la dernière version des packages.

sudo apt update
Refreshing Package Index

3. Une fois mis à jour, exécutez la commande apt install ci-dessous pour installer les packages BIND pour le serveur Ubuntu.

Les packages bind9-utils et bind9-dnsutils fournissent des outils en ligne de commande supplémentaires pour BIND. Ces packages sont utiles pour tester et gérer le serveur DNS BIND.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. Enfin, exécutez la commande systemctl ci-dessous pour vérifier le service BIND.

Le package BIND est livré avec le service named qui démarre automatiquement et est activé lors de l’installation du package BIND.

# Vérifiez si le service named est activé
sudo systemctl is-enabled named

# Vérifiez l'état du service named
sudo systemctl status named

Maintenant, vous devriez voir que le service BIND named est activé avec le statut actif (en cours d’exécution). À ce stade, le service BIND s’exécutera automatiquement au démarrage du système.

Checking BIND named service

Configuration du Serveur DNS BIND

Vous avez maintenant installé les paquets BIND sur le serveur Ubuntu, il est donc temps de configurer l’installation BIND sur votre serveur Ubuntu. Comment ? En modifiant les configurations de BIND et du service named.

Toutes les configurations pour BIND sont disponibles dans le répertoire /etc/bind/, et les configurations pour le service named dans /etc/default/named.

1. Modifiez la configuration de /etc/default/named en utilisant votre éditeur préféré et ajoutez l’option -4 sur la ligne OPTIONS, comme indiqué ci-dessous. Cette option exécutera le service named uniquement sur IPv4.

OPTIONS="-4 -u bind"

Enregistrez les modifications apportées et fermez le fichier.

Configuring BIND to Run on IPv4 Only

2. Ensuite, modifiez le fichier /etc/bind/named.conf.options et ajoutez la configuration suivante en dessous de la ligne directory "/var/cache/bind";.

Cette configuration définit le service BIND pour fonctionner sur le port UDP par défaut 53 sur l’adresse IP locale et publique du serveur (172.16.1.10). Dans le même temps, il autorise les requêtes de n’importe quel hôte vers le serveur DNS BIND en utilisant le résolveur Cloudflare DNS 1.1.1.1 comme forwarder.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

En bas, commentez la ligne listen-on-v6 { any; }; comme indiqué ci-dessous, pour désactiver le service named de s’exécuter sur IPv6.

Editing the BIND Configuration Options

3. Enfin, exécutez la commande suivante pour vérifier la configuration BIND.

sudo named-checkconf

S’il n’y a pas de sortie, les configurations BIND sont correctes sans aucune erreur.

Verifying BIND Configurations

Configuration des Zones DNS

À ce stade, vous avez configuré la configuration de base du serveur DNS BIND. Vous êtes prêt à créer un serveur DNS avec votre domaine et à ajouter d’autres sous-domaines pour vos applications. Vous devrez définir et créer une nouvelle configuration de zones DNS pour ce faire.

Dans ce tutoriel, vous allez créer un nouveau serveur de noms (ns1.atadomain.io) et des sous-domaines (www.atadomain.io, mail.atadomain.io, vault.atadomain.io).

1. Modifiez le fichier /etc/bind/named.conf.local avec votre éditeur préféré et ajoutez la configuration suivante.

Cette configuration définit la zone de transit (/etc/bind/zones/forward.atadomain.io) et la zone inverse (/etc/bind/zones/reverse.atadomain.io) pour le nom de domaine atadomain.io.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

Enregistrez les modifications et fermez le fichier.

Defining Forward Zone and Reverse Zone BIND

2. Ensuite, exécutez la commande ci-dessous pour créer un nouveau répertoire (/etc/bind/zones) pour les configurations de zones DNS.

mkdir -p /etc/bind/zones/

3. Exécutez chaque commande ci-dessous pour copier la configuration par défaut des zones de transit et inverse dans le répertoire /etc/bind/zones.

# Copier la zone de transit par défaut
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# Copier la zone inverse par défaut
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# Liste des contenus du répertoire /etc/bind/zones/
ls /etc/bind/zones/
Copying Default Zones Configurations

4. Maintenant, modifiez la configuration de la zone de transit (/etc/bind/zones/forward.atadomain.io) avec votre éditeur préféré et remplissez la configuration ci-dessous.

La configuration de la zone avant est l’endroit où vous définissez votre nom de domaine et l’adresse IP du serveur. Cette configuration traduira le nom de domaine vers l’adresse IP correcte du serveur.

La configuration ci-dessous crée le serveur de noms suivant et ses sous-domaines:

  • ns1.atadomain.io – Le serveur de noms principal pour votre domaine avec l’adresse IP 172.16.1.10.
  • Enregistrement MX pour le domaine atadomain.io qui est géré par mail.atadomain.io. L’enregistrement MX est utilisé pour le serveur de messagerie.
  • Sous-domaines pour les applications: www.atadomain.io, mail.atadomain.io et vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

Enregistrez les modifications et fermez le fichier.

Configuring Forward Zone BIND

5. Tout comme la zone avant, éditez le fichier de configuration de la zone inverse (/etc/bind/zones/reverse.atadomain.io) et remplissez la configuration suivante.

La zone inverse traduit l’adresse IP du serveur vers le nom de domaine. La zone inverse ou l’enregistrement PTR est essentielle pour des services comme le serveur de messagerie, ce qui affecte la réputation du serveur de messagerie.

L’enregistrement PTR utilise le dernier bloc de l’adresse IP, comme l’enregistrement PTR avec le numéro 10 pour l’adresse IP du serveur 172.16.1.10.

Cette configuration crée la zone inverse ou l’enregistrement PTR pour les domaines suivants:

  • Serveur de noms ns1.atadomain.io avec la zone inverse ou l’enregistrement PTR 172.16.1.10.
  • Enregistrement PTR pour le domaine mail.atadomain.io vers l’adresse IP du serveur 172.16.1.20.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

Enregistrez les modifications et fermez le fichier.

Configuring Reverse Zone BIND

6. Maintenant, exécutez les commandes suivantes pour vérifier et vérifier les configurations BIND.

# Vérification de la configuration principale pour BIND
sudo named-checkconf

# Vérification de la zone avant forward.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# Vérification de la zone inverse reverse.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

Quand votre configuration est correcte, vous verrez une sortie similaire ci-dessous.

Checking and Verifying BIND configurations

7. Enfin, exécutez la commande systemctl ci-dessous pour redémarrer et vérifier le service named. Ce faisant, appliquez de nouveaux changements au service named.

# Redémarrer le service nommé
sudo systemctl restart named

# Vérifier le service nommé
sudo systemctl status named

Vous pouvez voir ci-dessous que le statut du service nommé est actif (en cours d’exécution).

Restarting Named Service and Verifying Named Service Status

Ouverture du port DNS avec le pare-feu UFW

À ce stade, vous avez terminé l’installation du serveur DNS BIND. Mais vous devez encore sécuriser votre serveur DNS. Vous configurerez le pare-feu UFW et ouvrirez le port DNS pour toutes les requêtes vers le serveur. Ce faisant, permettez aux clients de faire une requête au serveur DNS BIND.

Pour des raisons de sécurité, il est recommandé d’exécuter et d’activer le pare-feu UFW sur votre serveur Ubuntu.

1. Exécutez la commande ufw ci-dessous pour vérifier les applications disponibles sur le pare-feu UFW.

sudo ufw app list

Vous devriez voir le programme Bind9 dans la liste d’applications de l’application UFW ci-dessous.

Listing Available Applications on the UFW Firewall

2. Exécutez maintenant la commande ci-dessous pour autoriser le Bind9 sur le pare-feu UFW.

sudo ufw allow Bind9
Adding UW Rule

3. Enfin, exécutez la commande suivante pour vérifier les règles activées sur le pare-feu UFW.

sudo ufw status

Vous devriez voir l’application Bind9 dans la liste comme dans la capture d’écran ci-dessous.

Verifying List of Rules

Vérification de l’installation du serveur DNS BIND

Vous avez maintenant terminé l’installation du serveur DNS BIND et configuré le pare-feu UFW. Mais comment vérifier l’installation de votre serveur DNS ? La commande dig fera l’affaire.

Dig est un utilitaire en ligne de commande pour dépanner l’installation du serveur DNS. dig effectue une recherche DNS pour le nom de domaine donné et affiche des réponses détaillées pour la cible du nom de domaine. Sur le système Ubuntu, dig fait partie du paquet bind9-dnsutil.

Pour vérifier l’installation de votre serveur DNS BIND :

1. Exécutez chaque commande dig ci-dessous pour vérifier les sous-domaines www.atadomain.iomail.atadomain.io et vault.atadomain.io.

Si l’installation de votre serveur DNS est réussie, chaque sous-domaine sera résolu vers la bonne adresse IP en fonction de la configuration forward.atadomain.io.

# Vérification des noms de domaine
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

Voici le résultat de la résolution du sous-domaine www.atadomain.io vers l’adresse IP du serveur 172.16.1.10.

Checking sub-domain www.atadomain.io

Ci-dessous, le sous-domaine mail.atadomain.io résolu vers l’adresse IP du serveur 172.16.1.20.

Checking sub-domain mail.atadomain.io

Et enfin, le sous-domaine vault.atadomain.io résolu vers l’adresse IP du serveur 172.16.1.50.

Checking sub-domain vault.atadomain.io

2. Ensuite, exécutez la commande dig ci-dessous pour vérifier l’enregistrement MX du domaine atadomain.io.

dig @172.16.1.10 atadomain.io MX

Vous devriez voir que le domaine atadomain.io a l’enregistrement MX mail.atadomain.io.

Checking MX record for atadomain.io

3. Enfin, exécutez les commandes suivantes pour vérifier l’enregistrement PTR ou la zone inverse des adresses IP du serveur 172.16.1.10 et 172.16.1.20.

Si votre installation BIND est réussie, chaque adresse IP sera résolue vers le nom de domaine défini dans la configuration reverse.atadomain.io.

# Vérification de l'enregistrement PTR ou DNS inverse
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

Vous pouvez voir ci-dessous que l’adresse IP du serveur 172.16.1.10 est résolue vers le nom de domaine ns1.atadomain.io.

Checking PTR record for IP address 172.16.1.10

Comme vous pouvez le voir ci-dessous, l’adresse IP du serveur 172.16.1.20 est résolue vers le nom de domaine mail.atadomain.io.

Checking PTR record for IP address 172.16.1.20

Conclusion

Tout au long de ce tutoriel, vous avez appris comment créer et configurer un serveur DNS BIND sécurisé sur votre serveur Ubuntu. Vous avez également créé la zone avant et arrière pour ajouter votre domaine et vérifié les serveurs DNS en exécutant des commandes dig.

Maintenant, comment pouvez-vous mettre en œuvre un serveur DNS BIND dans votre environnement ? Peut-être mettre en place BIND en tant que serveur autorisé? Ou configurer une haute disponibilité avec une installation BIND maître-esclave?

Source:
https://adamtheautomator.com/bind-dns-server/