Bind9

De Wiki doc


BIND version 9 est un logiciel de serveur DNS. Il permet la résolution récursives de noms de domaines et sait faire autorité sur une zone locale en plus d'en déléguer.

Il est présent dans les dépôts de Debian Bullseye

apt install --no-install-recommends bind9

Configuration

Le point d'entré pour les fichiers de configuration du logiciel se chargeant d'inclure tous les autres est /etc/bind/named.conf. Ce sont les fichiers pointés par celui-ci qui devront être modifiés.

Générale

Le fichier de configuration générale permet d'agir notamment sur les sockets d'écoute, l'activation de certaines fonctions comme DNSSEC ou RPZ ainsi que les réseaux autorisés à utiliser les services de BIND.

cat /etc/bind/named.conf.options

Exemple de configuration :

options {
	directory "/var/cache/bind";
	dnssec-validation auto;

	listen-on-v6 { any; };

	// Activer le RPZ
	response-policy { zone "rpz"; };
	// BIND9 n'accepte que les requêtes venant des réseaux qu'il connaît (au sens route directement connecté). Soit on défini une liste comme suit de réseaux autorisé, soit on autorise tout avec "any".
	allow-query { any; };
	// allow-query { 192.168.1.0/24;192.168.2.0/24;192.168.208.0/24;172.16.10.0/24;10.0.7.0/24; };
};

Autorité sur des domaines

L'un des principaux intérêts de mettre en œuvre un serveur DNS est de pouvoir attribuer librement des noms de domaines locaux à nos machines. Un nom de domaine est appelé "zone" et c'est sur cette zone que BIND fera autorité. Il est également possible de déléguer l'autorité sur une zone à un autre serveur DNS.

Une zone est décrite dans le fichier /etc/bind/named.conf.local et les enregistrements DNS s'y afférant se situent dans un unique fichier propre à la zone dans le répertoire /var/cache/bind/.

cat /etc/bind/named.conf.local

Exemple de zones gérées par notre serveur :

zone "ycharbi.yo" {
      type master;
      file "/var/cache/bind/ycharbi.yo";
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/var/cache/bind/rev.ycharbi.yo";
};

zone "toto.yo" {
      type master;
      file "/var/cache/bind/toto.yo";
};
zone "rpz" IN {
        type master;
        file "/var/cache/bind/rpz";
        allow-query { none; };
};

Notez la présence d'une zone inverse 1.168.192.in-addr.arpa permettant la résolution de champs PTR (adresses en noms).

Contenu d'un fichier de zone (/var/cache/bind/ycharbi.yo) :

$TTL 3h
@	IN	SOA	ns.ycharbi.yo.	hostmaster.ycharbi.yo.	(   
                                2005090201
                                8H
                                2H
                                1W
                                1D	)   

@	IN	NS	ns.ycharbi.yo.

; Messagerie
@	IN	MX	10	mail.ycharbi.yo.

mail	IN	A	192.168.1.100
mail	IN	AAAA	2001:db8:1021:5::

; Serveur WEB
www	IN	A	192.168.1.101
www	IN	AAAA	2001:db8:1021:5::1

Contenu d'un fichier de zone inverse (/var/cache/bind/rev.ycharbi.yo) :

$TTL 3h
@	IN	SOA	ns.ycharbi.yo.	hostmaster.ycharbi.yo.	(   
                                2005090201
                                8H
                                2H
                                1W
                                1D	)   

@	IN	NS	ns.ycharbi.yo.

@	IN	MX	10	mail.ycharbi.yo.

200	IN	PTR	ns.ycharbi.yo
100	IN	PTR	mail.ycharbi.yo
101	IN	PTR	www.ycharbi.yo

Tester la configuration

named-checkconf -z

Redémarrer le service

systemctl restart bind9.service

RPZ

RPZ (Reponse Policy Zone) est une fonctionnalité du DNS permettant de mentir sur les requêtes de nom des clients. Ceci est utile afin interdire les accès aux services NSA devenus incontournables sur le WEB comme Google ou Facebook. Je l'utilise pour servir mon miroir de dépôt local à toute mes machines sans avoir à changer leur configuration et elle peut également servir si vous êtes opérateur afin de bloquer l'accès aux sites illégaux.

INFORMATION

RPZ nécessite BIND version 9.8.0 minimum.

Activation de RPZ

vim /etc/bind/named.conf.options

Ajouter cette option dans le fichier

response-policy { zone "rpz"; };

Définition de la zone soumise à l'autorité de BIND

vim /etc/bind/named.conf.local
zone "rpz" IN {
        type master;
        file "/var/cache/bind/rpz";
        allow-query { none; };
};

Configuration de la zone

vim /var/cache/bind/rpz
$TTL 3600
@            IN    SOA  localhost. root.localhost.  (
                          2   ; serial 
                          3H  ; refresh 
                          1H  ; retry 
                          1W  ; expiry 
                          1H) ; minimum 
                  IN    NS    localhost.
    
ftp.fr.debian.org       A       IP_SERVEUR_MIROIR
security.debian.org     A       IP_SERVEUR_MIROIR

Redémarrer Bind

systemctl restart bind9.service

Sources de la section