Cet article vise à mettre en place DNSSEC avec NSD et Unbound.

Prérequis

  • Avoir NSD installé et correctement configuré.
  • Installer le paquet ldns-utils
apt-get install ldns-utils

Génération des clés ZSK et KSK

# Génération de la clé ZSK
ldns-keygen -a ECDSAP256SHA256 ticloud.fr

# Génération de la clé KSK
ldns-keygen -k -a ECDSAP256SHA256 ticloud.fr

Plusieurs fichier sont générés :

>:# ls Kticloud.fr*
Kticloud.fr.+013+03173.key	Kticloud.fr.+013+34162.ds   Kticloud.fr.+013+34162.private
Kticloud.fr.+013+03173.private	Kticloud.fr.+013+34162.key

Signer la zone dns

ldns-signzone -e $(($(date +%s) + 315365000)) -o ticloud.fr -f /etc/nsd/ticloud.fr.zone.signed /etc/nsd/ticloud.fr.zone Kticloud.fr.+013+03173 Kticloud.fr.+013+3416

Cela va générer le fichier ticloud.fr.zone.signed

Il ne reste plus qu’à redémarrer NSD pour prise en compte :

systemctl restart nsd

En cas de modification de la zone, il faut la resigner avec la commande ldns-signzone puis recharger la zone :

nsd-control reload ticloud.fr

Configuration Unbound

Il faut modifier la configuration d’Unbound de la manière suivante :

server:
    ...
    trust-anchor: "ticloud.fr.	IN	DS	34162 13 2 zefzefez3465errgeg3zefer4dbvbtyytn454556efrbtrb434656567ereg"
    ...
    stub-zone:
       name: "ticloud.fr"
       stub-addr: 127.0.0.1@53530
    

Le contenue de la ligne trust-anchor correspond au fichier Kticloud.fr.+013+34162.ds

Une fois Unbound redémarré on peut tester avec la commande suivante :

>:# dig +dnssec ticloud.fr

; <<>> DiG 9.11.5-P4-5.1+deb10u3-Debian <<>> +dnssec ticloud.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 296
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
;; QUESTION SECTION:
;ticloud.fr.			IN	A

;; ANSWER SECTION:
ticloud.fr.		1800	IN	A	10.42.38.1
ticloud.fr.		1800	IN	RRSIG	A 13 2 1800 20310428191818 20210430175458 3173 ticloud.fr. lm2N7LonWHMlpWc5wAwqBRlE1wJrXy4IaCZkvnBcWlWqf189//KveLZb nf5YeQowuhLmPQ4cRsCVFwG8aY9yUQ==

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: dim. mai 02 21:22:56 CEST 2021
;; MSG SIZE  rcvd: 161

On a bien le flag “ad” dans la réponse.

source