DNSSEC sécurise le DNS. Cet article explique comment détecter les problèmes DNSSEC ayant une incidence sur la résolution DNS.
Tester DNSSEC avec Dig
Dig est un outil de ligne de commande permettant de requêter un serveur de noms pour les enregistrements DNS. Par exemple, Dig peut demander à un résolveur DNS l’adresse IP de www.cloudflare.com (l’option +short affiche uniquement le résultat) :
$ dig www.cloudflare.com +short198.41.215.162198.41.214.162
Utilisez Dig pour vérifier les enregistrements DNSSEC. Dans l’exemple ci-dessous, la dernière ligne de sortie est l’enregistrement RRSIG. RRSIG est la signature DNSSEC attachée à l’enregistrement. Avec le RRSIG, un résolveur DNS détermine si une réponse DNS est approuvée.
$ dig www.cloudflare.com +dnssec +short198.41.214.162198.41.215.162A 13 3 300 20180927180434 20180925160434 35273 cloudflare.com. DYYZ/bhHSAIlpvu/HEUsxlzkC9NsswbCQ7dcfcuiNBrbhYV7k3AI8t46 QMnOlfhwT6jqsfN7ePV6Fwpym3B0pg==
Dig récupère également la clé publique utilisée pour vérifier l’enregistrement DNS. Les enregistrements DNS d’un domaine sont tous signés avec la même clé publique. Par conséquent, requêtez la clé publique du domaine racine, et non celle du sous-domaine :
$ dig DNSKEY cloudflare.com +short257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+ KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==256 3 13 koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z 1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==
La réponse DNS comprend deux enregistrements :
- L’enregistrement DNSKEY 256 est la clé publique appelée clé à court terme, utilisée pour vérifier les signatures d’enregistrement DNS pour A, MX, CNAME, SRV, etc.
- L’enregistrement DNSKEY 257 est appelé la clé de signature de clé, utilisée pour vérifier les signatures des enregistrements DNSKEY, CDS et CDNSKEY.
Lorsque vous n’utilisez pas l’option +short avec dig, une réponse DNS est authentifiée DNSSEC si l’indicateur Annonce apparaît dans l’en-tête de la réponse :
$ dig www.cloudflare.com[...];; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65326
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 [...] ;; RUBRIQUE DES QUESTIONS : ;www.cloudflare.com. IN A [...] ;; RUBRIQUE DES RÉPONSES : www.cloudflare.com. 15 IN A 198.41.215.162 www.cloudflare.com. 15 IN A 198.41.214.162
Affichage de la chaîne de confiance DNSSEC avec Dig
La vérification complète des signatures de domaine (par exemple : cloudflare.com) implique la vérification de la clé de signature de clé au niveau du domaine supérieur (par exemple : .com). Une vérification similaire est ensuite effectuée en vérifiant la clé de signature de key .com au niveau du serveur racine. Les clés racine DNSSEC sont distribuées aux clients DNS pour compléter la chaîne de confiance.
Lorsque DNSSEC est activé, un enregistrement DS est requis sur le DNS du registrar. L’enregistrement DS contient un hachage de la clé de signature de clé publique, ainsi que des métadonnées sur la clé.
Utilisez la commande Dig pour trouver un enregistrement DS: :
$ dig +short DS cloudflare.com2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9
Lorsque vous utilisez l’option +trace, Dig confirme si une réponse est renvoyée par le serveur de noms pour cloudflare.com ou par le serveur de noms pour .com. Dans cet exemple, l’enregistrement DS pour cloudflare.com est renvoyé par e.gtld-servers.net :
$ dig DS cloudflare.com +trace[...]cloudflare.com. 86400 IN DS 2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9[...]com. 172800 IN NS e.gtld-servers.net.[...];; Received 1213 bytes from 2001:502:1ca1::30#53(e.gtld-servers.net) in 37 ms
Une alternative plus facile à l’exécution manuelle de toutes les étapes ci-dessus consiste à utiliser l’outil en ligne DNSViz. Voir plus de détails sur le dépannage de la validation DNSSEC à l’aide de DNSViz ou un exemple de résultats DNSSEC de cloudflare.com via DNSViz.
Dépannage de la validation DNSSEC avec Dig
Des problèmes surviennent si les fournisseurs de service DNS faisant autorité sont modifiés sans mettre à jour ni supprimer les anciens enregistrements DNSSEC auprès du registrar :
$ dig A brokendnssec.net @1.0.0.1;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10663
Vérifiez si une réponse SERVFAIL est liée au DNSSEC en exécutant une commande dig avec l’option +cd. L’option +cd fournit des résultats DNS sans aucune validation DNSSEC en place.
$ dig A brokendnssec.net @1.0.0.1 +dnssec +cd +short104.20.49.61104.20.48.61
Dans l’exemple ci-dessus, DNSSEC est mal configuré si une réponse DNS correcte est reçue lors de l’utilisation de l’option +cd mais que les requêtes utilisant DNSSEC renvoient une réponse SERVFAIL. Ce problème se produit souvent lorsque des serveurs de noms faisant autorité sont modifiés mais que les enregistrements DS ne sont pas mis à jour. Le problème peut également se produire si un pirate tente d’établir une réponse à une requête.
Dépannage de la validation DNSSEC avec DNSViz
- Rendez-vous sur http://dnsviz.net/
- Saisissez un nom de domaine dans le champ de texte qui apparaît.
- Si DNSViz n’a jamais analysé le site auparavant, cliquez sur le bouton Analyse qui apparaît.
- Si le site a déjà été analysé par DNSViz, cliquez sur le bouton Mettre à jour maintenant qui s’affiche.
Exemple sans DNSSEC
Vous trouverez ci-dessous un exemple de domaine qui fonctionne sans DNSSEC, tel que schématisé par dnsviz.net :
Exemple avec DNSSEC correct
Vous trouverez ci-dessous un exemple de domaine avec des enregistrements DNSSEC qui fonctionnent entre les serveurs de noms TLD et les serveurs de noms faisant autorité pour cloudflare.com :
Exemple avec un enregistrement RRSIG manquant ou incorrect sur un serveur de noms faisant autorité
Vous trouverez ci-dessous un exemple montrant comment dnsviz.net affichera une délégation incorrecte quand aucun enregistrement DNSKEY valide n’est fourni par le serveur de noms faisant autorité, pour correspondre avec l’enregistrement DS publié par le serveur de noms TLD :
Prochaines étapes
Si un problème est détecté lors de la mise en œuvre de DNSSEC, contactez le registrar du domaine et vérifiez que l’enregistrement DS corresponde à ce que le fournisseur de service DNS faisant autorité a spécifié. Si Cloudflare est le fournisseur de service DNS faisant autorité, suivez les instructions pour configurer DNSSEC avec Cloudflare..