BIND 9.2.2

Introduction à BIND 9.2.2

Site de téléchargement (HTTP):       
Site de téléchargement (FTP):        ftp://ftp.isc.org/isc/bind9/9.2.2/bind-9.2.2.tar.gz
Version utilisée:                   9.2.2
Taille du package:                   4,8 Mo
Estimation de l'espace disque requis:  38 Mo

Le package Bind apporte un serveur DNS et des utilitaires client.

Installation de BIND

Installez BIND en lançant les commandes suivantes:

./configure --prefix=/usr &&
make &&
make install

Configurer BIND

Nous configurerons BIND de lancer dans une prison chroot en tant qu'utilisateur non privilégié (named). Cette configuration est plus sécurisé qu'une compromission dûe à DNS peut affecter seulement quelques fichiers dans le répertoire $HOME de l'utilisateur named.

Tout d'abord, nous mettons en place quelques fichiers et répertoires nécessaires à BIND:

groupadd -g 200 named &&
useradd -m -g named -u 200 -s /bin/false named &&
cd /home/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /home/named/dev/null c 1 3 &&
mknod /home/named/dev/random c 1 8 &&
chmod 666 /home/named/dev/{null,random} &&
mkdir /home/named/etc/namedb/pz &&
cp /etc/localtime /home/named/etc

Fichiers de configuration

named.conf, root.hints, 127.0.0, rndc.conf

Créez le fichier named.conf avec les commandes suivantes:

cat > /home/named/etc/named.conf << "EOF"
 options {
     directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";
       
 };
 controls {
     inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
 };
 key "rndc_key" {
     algorithm hmac-md5;
     secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
 };
 zone "." {
     type hint;
     file "root.hints";
 };
 zone "0.0.127.in-addr.arpa" {
     type master;
     file "pz/127.0.0";
 };
EOF

Créez un fichier zone avec le contenu suivant:

cat > /home/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Créez le fichier root.hints avec les commandes suivantes:

Note : Faites attention et assurez-vous qu'il n'existe aucun espace final dans ce fichier.

cat > /home/named/etc/namedb/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     6D  IN      A       128.9.0.107
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     6D  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     6D  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     6D  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
EOF

Créez rndc.conf avec les commandes suivantes:

cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
    secret
    "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
    };
options {
    default-server localhost;
    default-key    rndc_key;
};
EOF

Créez ou modifiez resolv.conf pour utiliser un nouveau serveur de noms avec les commandes suivantes:

Note : Remplacez yourdomain.com avec votre propre nom de domaine valide.

cp /etc/resolv.conf /etc/resolv.conf.bak
cat > /etc/resolv.conf << "EOF"
search yourdomain.com
nameserver 127.0.0.1
EOF

Indiquez les permissions sur la prison chroot avec la commande suivante:

chown -R named.named /home/named

Créez le script de démarrage BIND:

cat > /etc/rc.d/init.d/bind << "EOF"
#!/bin/bash
# Début $rc_base/init.d/bind
# Basé sur le script sysklogd de LFS-3.1 et précédents.
# Réécrit par Gerard Beekmans  - gerard@linuxfromscratch.org
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
	start)
		echo "Starting named..."
		loadproc /usr/sbin/named -u named -t /home/named -c \
		        /etc/named.conf
		;;
	stop)
		echo "Stopping named..."
		killproc /usr/sbin/named
		;;
	restart)
		$0 stop
		sleep 1
		$0 start
		;;
   reload)
                echo "Reloading named..."
                /usr/sbin/rndc -c /etc/rndc.conf reload
                ;;
			       		
	status)
		statusproc /usr/sbin/named
		;;
	*)
		echo "Usage: $0 {start|stop|restart|status}"
		exit 1
		;;
esac
# Fin $rc_base/init.d/bind
EOF

Ajoutez les liens symboliques des niveaux d'exécution:

