Table of Contents

,

Créer un serveur DNS avec Bind9

La principale fonction d'un serveur de noms (Domain Name System) est de traduire un nom de domaine en une (ou plusieurs) adresses IP.

Création d'un serveur DNS en utilisant BIND9

La mise en place d'un serveur DNS sur un réseau permet de remplacer les adresses IP des machines par un nom. Ainsi, il est même possible d'associer plusieurs noms à la même machine pour mettre en évidence les différents services possibles.

Nous devons disposer de deux machines linux. On doit installer le service bind9 dans les deux hôtes avec la commande 1):

apt-get install bind9

Quelques notions essentielles avant de configurer les serveurs.

Configuration du Master

On utilisera le nom de domaine mederis.net et deux Addresses IP : 62.210.103.156 pour le master et 62.210.139.88 pour le slave.

-rw-r--r--   1 root bind  463 Jan 15  2018 named.conf
options {
...
dnssec-enable yes;
dnssec-validation auto;
 
 
auth-nxdomain no;    /*  conform to RFC1035 */
listen-on {
        127.0.0.1;
        62.210.103.156;  /* l'addresse IP du Master */
        };
allow-transfer {
        62.210.139.88;   /* l'addresse IP du Slave */
        };
...
};
$TTL 3600
test.mederis.net.       IN      SOA     ns1.test.mederis.net. admin.test.mederis.net. (
                                                20              /* ;Serial */
                                                600             /* ;Refresh */
                                                3600            /* ;Retry */
                                                604800          /* ;Expire */
                                                3600            /* ;Minimum */
                                                )
 
/* ;Nameservers */
test.mederis.net.         IN     NS              ns1.test.mederis.net.
test.mederis.net.         IN     NS              ns2.test.mederis.net.
 
/* ;Resolve Nameserver IPs */
ns1.test.mederis.net.     IN      A       62.210.103.156
ns2.test.mederis.net.     IN      A       62.210.139.88
 
 
 
/* ; Main Ip resolution */
test.mederis.net.       IN      A       62.210.139.88
 
/* ; CNAMEs */
lola.test.mederis.net.  IN      CNAME   test.mederis.net.
/* # A records */
ns1.test.mederis.net.	900	A	62.210.103.156  # addresse IP Master
ns2.test.mederis.net.	900	A	62.210.139.88   # addresse IP Slave
/* # Name server */
test.mederis.net.	        900	NS	ns2.test.mederis.net.
test.mederis.net.	        900	NS	ns1.test.mederis.net.
/* # /etc/bind/db.62.210.103 */
$TTL    3600
103.210.62.in-addr.arpa.        IN SOA        ns1.test.mederis.net. admin.test.mederis.net. (
                                                  14           /* ; Serial */
                                                  1h           /* ; Refresh [1h] */
                                                  10m          /* ; Retry   [10m] */
                                                  1d           /* ; Expire  [1d] */
                                                  10m)         /* ; Negative Cache TTL [1h] */
 
/* ; Name Server */
103.210.62.in-addr.arpa.        IN      NS      ns1.test.mederis.net.
 
/* ; PTR Records */
158.103.210.62.in-addr.arpa.     IN      PTR      ns1.test.mederis.net.
/* # /etc/bind/db.62.210.139 */
$TTL    3600
139.210.62.in-addr.arpa.        IN SOA        ns2.test.mederis.net. admin.test.mederis.net. (
                        14           /* ; Serial */
                        1h           /* ; Refresh [1h] */
                       10m           /* ; Retry   [10m] */
                        1d           /* ; Expire  [1d] */
                       10m)          /* ; Negative Cache TTL [1h] */
 
/* ; Name Server */
139.210.62.in-addr.arpa.        IN      NS      ns2.test.mederis.net.
 
/* ; PTR Records */
158.103.210.62.in-addr.arpa.     IN      PTR      ns2.test.mederis.net.
...
zone "103.210.62.in-addr.arpa" {
   type master;
   file "/etc/bind/zones/db.62.210.103";
   notify yes;
};
 
zone "139.210.62.in-addr.arpa" {
   type master;
   file "/etc/bind/zones/db.62.210.139";
   notify yes;
};
sudo rndc reload
# OR
sudo systemctl restart bind9

Configuration du Slave

Dans la configuration du Slave on va installer les mêmes dépendances qu'on a déjà installées dans le Master. Le but est que les deux serveurs puissent communiquer. Le serveur Master doit pouvoir faire un transfert de zone aux Slave

options{
     ...
     dnssec-validation auto;
     auth-nxdomain no;    /* # conform to RFC1035 */
     allow-query {
             127.0.0.1;
             62.210.139.88;
     };
 
     listen-on { 127.0.0.1;
                 62.210.139.88;
     };
 
     listen-on { any; };
     listen-on-v6 { any; };
 
     allow-transfer { 51.15.188.118;
                      127.0.0.1;
                      };
 };
zone "test.mederis.net" IN {
  type slave;
  file "/etc/bind/zones/test.mederis.net";
  masters { 62.210.103.156; };
  };
 
zone "103.210.62.in-addr.arpa" {
  type slave;
  file "/etc/bind/zones/db.62.210.103";
  masters { 62.210.103.156; };
  };
 
zone "139.210.62.in-addr.arpa" {
  type slave;
  file "/etc/bind/zones/db.62.210.139";
  masters { 62.210.103.156; };
  };

DNSSEC

Le DNSSEC permet de sécuriser l’authenticité de la réponse DNS. La sécurité des données est effectuée à l’aide d’un mécanisme de clés (KSK pour Key Signing Key & ZSK pour Zone Signing Key) qui signe les enregistrements DNS de sa propre zone.

# Passer à root pour pouvoir  générer les clefs
dnssec-keygen -a NSEC3RSASHA1 -b 4096 -n ZONE test.mederis.net          # Generate ZSK KEYS
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE test.mederis.net   # Generate KSK KEYS
 
# Changer les noms des deux clefs générées par un nom symbolique
mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.key      #ZSK public key
mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.private  #ZSK private key
 
mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.key      #KSK public key
mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.private  #KSK private key
$INCLUDE "/etc/bind/Ktest.mederis.net.ksk.key" ;
$INCLUDE "/etc/bind/Ktest.mederis.net.zsk.key" ;
1)
docker est une alternative intéressante