Informations de configuration
BIND sera configurer pour se
lancer dans une cage chroot en tant qu'utilisateur
non privilégié (named
). Cette
configuration est plus sécurisée dans la mesure où la
compromission d'un DNS ne peut toucher que quelques fichiers du
répertoire de la variable HOME
de
l'utilisateur named
.
Créez l'utilisateur et le groupe non privilégiés named
:
groupadd -g 20 named &&
useradd -c "BIND Owner" -g named -s /bin/false -u 20 named &&
install -d -m770 -o named -g named /srv/named
Paramétrez des fichiers, des répertoires et des périphériques
dont a besoin BIND :
cd /srv/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /srv/named/dev/null c 1 3 &&
mknod /srv/named/dev/random c 1 8 &&
chmod 666 /srv/named/dev/{null,random} &&
mkdir /srv/named/etc/namedb/pz &&
cp /etc/localtime /srv/named/etc
Puis, générez une clé à utiliser dans les fichiers named.conf
et rdnc.conf
en utilisant la commande rndc-confgen :
rndc-confgen -r /dev/urandom -b 512 | \
grep -m 1 "secret" | cut -d '"' -f 2
Créez le fichier named.conf
à
partir duquel named
lira l'emplacement des fichiers de zone, le serveur de DNS
racine, et les clés DNS sécurisées :
cat > /srv/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 "<Insert secret from rndc-confgen's output here>
";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
// Bind 9 journalise maintenant via syslog (sauf le débogage).
// Ce sont les règles de journalisation par défaut.
logging {
category default { default_syslog; default_debug; };
category unmatched { null; };
channel default_syslog {
syslog daemon; // send to syslog's daemon
// facility
severity info; // only send priority info
// et higher
};
channel default_debug {
file "named.run"; // write to named.run in
// the working directory
// Note: stderr is used instead
// of "named.run"
// if the server is started
// with the '-f' option.
severity dynamic; // log at the server's
// current debug level
};
channel default_stderr {
stderr; // writes to stderr
severity info; // only send priority info
// et higher
};
channel null {
null; // toss anything sent to
// this channel
};
};
EOF
Créez le fichier rndc.conf
avec les
commandes suivantes :
cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
secret
"<Insert secret from rndc-confgen's output here>
";
};
options {
default-server localhost;
default-key rndc_key;
};
EOF
Le fichier rndc.conf
contient des
informations de contrôle des opérations named avec l'outil rndc.
Créez un fichier de zone ayant le contenu suivant :
cat > /srv/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 bien attention à vous assurer qu'il n'y a pas de grands
espaces dans ce fichier.
cat > /srv/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 192.228.79.201
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 199.7.83.42
M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
EOF
Le fichier root.hints
est une liste
de serveurs de DNS racines. Il faut mettre régulièrement à jour
ce fichier avec l'outil dig. Vous pouvez obtenir une
copie actuelle de root.hints sur ftp://rs.internic.net/domain/named.root.
Consultez le the BIND 9 Administrator Reference
Manual (manuel de référence de l'administrateur BIND 9) pour
des détails.
Créez ou modifiez resolv.conf
pour
utiliser le nouveau serveur de DNS avec les commandes
suivantes :
Note
Remplacez <votredomaine.com>
par
votre propre nom de domaine valide.
cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search <votredomaine.com>
nameserver 127.0.0.1
EOF
Réglez les droits de la cage chroot avec la commande
suivante :
chown -R named.named /srv/named
Tester BIND
Testez la nouvelle installation de BIND 9. Cherchez tout d'abord l'adresse de
l'hôte local avec dig:
dig -x 127.0.0.1
Maintenant essayez une recherche de nom externe, en observant la
différence de vitesse dans des recherches répétées du fait de la
mise en cache. Lancez la commande dig deux fois sur la même
adresse :
dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org
Vous pouvez voir presque des résultats instantanés avec les
recherches de mise en cache nommées. Consultez le Administrator Reference
Manual (manuel de référence de l'administrateur
BIND) qui se trouve dans
doc/arm/Bv9ARM.html
dans
l'arborescence des sources du paquet, pour plus d'options de
configuration.