Table des matières

DNSSEC

Fonctionnement

Protocole

DNSSEC (DNS SECurity Extensions) est une extension du protocole DNS qui lui rajoute la possibilité d’authentifier les réponses et de les valider à l’aide de la cryptographie. Attention, les requêtes sont toujours envoyées en clair, elles ne sont jamais chiffrées. Le principe est le même que la signature d’un courriel avec le protocole PGP. Le propriétaire d’une zone possède une paire de clef qui lui permet de signer ses enregistrements. Cela permet d’une part de certifier que l’enregistrement est légitime, mais aussi de certifier de manière dynamique l’absence d’un domaine.

Le protocole utilise deux types de clefs :

Un enregistrement DS permet de déléguer la confiance d’une zone. Il contient le hash de la KSK de la zone fille. En connaissant ce hash, il est possible de vérifier et faire confiance à la KSK de la zone fille. On peut alors se servir de cette KSK pour vérifier la ZSK et lui faire confiance. On peut alors valider les domaines de la zone fille.

De cette manière, seule la clef de la racine est nécessaire à valider les différentes zones du DNS.

Enregistrements

La RFC4034 définit 4 nouveaux enregistrements DNS pour les nouvelles fonctionnalités de DNSSEC.

La RFC5155 en ajoute deux.

Déploiement

DNSSEC n'est pas disponible pour tout les TLDs ni chez tout les registrars. Avant d'essayer de le mettre en place, assurez-vous que votre registrar le supporte. l'ICANN tient une liste des TLDs supportés par registrars pour la propagation de records DS.

Génération des clefs

Pour générer une clef signataire de clef (Key Signing Key ou KSK), utilisez la commande suivante :

dnssec-keygen -f KSK -a RSASHA256 -b 2048 federez.net

Cela va créer deux fichiers du type Kfederez.net.+007+049632.key et Kfederez.net.+007+049632.private. Pour plus de simplicité par la suite, renommez-les en, par exemple, federez.ksk.key et federez.ksk.private

Pour générer la clef signataire de zone (Zone Signing Key ou ZSK), utilisez la commade suivante :

dnssec-keygen -a RSASHA256 -b 2048 federez.net

De même, renommez les fichiers avec un nom plus explicite.

Signature d’une zone

ajoutez en fin de fichier de zone :

$include /etc/bind/federez.zsk.key
$include /etc/bind/federez.ksk.key

Pour signer la zone federez.net., utilisez la commande suivante :

dnssec-signzone -e20480101000000 -p -t -g -k federez.ksk.key -o federez.net federez.net.zone federez.zsk.key

où 20480101000000 est au format AAAAMMJJHHMMSS. C’est la date d’expiration des signatures. Cela va créer un nouveau fichier de zone, federez.net.zone.signed, utilisable à la place de federez.net.zone

Enfin, pour déléguer une zone, pensez à déléguer les signatures avec un enregistrement DS, qui n’est pas généré par la commande précédente. Il suffit alors de configurer DNSSEC avec son registrar pour que les signatures deviennent valides.

Débug et test de configuration

Automatisation

Les outils disponibles dans le paquet opendnssec-tools (sous debian) permettent d’automatiser de nombreuses tâches liées au DNSSEC.

Cette section est incomplète.

Liste des algorithmes

La liste est disponible sur le site de l'IANA et a été établie suite à plusieurs RFC portant sur les DNSSEC.

Valeur Algorithme Signature de zone Référence Algo Référence DNSSEC Statut
1 RSA/MD5 non RFC 2537 Déprécié
3 DSA/SHA-1 oui RFC 2536 Optionnel
5 RSA/SHA-1 oui RFC 3110 Impératif
6 DSA-NSEC3-SHA1 oui RFC 5155 Optionel
7 RSASHA1-NSEC3-SHA1 oui RFC 5155 Recommandé
8 RSA/SHA-256 (RSASHA256) oui FIPS 180-3 RFC 5702 Recommandé
10 RSA/SHA-512 (RSASHA512) oui FIPS 180-3 RFC 5702 Recommandé
12 GOST R 34.10-2001 (ECC-GOST) oui RFC 5831, RFC 5832 RFC 5933 Optionnel
13 ECDSA Curve P-256 with SHA-256 (ECDSAP256SHA256) oui FIPS 186-3 RFC 6605 Recommandé
14 ECDSA Curve P-384 with SHA-384 (ECDSAP384SHA384) oui FIPS 186-3 RFC 6605 Recommandé
253 Algorithme privé (PRIVATEDNS) oui RFC 4034 Optionnel
254 OID de l'algorithme privé (PRIVATEOID) oui RFC 4034 Optionnel

Liens externes