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 :
- Une clef signataire de zone (ou ZSK pour Zone Signing Key) : généralement petite (1024 bit par défaut) car elle doit être utilisée de nombreuses fois pour signer chaque enregistrement. Il est aussi bon de la changer souvent, tous les quelques mois par exemple.
- Une clef signataire de clef (ou KSK pour Key Signing Key) : généralement grande car elle ne sert qu’à signer la ZSK.
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.
- DS : Delegation Signer. Équivalent de NS pour déléguer la signature d’une zone.
- RRSIG
- DNSKEY : clef publique servant à signer un ensemble d'enregistrements ou une zone
- NSEC
La RFC5155 en ajoute deux.
- NSEC3
- NSEC3PARAM
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 |