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,pz} usr/lib/engines var/run/named &&
mknod /srv/named/dev/null c 1 3 &&
mknod /srv/named/dev/random c 1 8 &&
chmod 666 /srv/named/dev/{null,random} &&
cp /etc/localtime etc &&
touch /srv/named/managed-keys.bind &&
cp /usr/lib/engines/libgost.so usr/lib/engines &&
[ $(uname -m) = x86_64 ] && ln -sv lib usr/lib64
Le fichier rndc.conf
contient des
informations pour contrôler les opérations de named avec l'outil rndc. Générez une clé à
utiliser dans named.conf
et
rdnc.conf
avec la commande
rndc-confgen :
rndc-confgen -r /dev/urandom -b 512 > /etc/rndc.conf &&
sed '/conf/d;/^#/!d;s:^# ::' /etc/rndc.conf > /srv/named/etc/named.conf
Complétez 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";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.
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
// and 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
// and higher
};
channel null {
null; // toss anything sent to
// this channel
};
};
EOF
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 199.7.91.13
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 <yourdomain.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.