« Installation et configuration de bind9 » : différence entre les versions
(Page créée avec « Nous allons voir comment installer bind9 sous debian lenny écoutant l'ipv4 213.186.47.110 et l'ipv6 2001:41d0:1:d6e::110. =Installation= Installez bind9 et bind9-host. bin... ») |
|||
(28 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
Nous allons voir comment installer bind9 sous debian | [[Category:serveur]] | ||
[[Category:debian]] | |||
Nous allons voir comment installer bind9 sous debian squeeze écoutant l'ipv4 213.186.47.110 et l'ipv6 2001:41d0:1:d6e::110. | |||
=Installation= | =Installation= | ||
Installez bind9 et bind9-host. bind9-host est l'un des paquets ajoutant la commande host pour résoudre une ip ou un domaine. | Installez bind9 et bind9-host. bind9-host est l'un des paquets ajoutant la commande host pour résoudre une ip ou un domaine. | ||
<pre>aptitude install bind9 bind9-host</pre> | <pre>aptitude install bind9 bind9-host dnsutils</pre> | ||
Depuis une mise à jour de sécurité, bind9 doit avoir accès au fichier <code>/etc/ssl/openssl.cnf</code> : | Depuis une mise à jour de sécurité, bind9 doit avoir accès au fichier <code>/etc/ssl/openssl.cnf</code> : | ||
Ligne 46 : | Ligne 48 : | ||
notify-source 213.186.47.110; | notify-source 213.186.47.110; | ||
notify-source-v6 2001:41d0:1:d6e::110; | notify-source-v6 2001:41d0:1:d6e::110; | ||
dnssec-enable yes; | |||
dnssec-validation auto; | |||
dnssec-lookaside auto; | |||
</pre> | </pre> | ||
Ligne 51 : | Ligne 57 : | ||
Pensez à supprimer ou commenter (avec //) la ligne <code>listen-on-v6 { any; };</code> à la fin du fichier <code>/etc/bind/named.conf.options</code> | Pensez à supprimer ou commenter (avec //) la ligne <code>listen-on-v6 { any; };</code> à la fin du fichier <code>/etc/bind/named.conf.options</code> | ||
Comme je suis gentil, je vais vous détailler un peu tout ça : | |||
* <code>allow-query</code> : spécifie les IPs ayant la permission d'interroger votre serveur DNS. Une telle option peut aussi être placée dans la configuration d'une zone dns, dans ce cas, la directive globale est ignorée pour la zone en question. Attention, si vous ne spécifiez pas cette directive, tous le monde pourra se servir de votre serveur bind pour résoudre des DNS. | |||
* <code>allow-recursion</code> : spécifie les IPs ayant la permission de faire des requêtes récursives sur votre serveur DNS. Attention, si vous ne spécifiez pas cette directive, tous le monde pourra se servir de votre serveur bind pour réaliser des requêtes récursives. | |||
* <code>allow-query-cache</code> de même que précédemment mais pour le cache de votre DNS. Cette option évitera les attaques sur votre bind. | |||
* <code>allow-notify</code> : spécifie les IPs autorisés à notifier votre serveur bind d'un changement dans une zone DNS qu'il gère en mode esclave en plus du DNS maître. Cette option peut aussi être déclarée dans la configuration d'une zone dns, dans ce cas l'option globale est ignorée pour la zone en question. Cette option n'est utile que pour une zone esclave (slave). | |||
* <code>allow-transfer</code> : spécifie les IPs autorisés à demander un transfert complet d'une zone dns. Attention, si vous ne spécifiez pas cette directive, tous le monde pourra demander le transfert complet de vos zones DNS. Cette option peut aussi être utilisée dans la configuration d'une zone DNS en mode maître. Dans ce cas, on y indique généralement les IPs des serveurs dns secondaires (esclaves). | |||
* <code>listen-on(-v6)</code> : spécifie les IPs sur lesquels le serveur DNS doit écouter pour les requêtes. | |||
* <code>transfer-source(-v6</code> : spécifie les IPs à utiliser lors de l'initiation d'un transfert de zone. Veillez à ne pas utiliser des IPs locales. | |||
* <code>notify-source(-v6)</code> : spécifie les IPs à utiliser pour notifier un changement dans une zone dns. Veillez à ne pas utiliser des IPs locales. | |||
Enfin, modifiez votre fichier <code>/etc/resolv.conf</code> pour utiliser votre serveur bind : | |||
<pre> | |||
nameserver ::1 | |||
nameserver 127.0.0.1 | |||
nameserver 2001:41d0:1:d6e::110 | |||
nameserver 213.186.47.110 | |||
</pre> | |||
=Création d'une zone= | =Création d'une zone= | ||
Nous allons ajouter la zone dns du domaine | Nous allons ajouter la zone dns du domaine domain.tld et ayant comme dns secondaire 87.98.136.217 | ||
Ajoutez les lignes suivantes dans le fichier <code>/etc/bind/named.conf</code> : | Ajoutez les lignes suivantes dans le fichier <code>/etc/bind/named.conf.local</code> : | ||
<pre> | <pre> | ||
zone " | zone "domain.tld" { | ||
type master; | type master; | ||
//autoriser le dns secondaire à copier la zone | //autoriser le dns secondaire à copier la zone | ||
Ligne 66 : | Ligne 90 : | ||
allow-query { any; }; | allow-query { any; }; | ||
notify yes; | notify yes; | ||
file "/srv/bind/ | file "/srv/bind/domain.tld"; | ||
}; | }; | ||
</pre> | </pre> | ||
Ligne 72 : | Ligne 96 : | ||
A titre d'information, voici les lignes à ajouter sur le serveur dns secondaire : | A titre d'information, voici les lignes à ajouter sur le serveur dns secondaire : | ||
<pre> | <pre> | ||
zone " | zone "domain.tld"{ | ||
type slave; | type slave; | ||
file "/var/cache/bind/slave/ | file "/var/cache/bind/slave/domain.tld"; | ||
masters { | masters { | ||
213.186.47.110; | 213.186.47.110; | ||
}; | }; | ||
allow-query { any; }; | allow-query { any; }; | ||
notify | notify no; | ||
}; | }; | ||
</pre> | </pre> | ||
Enfin, créez le fichier <code>/srv/bind/ | Enfin, créez le fichier <code>/srv/bind/domain.tld</code> qui contiendra la zone dns : | ||
<pre> | <pre> | ||
mkdir /srv/bind | mkdir /srv/bind | ||
touch /srv/bind/ | touch /srv/bind/domain.tld | ||
chgrp -R bind /srv/bind | chgrp -R bind /srv/bind | ||
</pre> | </pre> | ||
Ligne 93 : | Ligne 117 : | ||
<pre> | <pre> | ||
$ttl 3600 | $ttl 3600 | ||
domain.tld. IN SOA srv.domain.tld. postmaster.domain.tld. ( | |||
2008052803 ; Serial | 2008052803 ; Serial | ||
14400 ; Refresh | |||
3600 ; Retry | 3600 ; Retry | ||
604800 ; Expire | 604800 ; Expire | ||
3600 ) ; Minimum | 3600 ) ; Minimum | ||
;global zone info | ;global zone info | ||
domain.tld. IN NS srv.domain.tld. | |||
domain.tld. IN NS srv2.domain.tld. | |||
srv.domain.tld. IN A 213.186.47.110 | |||
srv.domain.tld. IN AAAA 2001:41d0:1:d6e::110 | |||
srv2.domain.tld. IN A 213.186.47.111 | |||
</pre> | </pre> | ||
Si vous utilisez <code>apparmor</code>, ajoutez ces lignes dans <code>/etc/apparmor.d/local/usr.sbin.named</code> : | |||
<pre> | |||
/srv/bind/ r, | |||
/srv/bind/* r, | |||
</pre> | |||
=Bind utilise beaucoup de CPU= | |||
Essayez d'ajouter la ligne de configuration suivante : | |||
<pre>managed-keys-directory "/var/cache/bind/";</pre> | |||
Cela peut se produire si vous avez changé la directory dans /etc/bind/named.conf.options vers un dossier sur lequel bind n'a pas le droit en écriture | |||
=Bind DNSSEC NTA= | |||
NTA : Negative Trust Anchor : permet de désactiver la vérification DNSSEC pour une durée déterminée pour un domaine. | |||
Pour ajouter une NTA : | |||
<pre> | |||
rndc nta -l 60 fail01.dnssec.works | |||
rndc nta -dump | |||
</pre> | |||
Un fichier <code>_default.nta</code> est créé dans <code>/var/cache/bind/</code> afin de conserver les NTA en cas de reboot/redémarrage de bind | |||
=Mode debug= | |||
Bind9 étant par défaut assez peu bavard et ce même s'il n'arrive pas à se lancer, voici comment le lancer en mode debug : | |||
<pre> | |||
named -u bind -d9 -g -c /etc/bind/named.conf | |||
</pre> | |||
<code>-u</code> défini l'utilisateur avec lequel il faut le lancer (c'est l'utilisateur bind par défaut sous debian), <code>-d9</code> est le niveau de debug, <code>-g</code> permet de lancer bind en console, <code>-c</code> défini le fichier de configuration | |||
=vérifier une zone= | |||
<pre> | |||
named-checkzone domain.tld /chemin/vers/le/fichier/contenant/la/zone/domain.tld | |||
</pre> | |||
=DNSsec= |
Dernière version du 3 novembre 2019 à 17:42
Nous allons voir comment installer bind9 sous debian squeeze écoutant l'ipv4 213.186.47.110 et l'ipv6 2001:41d0:1:d6e::110.
Installation
Installez bind9 et bind9-host. bind9-host est l'un des paquets ajoutant la commande host pour résoudre une ip ou un domaine.
aptitude install bind9 bind9-host dnsutils
Depuis une mise à jour de sécurité, bind9 doit avoir accès au fichier /etc/ssl/openssl.cnf
:
chmod o+r /etc/ssl/openssl.cnf
Configuration
Éditez le fichier /etc/bind/named.conf.options
et ajoutez y les lignes suivantes :
allow-query { 127.0.0.1; 213.186.47.110; ::1; 2001:41d0:1:d6e::110; }; allow-recursion { 127.0.0.1; 213.186.47.110; ::1; 2001:41d0:1:d6e::110; }; allow-query-cache { 127.0.0.1; 213.186.47.110; ::1; 2001:41d0:1:d6e::110; }; version "[SECURED]"; allow-notify { 127.0.0.1; 213.186.47.110; ::1; 2001:41d0:1:d6e::110; }; //interdiction du transfère complet de zones allow-transfer {"none";}; listen-on { 127.0.0.1; 213.186.47.110; }; listen-on-v6 { ::1; 2001:41d0:1:d6e::110; }; transfer-source 213.186.47.110; transfer-source-v6 2001:41d0:1:d6e::110; notify-source 213.186.47.110; notify-source-v6 2001:41d0:1:d6e::110; dnssec-enable yes; dnssec-validation auto; dnssec-lookaside auto;
Étant donné que mon serveur dispose de plusieurs adresses ips, les directives listen-on
(-v6
), transfer-source
(-v6
) et notify-source
(-v6
) permettent de spécifier les ips à utiliser. Si vous faites de même, il faudra peut-être que vous adaptiez votre fichier /etc/resolv.conf
pour qu'il corresponde à ces ips.
Pensez à supprimer ou commenter (avec //) la ligne listen-on-v6 { any; };
à la fin du fichier /etc/bind/named.conf.options
Comme je suis gentil, je vais vous détailler un peu tout ça :
allow-query
: spécifie les IPs ayant la permission d'interroger votre serveur DNS. Une telle option peut aussi être placée dans la configuration d'une zone dns, dans ce cas, la directive globale est ignorée pour la zone en question. Attention, si vous ne spécifiez pas cette directive, tous le monde pourra se servir de votre serveur bind pour résoudre des DNS.allow-recursion
: spécifie les IPs ayant la permission de faire des requêtes récursives sur votre serveur DNS. Attention, si vous ne spécifiez pas cette directive, tous le monde pourra se servir de votre serveur bind pour réaliser des requêtes récursives.allow-query-cache
de même que précédemment mais pour le cache de votre DNS. Cette option évitera les attaques sur votre bind.allow-notify
: spécifie les IPs autorisés à notifier votre serveur bind d'un changement dans une zone DNS qu'il gère en mode esclave en plus du DNS maître. Cette option peut aussi être déclarée dans la configuration d'une zone dns, dans ce cas l'option globale est ignorée pour la zone en question. Cette option n'est utile que pour une zone esclave (slave).allow-transfer
: spécifie les IPs autorisés à demander un transfert complet d'une zone dns. Attention, si vous ne spécifiez pas cette directive, tous le monde pourra demander le transfert complet de vos zones DNS. Cette option peut aussi être utilisée dans la configuration d'une zone DNS en mode maître. Dans ce cas, on y indique généralement les IPs des serveurs dns secondaires (esclaves).listen-on(-v6)
: spécifie les IPs sur lesquels le serveur DNS doit écouter pour les requêtes.transfer-source(-v6
: spécifie les IPs à utiliser lors de l'initiation d'un transfert de zone. Veillez à ne pas utiliser des IPs locales.notify-source(-v6)
: spécifie les IPs à utiliser pour notifier un changement dans une zone dns. Veillez à ne pas utiliser des IPs locales.
Enfin, modifiez votre fichier /etc/resolv.conf
pour utiliser votre serveur bind :
nameserver ::1 nameserver 127.0.0.1 nameserver 2001:41d0:1:d6e::110 nameserver 213.186.47.110
Création d'une zone
Nous allons ajouter la zone dns du domaine domain.tld et ayant comme dns secondaire 87.98.136.217
Ajoutez les lignes suivantes dans le fichier /etc/bind/named.conf.local
:
zone "domain.tld" { type master; //autoriser le dns secondaire à copier la zone allow-transfer { 87.98.136.217; }; allow-query { any; }; notify yes; file "/srv/bind/domain.tld"; };
A titre d'information, voici les lignes à ajouter sur le serveur dns secondaire :
zone "domain.tld"{ type slave; file "/var/cache/bind/slave/domain.tld"; masters { 213.186.47.110; }; allow-query { any; }; notify no; };
Enfin, créez le fichier /srv/bind/domain.tld
qui contiendra la zone dns :
mkdir /srv/bind touch /srv/bind/domain.tld chgrp -R bind /srv/bind
Voici un exemple de zone dns :
$ttl 3600 domain.tld. IN SOA srv.domain.tld. postmaster.domain.tld. ( 2008052803 ; Serial 14400 ; Refresh 3600 ; Retry 604800 ; Expire 3600 ) ; Minimum ;global zone info domain.tld. IN NS srv.domain.tld. domain.tld. IN NS srv2.domain.tld. srv.domain.tld. IN A 213.186.47.110 srv.domain.tld. IN AAAA 2001:41d0:1:d6e::110 srv2.domain.tld. IN A 213.186.47.111
Si vous utilisez apparmor
, ajoutez ces lignes dans /etc/apparmor.d/local/usr.sbin.named
:
/srv/bind/ r, /srv/bind/* r,
Bind utilise beaucoup de CPU
Essayez d'ajouter la ligne de configuration suivante :
managed-keys-directory "/var/cache/bind/";
Cela peut se produire si vous avez changé la directory dans /etc/bind/named.conf.options vers un dossier sur lequel bind n'a pas le droit en écriture
Bind DNSSEC NTA
NTA : Negative Trust Anchor : permet de désactiver la vérification DNSSEC pour une durée déterminée pour un domaine.
Pour ajouter une NTA :
rndc nta -l 60 fail01.dnssec.works rndc nta -dump
Un fichier _default.nta
est créé dans /var/cache/bind/
afin de conserver les NTA en cas de reboot/redémarrage de bind
Mode debug
Bind9 étant par défaut assez peu bavard et ce même s'il n'arrive pas à se lancer, voici comment le lancer en mode debug :
named -u bind -d9 -g -c /etc/bind/named.conf
-u
défini l'utilisateur avec lequel il faut le lancer (c'est l'utilisateur bind par défaut sous debian), -d9
est le niveau de debug, -g
permet de lancer bind en console, -c
défini le fichier de configuration
vérifier une zone
named-checkzone domain.tld /chemin/vers/le/fichier/contenant/la/zone/domain.tld