DNS

Par ce salop de FanfanlaTulipe

Un DNS (Domain Name System) est un système hiérarchique et décentralisé, utilisé pour identifier les différentes machines d'un réseau avec des noms, et non des adresses IP.

Plusieurs services de DNS existent :

  • Bind9
  • nsd
  • Knot
  • powerDNS

Les exemples suivants ont été fait avec un bind9.

Start Of Authority

salo.pe.     IN      SOA    ns.salo.pe. root.salo.pe. (
                            25112101    ; serial
                            3600        ; refresh
                            900         ; retry
                            3600        ; expire
                            200         ; minimum
)

La SOA est l'information la plus importante d'un enregistrement DNS. Il va permettre de donner plusieurs informations aux autres DNS :

  • Le nom de la zone (salo.pe)
  • La classe de réseau (IN)
  • Le type d'enregistrement (SOA)
  • Le master name (ns.salo.pe)
  • L'adresse mail du responsable (root.salo.pe)
  • Le serial, il doit être incrémenté à chaque changement. Communément, il s'agit du jour, mois et année et une version (ddmmyyvv par exemple).
  • Le refresh, définit le temps d'attente entre chaque demande du fichier pour les autres DNS.
  • Le retry, définit le temps d'attente d'une nouvelle demande si le fichier n'est pas disponible.
  • Le expire, définit combien de temps le fichier de zone est valide.
  • Le minimum, définit le time to live dans le cache d'un client

Name Server

salo.pe     IN      NS      ns.salo.pe

Le Name Server (NS) indique quel DNS fait autorité pour ce domaine.

A

salo.pe     IN      A       <IPv4>

Les enregistrements de type A définissent les enregistrements pour les IPv4.

AAAA

salo.pe     IN      AAAA    <IPv6>

Les enregistrements de type AAAA définissent les enregistrements pour les IPv6.

Text

acme        IN      TXT     "Hello There"

Les enregistrements de type text (TXT) permettent d'entrer un texte pour un DNS. Ce type est utilisé par exemple par certbot et letsencrypt pour délivrer des certificats.

Mail eXchanger

salo.pe     IN      MX      1 mail.salo.pe

Les enregistrements MX permettent de spécifier un serveur de mail pour le domaine.

Canonical NAME

magnifique.salo.pe  IN  CNAME   belle.salo.pe

Les enregistrements CNAME permettent de donner des alias à des noms de domaines.

$TTL

$TTL 5m

Le $TTL définit combien de temps les clients DNS garde en cache l'enregistrement.

Exemple

$TTL 5m

salo.pe.    IN      SOA     ns.salo.pe. root.salo.pe. (
                            25112103
                            3600
                            900
                            3600
                            200
)

            IN      NS      ns.salo.pe
            IN      A       <IPv4>

ns          IN      A       <IPv4>
mail        IN      A       <IPv4>
belle       IN      A       <IPv4>
belle       IN      AAAA    <IPv6>
magnifique  IN      CNAME   belle.salo.pe

acme        IN      TXT     "Some text"

salo.pe     IN      MX      mail.salo.pe

bind9

bind9 est un service linux offrant un serveur DNS.

CVE details - bind9

Plusieurs fichiers sont intéressants concernant le service bind9 :

  • named.conf et ses dérivés (named.conf.local et named.conf.options)
  • le fichier de zone, ici salo.pe.zone

named

Dans /etc/bind/, on trouve named.conf et ses dérivés. named.conf ne nous intéressera pas ici, ce dernier inclut les autres fichiers (et on fait les choses proprement).

named.conf.local

Ce fichier va permettre à bind9 de trouver les fichiers de zone.

zone "salo.pe." {
    type master;
    file "/var/lib/bind/salo.pe.zone";
    notify no;
};
  • type : défini le type de zone. Les types de zone disponibles sont les suivants :
    • master: désigne le serveur faisant autorité pour cette zone.
    • slave: désigne le serveur de noms comme serveur esclave de cette zone.
    • forward: retransmet toutes les requêtes à propos de cette zone vers d'autres serveurs de noms.
  • file: le chemin du fichier de zone
  • notify: définit si les serveurs esclaves sont notifiés d'un changement de configuration.
    • yes
    • no
    • explicit: notifie seulement les serveurs esclaves spécifiés dans une liste also-notify.
  • allow-transfer: spécifie les serveurs autorisés à recevoir un transfert de zone depuis ce serveur.
  • also-notify: spécifie les serveurs à notifier lors d'un changement de configuration.

Il existe d'autres options, voir la référence ci-dessous.

Pour plus d'information sur la configuration de zone, voir ici.

Enfin, voir ici pour un exemple de la documentation.

named.conf.options

Ce fichier permet de spécifier des options à bind9.

options {
    directory "/var/cache/bind";

    allow-recusion { any; };
};
  • directory : défini le cache de bind9.
  • allow-recursion: spécifie les serveurs autorisés à faire des requêtes récursives sur ce serveur.

Pour voir toutes les options disponibles, voir ici.

Fichier de zone

Le fichier de zone définit les enregistrements DNS, expliqués plus haut.

Commandes utiles

named-checkconf named.conf

named-checkzone <nom du domaine> <chemin du fichier de zone>

Références

ANSSI - Bonnes pratiques pour l'acquisition et l'exploitation de noms de domaine