« Bind9 » : différence entre les versions

De Wiki doc

(→‎RPZ : Ajout du chemin de la zone "rpz".)
(Ajouts de la section "Configuration" ainsi que d'une commande pour installer l'outil)
 
Ligne 1 : Ligne 1 :
[[Category:service_dns]]
[[Category:service_dns]]
=RPZ=
RPZ (Reponse Policy Zone) est une fonctionnalité du DNS permettant de mentir sur les requêtes de nom des clients. C'est utile pour interdire les accès aux services NSA devenus incontournables malgré moi 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.


{{info|RPZ nécessite Bind version 9.8.0 minimum.}}
''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 <syntaxhighlight lang="bash" inline>/etc/bind/named.conf</syntaxhighlight>. 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|RPZ]] ainsi que les réseaux autorisés à utiliser les services de ''BIND''.
 
cat /etc/bind/named.conf.options
 
''Exemple de configuration :''
 
<syntaxhighlight lang="nginx">
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; };
};
</syntaxhighlight>
 
==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 <syntaxhighlight lang="bash" inline>/etc/bind/named.conf.local</syntaxhighlight> et les enregistrements ''DNS'' s'y afférant se situent dans un unique fichier propre à la zone dans le répertoire <syntaxhighlight lang="bash" inline>/var/cache/bind/</syntaxhighlight>.
 
cat /etc/bind/named.conf.local
 
''Exemple de zones gérées par notre serveur :''
 
<syntaxhighlight lang="nginx">
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; };
};
</syntaxhighlight>
 
''Notez la présence d'une zone inverse <syntaxhighlight lang="ini" inline>1.168.192.in-addr.arpa</syntaxhighlight> permettant la résolution de champs <syntaxhighlight lang="bash" inline>PTR</syntaxhighlight> (adresses en noms).''
 
Contenu d'un fichier de zone (<syntaxhighlight lang="bash" inline>/var/cache/bind/ycharbi.yo</syntaxhighlight>) :
 
<syntaxhighlight lang="nginx">
$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
</syntaxhighlight>
 
Contenu d'un fichier de zone inverse (<syntaxhighlight lang="bash" inline>/var/cache/bind/rev.ycharbi.yo</syntaxhighlight>) :
 
<syntaxhighlight lang="nginx">
$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
</syntaxhighlight>
 
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.
 
{{info|''RPZ'' nécessite ''BIND'' version 9.8.0 minimum.}}


'''Activation de RPZ'''
'''Activation de RPZ'''
  vim /etc/bind/named.conf.options
  vim /etc/bind/named.conf.options
Ajouter cette option dans le fichier
Ajouter cette option dans le fichier
  response-policy { zone "rpz"; };
  response-policy { zone "rpz"; };


'''Définition de la zone soumise à l'autorité de bind'''
'''Définition de la zone soumise à l'autorité de BIND'''
  vim /etc/bind/named.conf.local
  vim /etc/bind/named.conf.local
<source lang="lua">
 
<syntaxhighlight lang="lua">
zone "rpz" IN {
zone "rpz" IN {
         type master;
         type master;
Ligne 18 : Ligne 134 :
         allow-query { none; };
         allow-query { none; };
};
};
</source>
</syntaxhighlight>


'''Configuration de la zone'''
'''Configuration de la zone'''
  vim /var/cache/bind/rpz
  vim /var/cache/bind/rpz


<source lang="lua">
<syntaxhighlight lang="lua">
$TTL 3600
$TTL 3600
@            IN    SOA  localhost. root.localhost.  (
@            IN    SOA  localhost. root.localhost.  (
Ligne 35 : Ligne 151 :
ftp.fr.debian.org      A      IP_SERVEUR_MIROIR
ftp.fr.debian.org      A      IP_SERVEUR_MIROIR
security.debian.org    A      IP_SERVEUR_MIROIR
security.debian.org    A      IP_SERVEUR_MIROIR
</source>
</syntaxhighlight>


'''Redémarrer Bind'''
'''Redémarrer Bind'''
  systemctl restart bind9.service
  systemctl restart bind9.service
==Sources de la section==
==Sources de la section==
* http://jpmens.net/2011/04/26/how-to-configure-your-bind-resolvers-to-lie-using-response-policy-zones-rpz/
* http://jpmens.net/2011/04/26/how-to-configure-your-bind-resolvers-to-lie-using-response-policy-zones-rpz/
* http://www.bortzmeyer.org/rpz-faire-mentir-resolveur-dns.html
* http://www.bortzmeyer.org/rpz-faire-mentir-resolveur-dns.html

Dernière version du 1 août 2022 à 13:51


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