« Installation et configuration de bind9 » : différence entre les versions

De Linux Server Wiki
Aller à la navigation Aller à la recherche
 
(27 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Nous allons voir comment installer bind9 sous debian lenny écoutant l'ipv4 213.186.47.110 et l'ipv6 2001:41d0:1:d6e::110.
[[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 csnu.org et ayant comme dns secondaire 87.98.136.217
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 "csnu.org" {
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/csnu.org.hosts";
         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 "csnu.org"{
zone "domain.tld"{
         type slave;
         type slave;
         file "/var/cache/bind/slave/csnu.org";
         file "/var/cache/bind/slave/domain.tld";
         masters {
         masters {
                 213.186.47.110;
                 213.186.47.110;
         };
         };
         allow-query { any; };
         allow-query { any; };
         notify yes;
         notify no;
};
};
</pre>
</pre>


Enfin, créez le fichier <code>/srv/bind/csnu.org.hosts</code> qui contiendra la zone dns :
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/csnu.org.hosts
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
csnu.org.  IN      SOA    core.csnu.org. postmaster.csnu.org. (
domain.tld.  IN      SOA    srv.domain.tld. postmaster.domain.tld. (
                         2008052803 ; Serial
                         2008052803 ; Serial
                         21600 ; Refresh
                         14400 ; Refresh
                         3600 ; Retry
                         3600 ; Retry
                         604800 ; Expire
                         604800 ; Expire
                         3600 ) ; Minimum
                         3600 ) ; Minimum
;global zone info
;global zone info
csnu.org.      IN      NS      core.csnu.org.
domain.tld.      IN      NS      srv.domain.tld.
csnu.org.      IN      NS      onyx.csnu.org.
domain.tld.      IN      NS      srv2.domain.tld.
ns.csnu.org.   IN      A      213.186.47.110
srv.domain.tld. IN      A      213.186.47.110
ns.csnu.org.   IN      AAAA    2001:41d0:1:d6e::110
srv.domain.tld. IN      AAAA    2001:41d0:1:d6e::110
ns2.csnu.org.  IN      A      87.98.136.217
srv2.domain.tld. IN      A      213.186.47.111
core.csnu.org. IN      A      213.186.47.110
core.csnu.org.  IN      AAAA    2001:41d0:1:d6e::110
</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=
=Mode debug=
Ligne 116 : Ligne 162 :
</pre>
</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
<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 à 18: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

DNSsec