Ou DNS ou “named”
# aptitude update # aptitude install bind9
Par defaut, je crois que tout est permis.
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.
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>
![]() |
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”.
![]() |
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”.
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>; }; };
![]() |
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
Modifier les zones concernés, afin qu'elles autorisent le “transfert” de zone ! Donc, ajouter:
allow-transfer { <ADRESSE_IP_DU_SLAVE>; };
![]() Voir la section suivant pour l'authentification. |
Lien: http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch10_03.htm
En l'etat, les mises a jour des zones seront faites en fonction du paramètre “refresh” (dans le SOA)…
Si on veut une “notification” rapide de la mise a jour d'une zone, alors, dans le fichier “SOA” du maitre, il faut ajouter les “slaves”. Par exemple:
SOA .... ... NS ns.thierry-jaouen.fr NS ns-slave1.xxxxxxx.xxx NS ns-slave2.xxxxxxx.xxx
“ns-slave1” et “ns-slave2” seront notifiés des modifications du maitres: en retour, ils devront interroger le maître pour ce mettre a jour.
Lorsqu'on a un “slave” intermediare qui doit notifier une modification a un autre slave, en cascade, il faut ajouter dans la déclaration de cette zone “slave”:
type slave; ... also-notify { ip-d-un-autre-slave; }; ...
Le but: déléguer un sous domaine a un autre DNS, ainsi que le reverse.
Exemple de sous-domaine:
univers.thierry-jaouen.local
Afin que ca fonctionne bien, surtout pour le reverse , on doit attribuer une tranche d'un reseau, comme:
192.168.16.192/28
… ce qui délègue l'usage des ip 192.168.16.192 a 192.168.16.207.
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> ...
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=="; };
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 le maitre par exemple:
zone "underworld.local" { type master; file "/etc/bind/LOCAL/db.underworld.local"; allow-query { 10.22.0/24; }; allow-transfer { <IP_DU_SLAVE>; }; };
Si j'ai bien compris, la declaration “server” s'applique partout où l'on retrouve la même IP…?
Sans redemarrer:
# rndc flush
Lien: http://ubuntuforums.org/showthread.php?t=903651
Voir un etat du cache bind:
# rndc dumpdb -cache
Et regarder dans le fichier là:
/var/cache/bind/named_dump.db
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
Tester les perfs: http://www.bortzmeyer.org/performances-serveur-dns.html
Limiter les DoS: http://www.bortzmeyer.org/rate-limiting-dns-open-resolver.html