DNSSEC et CAA : deux enregistrements qui ne coûtent rien

Ce que DNSSEC protège et pourquoi un déploiement cassé est pire que rien, comment CAA limite qui peut émettre des certificats pour votre domaine, et comment les activer.

6 min de lecture

Les réponses DNS ne sont pas signées par défaut. Un résolveur qui demande « quelle est l’adresse de www.votredomaine.fr » prend la première réponse plausible qu’il reçoit, et sur un réseau hostile, ou à travers un cache empoisonné, cette réponse peut venir de quelqu’un d’autre. DNSSEC règle ce problème en signant chaque enregistrement de votre zone avec une clé dont l’empreinte est publiée par la zone parente, et ainsi de suite jusqu’à la racine. Un résolveur qui valide DNSSEC rejette les réponses falsifiées.

Les enregistrements CAA règlent un autre problème. N’importe laquelle des quelque 150 autorités de certification publiques peut émettre un certificat pour votre domaine si quelqu’un lui prouve qu’il le contrôle. Un enregistrement CAA nomme les autorités que vous utilisez réellement ; les autres sont tenues de refuser. C’est une modification de deux lignes qui transforme « n’importe quelle autorité, si on la trompe » en « seulement la nôtre ».

Les deux apparaissent dans un rapport Perimetry comme des constats quand ils manquent. Aucun des deux ne coûte d’argent.

DNSSEC

Ce qu’il fait et ne fait pas

DNSSEC garantit que la réponse reçue par un résolveur qui valide est bien celle que vous avez publiée. Il empêche l’empoisonnement de cache et la falsification du DNS en chemin, qui sont la première étape habituelle de plusieurs attaques : rediriger les e-mails vers un serveur contrôlé par l’attaquant, obtenir un certificat en réussissant un défi de validation par DNS, ou servir un faux site à tout un réseau. Il ne chiffre pas les requêtes DNS (c’est DNS over HTTPS ou over TLS, une autre fonction), et il ne protège pas contre le piratage du compte chez le bureau d’enregistrement.

Pourquoi « cassé » est pire que « absent »

Une zone avec DNSSEC activé publie des signatures et un enregistrement DS dans la zone parente. Si les signatures expirent, si les clés changent sans mise à jour du DS, ou si la zone passe chez un fournisseur qui ne signe pas alors que le DS reste chez le bureau d’enregistrement, les résolveurs qui valident (Google, Cloudflare, Quad9 et la plupart des fournisseurs d’accès aujourd’hui) considèrent chaque réponse comme falsifiée et renvoient une erreur. Le domaine disparaît pour tous ceux qui utilisent ces résolveurs : plus de site, plus d’e-mails. C’est l’incident DNSSEC le plus fréquent, et il suit presque toujours un changement de fournisseur DNS.

Perimetry signale deux constats différents : DNSSEC non activé (moyen) et DNSSEC cassé (élevé). Le second est vérifié en interrogeant un résolveur qui valide, avec l’indicateur DNSSEC-OK, et en regardant si la réponse est authentifiée ou si la validation a échoué.

Comment l’activer

La plupart des fournisseurs DNS gérés (Cloudflare, Route 53, Google Cloud DNS, Gandi, OVH, Infomaniak) signent la zone en un clic et vous montrent l’enregistrement DS à publier. Ensuite :

  1. Activez DNSSEC chez le fournisseur DNS. Attendez que la zone signée soit en ligne (le fournisseur l’indique).
  2. Copiez l’enregistrement DS (ou la DNSKEY, selon ce que demande le bureau d’enregistrement) dans l’interface du bureau d’enregistrement. Si c’est la même société que le fournisseur DNS, c’est en général automatique.
  3. Vérifiez avec un outil de validation comme DNSViz, ou attendez simplement le prochain audit Perimetry, qui indique si la chaîne se valide.

Avant de changer de fournisseur DNS plus tard, retirez d’abord l’enregistrement DS chez le bureau d’enregistrement, attendez que le TTL de la zone parente soit écoulé (en général un jour), puis migrez. Réactivez ensuite. La partie « changements » de Perimetry montrera l’état de DNSSEC basculer, ce qui vous confirme que la migration s’est passée comme prévu.

CAA

Ce que dit un enregistrement CAA

votredomaine.fr.  CAA  0 issue "letsencrypt.org"
votredomaine.fr.  CAA  0 issuewild ";"
votredomaine.fr.  CAA  0 iodef "mailto:security@votredomaine.fr"

À lire ainsi : seul Let’s Encrypt peut émettre des certificats pour ce domaine et ses sous-domaines ; personne ne peut émettre de certificat générique (« wildcard ») ; et si une autorité reçoit une demande qu’elle doit refuser, elle peut le signaler à cette adresse. Les autorités de certification sont tenues de vérifier CAA depuis 2017, au moment de l’émission : l’enregistrement vous protège dès aujourd’hui.

Si vous utilisez plusieurs autorités (Let’s Encrypt pour le site principal, DigiCert pour un produit, Amazon pour un répartiteur de charge), listez chacune sur sa propre ligne issue. L’identifiant de chaque autorité est documenté par l’autorité ; les plus courants sont letsencrypt.org, digicert.com, sectigo.com, globalsign.com, amazon.com, google.com, pki.goog, ssl.com, comodoca.com.

Contre quoi il protège

Un attaquant qui prend le contrôle de un sous-domaine, ou qui peut répondre quelques minutes à un défi de validation DNS, peut obtenir un certificat auprès de n’importe quelle autorité qui accepte ce défi. Avec un enregistrement CAA qui ne nomme que votre autorité, toutes les autres refusent. Avec DNSSEC en plus, l’enregistrement CAA lui-même ne peut pas être falsifié pendant la vérification de l’autorité.

Surveiller les émissions malgré tout

CAA limite qui peut émettre ; il ne vous dit pas quand quelque chose a été émis. Perimetry lit les journaux Certificate Transparency à chaque audit et liste les certificats récents de votre domaine avec leur émetteur. Quand un émetteur n’est pas couvert par votre enregistrement CAA, le rapport le dit (certificat émis par une autorité que votre CAA n’autorise pas) : c’est soit une erreur dans votre enregistrement, soit un certificat qui mérite des questions. Le guide sur la surveillance de Certificate Transparency explique comment lire cette partie.

À quoi ressemble le rapport

DNSSEC non activé — moyen Aucun enregistrement DS n’est publié pour votredomaine.fr dans la zone .fr. Les résolveurs qui valident ne peuvent pas détecter des réponses falsifiées pour ce domaine. Activez DNSSEC chez votre fournisseur DNS et publiez l’enregistrement DS chez votre bureau d’enregistrement.

Pas d’enregistrement CAA — faible N’importe quelle autorité de certification peut émettre des certificats pour votredomaine.fr. Publiez un enregistrement CAA qui nomme les autorités que vous utilisez, par exemple 0 issue "letsencrypt.org".

Les deux enregistrements prennent un quart d’heure. Peu d’autres quarts d’heure réduisent autant l’exposition.

Pour voir où en est un domaine, le vérificateur DNSSEC gratuit dit si la zone est signée et validée, et le vérificateur d’enregistrements CAA liste les autorités autorisées à émettre pour un nom.