chmod 754 /etc/rc.d/init.d/bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc0.d/K90bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc1.d/K90bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc2.d/K90bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc3.d/S90bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc4.d/S90bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc5.d/S90bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc6.d/K90bind

Alors, lancez BIND avec le nouveau script de démarrage:

/etc/rc.d/init.d/bind start

Tester BIND

Testez la nouvelle installation de BIND 9. Tout d'abord, recherchez l'adresse locale de l'hote avec dig:

dig -x 127.0.0.1

Maintenant, essayez la recherche de noms externes, en prenant note de la différence de vitesse dans des recherches répétées grace au cache. Lancez la commande dig deux fois sur la meme adresse:

dig beyond.linuxfromscratch.org &&
dig beyond.linuxfromscratch.org
Vous pouvez voir des résultats pratiquement instantanés avec des recherches cachées de named. Consultez bind-9.2.2/doc/arm/Bv9ARM.html, le manuel de référence de l'administrateur de BIND pour plus d'options de configurations.

Explication de la configuration des commandes

groupadd -g 200 named
useradd -m -g named -u 200 -s /bin/false named
cd /home/named
mkdir -p dev etc/namedb/slave var/run
mknod /home/named/dev/null c 1 3
mknod /home/named/dev/random c 1 8
chmod 666 /home/named/dev/{null,random}
mkdir /home/named/etc/namedb/pz
cp /etc/localtime /home/named/etc
Créez l'utilisateur non privilégié et le groupe named, avec les fichiers périphériques que named accédera de l'intérieur de la prison chroot.

cat > /home/named/etc/named.conf << "EOF" : Créez le fichier de configuration BOND, d'où named lira l'emplacement des fichiers zone, noms de serveur root et clés DNS sécurisés.

cat > /home/named/etc/namedb/pz/127.0.0 << "EOF" : Créez un seul fichier zone.

cat > /home/named/etc/namedb/root.hints << "EOF" : Le fichier root.hints est une liste des noms de serveurs root. Ce fichier doit être mis à jour périodiquement avec l'utilitaire dig. Consultez le manuel de référence de l'administrateur BIND 9 pour plus de détails.

cat > /etc/rndc.conf << "EOF" : Le fichier rndc.conf contient l'information de contrôle les opérations de named avec l'utilitaire rndc.

cat > /etc/resolv.conf << "EOF" : Le fichier resolv.conf spécifiera l'hôte local (127.0.0.1) en tant que serveur de noms.

cat > /etc/rc.d/init.d/bind << "EOF" : Créez le script de démarrage pour BOND 9, utilisé pour lancer et arrêter le démon de serveur de noms, named.

Contenu

Le package BIND contient dig, host, rndc, rndc-confgen, named-checkconf, named-checkzone, lwresd, named, dnssec-signzone, dnssec-signkey, dnssec-keygen, dnssec-makekeyset et nsupdate.

Description

dig

dig interroge les serveurs DNS.

host

host est un utilitaire pour des recherches DNS.

rndc

rndc contrôle l'opération de BIND.

rndc-confgen

rndc-confgen génère les fichiers rndc.conf.

named-checkconf

named-checkconf vérifie la syntaxe des fichiers named.conf.

named-checkzone

named-checkzone vérifie la validité du fichier zone.

lwresd

lwresd est un serveur de noms réalisant un cache seul pour être utilisé par des processus locaux.

named

named est le démon du serveur de noms.

dnssec-signzone

dnssec-signzone génère des versions signées des fichiers zone.

dnssec-signkey

dnssec-signkey signe des ensembles de clés des fichiers zone.

dnssec-keygen

dnssec-keygen est un générateur de clés pour le DNS sécurisé.

dnssec-makekeyset

dnssec-makekeyset génère un ensemble de clés de un à plusieurs clés créées par dnssec-keygen.

nsupdate

nsupdate est utilisé pour soumettre des requêtes de mises à jour DNS.