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.
Plusieurs fichiers sont intéressants concernant le service bind9 :
named.conf
et ses dérivés (named.conf.local
etnamed.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 zonenotify
: 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 listealso-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