Installation et configuration d'un serveur DNS

Processus de configuration

L'application est déjà installée. Pour mettre en place le service de résolution de noms sur un serveur GNU/Linux, on va procéder successivement aux opérations suivantes :

  1. vérifier les fichiers déjà installés,

  2. configurer les fichiers des zones administrées,

  3. configurer les fichiers de transaction sécurisée pour rndc,

  4. démarrer et tester le service serveur.

Fichiers déjà installés

Vous devez normalement avoir déjà les fichiers suivants :

  1. /etc/bind/named.conf, fichier de déclaration des fichiers de ressources

  2. /etc/bind/db.127, zone locale reverse

  3. /etc/bind/db.0, zone locale de broadcast

  4. /etc/bind/db.255, zone locale de broadcast

  5. db.local, zone directe locale

  6. db.root, fichiers des serveurs racine

Le contenu de tous ces fichiers et commentaires se trouve en annexe.

Vous avez également des fichiers particuliers : rndc.key, rndc.conf. rndc, est un outil qui permet de passer des commandes à distance à un serveur de nom. Nous porterons une attention toute particulière à ces fichiers, à leur rôles et à l'utilité de rndc.

Il va suffire de rajouter les fichiers manquants à la zone administrée.

rndc, le fichier de configuration, le fichier de clé

rndc est un outil qui permet de réaliser des transactions sécurisées avec un serveur de nom. Le mode de fonctionnement est dit à "clé partagée", c'est à dire que le client rndc et le serveur bind doivent avoir la même clé. Vous devrez donc configurer le fichier de configuration de rndc et le fichier named.conf avec les mêmes paramètres.

Ces fichiers et exemples sont également fournis en annexe. La clé doit être strictement identique dans les 2 fichiers. Si vous avez un message d'erreur à l'utilisation de rndc, vérifiez bien ces paramètres.

rndc supporte plusieurs paramètres pour passer des commandes au serveur de nom (halt, querylog, refresh, reload, stat...). Utilisez la commande "man rndc" pour en savoir plus.

Dans le fichier rndc, vous allez avoir besoin d'au moins 3 paramètres. rndc utilisera ces paramètres si rien n'est spécifié sur la ligne de commande. Dans les autres cas, vous pouvez passer les paramètres sur la ligne de commande.

Note : vous pouvez vous passer du système de clé mais ce n'est pas conseillé. Commentez tout ce qu'il y a dans le fichier named.conf et qui concerne la clé s'il y a déjà des choses. Renommez le fichier rndc.conf en rndc.conf.orig, ça devrait fonctionner. Vous pouvez tester cela en faisant un /etc/init.d/bind restart. Vous ne devriez pas avoir de message d'erreur.

#Description du serveur et de la clé utilisés par défaut.
#Ici on utilise par défaut le serveur local, avec la clé key-name
   options {
     default-server  localhost;
     default-key     "<key-name>";
   };

Il est possible de dire quelle clé utiliser en fonction d'un serveur donné.

   server localhost {
     key  "<key-name>";
   };

Enfin il reste à définir la ou les clés avec leur noms et leurs valeurs.

   key "<key-name>" {
     algorithm hmac-md5;
     secret "<key-value>";
   };

Pour créer une nouvelle clé, utilisez la commande :

dnssec-keygen -a hmac-md5 -b <bit-length> -n HOST <key-file-name>

#Ici on génère une clé de 512 bits dans un fichier maCLE
dnssec-keygen -a hmac-md5 -b 512 -n HOST maCLE

Le fichier named.conf doit connaître la clé utilisée par le client,

// secret must be the same as in /etc/rndc.conf
key "key" {
        algorithm       hmac-md5;
        secret
"c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};

mais doit également comprendre les paramètres qui définissent les machines clientes autorisées à passer des commandes avec une directive controls.

controls {
     inet 127.0.0.1 allow { localhost; } keys { <key-name>; };
};

# Ici on peut passer des commandes à partir de n'importe quelle machine
controls {
    inet 127.0.0.1 allow { any; } keys { "key"; };
};

# Ici on peut passer des commandes localement
controls {
    inet 127.0.0.1 allow { localhost; } keys { "key"; };
};

Procédure de configuration du serveur

L'installation a copié les fichiers. Sur une configuration simple vous allez avoir 3 fichiers à créer ou à modifier sur le serveur primaire :

  • /etc/bind/named.conf (fichier de configuration globale du service DNS du serveur de noms primaire),

  • /etc/bind/db.foo.org qui contiendra la description de la correspondance nom-adresse de toutes les machines du réseau

  • /etc/bind/db.foo.org.rev qui contiendra la correspondance inverse adresse-nom (pour la résolution inverse de nom in-addr.arpa).

Configurer les fichiers

Vous pouvez configurer le serveur manuellement, c'est à dire créer les fichiers à l'aide d'un éditeur de texte ou à l'aide d'un outil de configuration graphique. En général on n'installe jamais d'interface graphique sur un serveur pour des questions de sécurité. Nous allons donc créer les fichiers complètement. La configuration est réalisable également à distance avec des requêtes HTTP grâce à des outils comme webmin.

Configuration du DNS manuellement

Le fichier racine pour la configuration du serveur de noms est le fichier /etc/bind/named.conf. Ce fichier est lu au démarrage du service et donne la liste des fichiers qui définissent la base de données pour la zone.

Le fichier named.conf

Voir annexe.

Le fichier db.foo.org

Voir annexe.

Le paramètre @, signifie qu'il s'agit du domaine "foo.org" (le nom tapé après le mot " zone " dans le fichier de configuration named.conf). Le paramètre "IN", signifie qu'il s'agit d'un enregistrement de type internet. Notez la présence d'un point (.) après le nom des machines pleinement qualifiés. Sans celui-ci, le nom serait " étendu ". Par exemple, ns1.foo.org (sans point) serait compris comme ns1.foo.org.foo.org (on rajoute le nom de domaine en l'absence du point terminal). Le point (.) terminal permet de signifier que le nom est pleinement qualifié.

Le fichier db.foo.org.rev

Voir annexe.