====== 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 [[http://tools.ietf.org/html/rfc4034|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 [[http://tools.ietf.org/html/rfc5155|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 [[https://www.icann.org/resources/pages/deployment-2012-02-25-en|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 ===== * http://dnssec-debugger.verisignlabs.com/ * http://dnscheck.iis.se/ * http://dnsviz.net/ * http://dnscheck.pingdom.com/ ===== 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'[[https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml|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 | | [[http://tools.ietf.org/html/rfc5155|RFC 5155]] | Optionel | | 7 | RSASHA1-NSEC3-SHA1 | oui | | [[http://tools.ietf.org/html/rfc5155|RFC 5155]] | Recommandé | | 8 | RSA/SHA-256 (RSASHA256) | oui | [[http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf|FIPS 180-3]] | [[http://tools.ietf.org/html/rfc5702|RFC 5702]] | Recommandé | | 10 | RSA/SHA-512 (RSASHA512) | oui | [[http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf|FIPS 180-3]] | [[http://tools.ietf.org/html/rfc5702|RFC 5702]] | Recommandé | | 12 | GOST R 34.10-2001 (ECC-GOST)| oui | [[http://tools.ietf.org/html/rfc5831|RFC 5831]], [[http://tools.ietf.org/html/rfc5832|RFC 5832]] | [[http://tools.ietf.org/html/rfc5933|RFC 5933]] | Optionnel | | 13 | ECDSA Curve P-256 with SHA-256 (ECDSAP256SHA256) | oui | [[http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf|FIPS 186-3]] | [[http://tools.ietf.org/html/rfc6605|RFC 6605]] | Recommandé | | 14 | ECDSA Curve P-384 with SHA-384 (ECDSAP384SHA384) | oui | [[http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf|FIPS 186-3]] | [[http://tools.ietf.org/html/rfc6605|RFC 6605]] | Recommandé | | 253 | Algorithme privé (PRIVATEDNS) | oui | [[http://tools.ietf.org/html/rfc4034#appendix-A.1.1|RFC 4034]] || Optionnel | | 254 | OID de l'algorithme privé (PRIVATEOID) | oui | [[http://tools.ietf.org/html/rfc4034#appendix-A.1.1|RFC 4034]] || Optionnel | ===== Liens externes ===== * [[http://ensiwiki.ensimag.fr/index.php/Introduction_%C3%A0_DNSSEC|DNSSEC sur le wiki de l'ENSIMAG (fr)]] * [[http://www.dnssec.net/rfc|Liste des RFCs relatives au DNSSEC (en)]] * Analyse des RFCs par Stéphane Bortzmeyer: [[http://www.bortzmeyer.org/4033.html|4033 (fr)]], [[http://www.bortzmeyer.org/4034.html|4034 (fr)]], [[http://www.bortzmeyer.org/4035.html|4035 (fr)]] * [[https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions|DNSSEC sur Wikipédia (en)]] * [[https://www.icann.org/en/news/in-focus/dnssec/deployment|Liste des registrars supportant DNSSEC (en)]]