Mise en place de DNSSEC pour un domaine dans une vue donnée.

Fait avec bind9 en version : 9.18.12-1 (debian)

  • Sur votre server DNS primaire (primary dans la définition de votre zone) ou maitre (master dans la définition de votre zone) , créer un répertoire pour stocker votre paire de clé , votre répertoire doit avoir les droits en lecture,écriture,exécution pour le propriétaire et le groupe et rien pour le reste du monde.

Pour ma part j ai créer ce répertoire dans /var/cache/bind/dnssec/

Pour chaque domaine j'ai créé un répertoire qui hébergera la paire de clé

  • Créer la paire de clé avec la commande dnssec-keygen, j'utilise l'algorithme ED25519 ( ayant l'id 15), l'indicateur KSK , utilise -K pour dire ou mettre la paire de clé générées :

 dnssec-keygen  -a ED25519 -f KSK -n ZONE  -K </répertoire/ou/mettre/les/cles> <nom_du_fichier_clé>

  • Attention aux droits les fichiers doivent avoir les droits en lecture et écriture même pour la clé privé, le propriétaire est root et le groupe bind pour debian , probablement named pour la famille rh
  • Dans la définition de votre zone DNS :

zone "mon-sous-domaine.com" IN {

type master; // vous pouvez aussi mettre : type primary

file "</chemin/absolu/de/votre/fichier/de/zone>";

dnssec-policy default ; // vous pouvez définir votre propre police dans ce cas vous mettrez dnssec-policy <nom_de_votre_police>

key-directory "</chemin/absolu/du/repertoire/contenant/vos/cles/dnssec>";

inline-signing yes;

.

.

. le reste de la définition de votre zone

}

 

  • sur votre server DNS esclave (slave dans la définition de votre zone) ou secondaire (secondary dans la définition de votre zone), rien de particulier à faire :

zone "mon-sous-domaine.com" IN {

type slave; // vous pouvez aussi mettre : type secondary

file "</chemin/absolu/de/votre/fichier/de/zone>";

masters {

.

.

. le reste de la définition de votre zone

}

 

  • vous pouvez vérifier qu'il n'y a pas d'erreur avec la commande named-checkconf 
  • signez votre zone avec la commande rndc reconfig ou en redémarrant bind
  • vous obtenez un nouveau fichier portant le même non avec un .signed
  • vérification que la zone est bien signée :

dig <votre_domaine> dnskey +dnssec @<votre_server_dns>

doit vous retourner un truc du type :

; <<>> DiG 9.18.12-1-Debian <<>> <votre_domaine> dnskey +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33675
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

 

 

 

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; COOKIE: 5c5ce923d63db4eb010000006489d9696e2ece63d1f204b8 (good)
;; QUESTION SECTION:
;<votre_domaine>.            IN    DNSKEY

 

 

 

;; ANSWER SECTION:
<votre_domaine>.        3600    IN    DNSKEY    257 3 13 8bucMtXSvstApmeorJ7wY84pxkZnYh0KeFE4aBQqon2cUHjxJ4DwirEP jsfKxVS5zEhFTlsvaqeGrMB32MIhdg==
<votre_domaine>.        3600    IN    RRSIG    DNSKEY 13 2 3600 20230628131816 20230614121816 37273 worm-fr.com. jkri2NwQfudQCZ68pkE5S/ANVQO9WeRyyQx6Kn4WzdkwbqKkmGnSkh1Q QcJy75nyV5JoX9yp0d+5gy/PBmQGrA==

 

;; Query time: 0 msec
;; SERVER: <votre_server_dns>#53(192.168.123.9) (UDP)
;; WHEN: Wed Jun 14 15:14:49 UTC 2023
;; MSG SIZE  rcvd: 255