Ceci est une ancienne révision du document !
Table des matières
BIND
Ou DNS ou “named”
installer
package
# aptitude update # aptitude install bind9
configurer
Par defaut, je crois que tout est permis.
mon reseau
Restreindre les droits d'interrogation…
Pour cela, il faut editer le fichier /etc/bind/named.conf.options
, et:
Configurer son reseau:
Limiter les droits:
// zone local acl mylan { 127.0.0.1; 10.22.0.0/24; };
Où “10.22.0.0/24” est “mon” reseau local.
Puis dans la section “options”, faire en sorte d'avoir:
allow-notify { none; }; allow-transfer { none; }; allow-query { mylan; }; allow-recursion { mylan; };
Ainsi, il n'y a que “mylan” qui peut utiliser “mon” DNS, et les autres droits seront definis ultérieurement au cas par cas.
log
Pour qu'on puisse voir des trucs pertinents dans les logs, on peut ajouter dans le fichier /etc/bind/named.conf.options
:
// <tj> logging { category "unmatched" { "null"; }; category "default" { "default_syslog"; "default_debug"; }; }; // </tj>
Zone
master
il faut preparer les fichiers “db” au préalable ! |
Il faut editer le fichier: /etc/bind/named.conf.local
On declare une zone locale, dont on est maitre.
Soit la zone de conversion “nom” en “ip”:
zone "thierry-jaouen.local" { type master; file "/etc/bind/LOCAL/db.thierry-jaouen.local"; allow-query { mylan; }; };
Soit la zone inverse, de conversion “ip” en “nom”:
zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/LOCAL/db.192.168.0"; allow-query { mylan; }; };
En fait, la section “allow-query” est inutile parce ce que redondante avec la declaration de la section “options”.
slave
il faut preparer les fichiers “db” au préalable ! |
Il faut editer le fichier: /etc/bind/named.conf.local
Imaginons un autre serveur DNS, qui va relayer les zone “master” vu ci-dessus.
Pour cela, on declare un “slave”, c'est a dire une zone qui va recuperer les informations auprés d'un “master”.
sur le SLAVE
zone "thierry-jaouen.local" { type slave; file "/etc/bind/SLAVE/db.thierry-jaouen.local"; masters { <ADRESSE_DU_MAITRE>; }; }; zone "0.168.192.in-addr.arpa" { type slave; file "/etc/bind/SLAVE/db.192.168.0"; masters { <ADRESSE_DU_MAITRE>; }; };
Bien s'assurer que le user “bind” a le droit d'ecrire dans le repertoire “SLAVE” |
Si nécessaire:
# cd /etc/bind # mkdir SLAVE # chown root:bind SLAVE # chmod g+sw SLAVE # ls SLAVE -ld drwxrwsr-x 2 root bind 4096 2009-01-25 01:32 SLAVE
sur le MASTER
Modifier les zones concernés, afin qu'elles autorisent le “transfert” de zone ! Donc, ajouter:
allow-transfer { <ADRESSE_IP_DU_SLAVE>; };
La securité tient simplement au adresse IP ! c'est mince. Voir la section suivant pour l'authentification. |
TSIG
authentifier un slave
generer key
Dans un répertoire du maitre (ou de l'esclave), taper ça:
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST rndc-key
Ca va créer 2 fichiers avec de droles de noms (par exemple):
-rw------- 1 root bind 81 2009-01-27 23:14 Krndc-key.+157+26049.private -rw------- 1 root bind 52 2009-01-27 23:14 Krndc-key.+157+26049.key
Mais peu importe: on veut juste extraire la clé qui est dedans, et puis effacer ces fichiers ! Exemple:
... <snip> ... Key: 0jnu3SdsMvzzlmTDPYRceA== ... <snip> ...
fichier key
Sur le maitre et sur le slave, on peut faire comme cela:
# cd /etc/bind # mkdir keys # chown root:bind keys # chmod o-rx keys # cd keys
Creer un fichier , par exemple bindtest-netcave.key
et y mettant dedans:
key "bindtest-netcave" { algorithm hmac-md5; secret "0jnu3SdsMvzzlmTDPYRceA=="; };
named.conf.local
Inserer enfin la configuration suivante dans bind
(dans “named.conf.local” ou ailleurs) :
include "/etc/bind/keys/bindtest-netcave.key";
et puis pour le maitre:
server <IP_DU_SLAVE> { keys { bindtest-netcave; }; };
sinon pour l'esclave:
server <IP_DU_MAITRE> { keys { bindtest-netcave; }; };
Le reste ne change pas. C'est a dire qu'on a toujours, un peu plus loin (juste aprés par exemple):
Pour l'esclave par exemple:
zone "underworld.local" { type master; file "/etc/bind/LOCAL/db.underworld.local"; allow-query { 10.22.0/24; }; allow-transfer { <IP_DU_MAITRE>; }; };
Si j'ai bien compris, la declaration “server” s'applique partout où l'on retrouve la même IP…?
Tips
reload etc...
Il y a 2 manières de recharger la config:
# /etc/init.d/bind9 reload Reloading domain name service...: bind.
Ou bien:
# rndc reload server reload successful