Bind9
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