IT-Admin.tech

Implémenter DNSSEC : signature, gestion des clés et cas d'erreurs fréquents

Architekturdiagramm der DNSSEC-Vertrauenskette mit KSK, ZSK, DS-Delegation und HSM
Visualisierung der DNSSEC-Vertrauenskette: KSK signiert ZSK, ZSK signiert Zonendaten, DS verbindet Zone mit Parent.

Implémenter DNSSEC est pour de nombreuses équipes informatiques une étape nécessaire afin d’assurer l’intégrité de la résolution de noms. DNSSEC (Domain Name System Security Extensions) garantit que les réponses DNS n’ont pas été manipulées en signant cryptographiquement les zones. Cet article explique de manière pragmatique quelles conditions préalables vous devez vérifier, comment générer et gérer les KSK et ZSK, comment se fait la publication des enregistrements DS chez le registrar et quels cas d’erreur typiques peuvent survenir — avec des stratégies de vérification et de repli pour l’exploitation en production.

Pourquoi DNSSEC et pour qui cela est pertinent

Grafik der DNSSEC-Vertrauenskette mit KSK und ZSK
Représentation schématique : où se situent KSK, ZSK et DS dans la chaîne de confiance.

DNSSEC protège contre des manipulations telles que le cache poisoning et les attaques de type man-in-the-middle sur les réponses DNS. Pour les exploitants de zones internes et externes, en particulier pour des solutions logicielles proches des processus, DNSSEC est pertinent car des réponses DNS erronées ont un impact direct sur l’authentification, la livraison d’e‑mails, les points de terminaison d’API et la disponibilité des services. Il est essentiel de noter : DNSSEC protège l’intégrité et l’authenticité des réponses DNS, pas la confidentialité (donc pas le contenu).

Bases : termes, architecture et chaîne de confiance

HSM-Gerät zur sicheren Speicherung von DNS-Schlüsseln
HSM comme option praticable pour la protection de la KSK en environnements de production.

Termes importants, expliqués brièvement : KSK (Key Signing Key) est une paire de clés qui signe uniquement les clés de signature de zone (ZSK) ; la KSK sert d’ancre de confiance (trust anchor). ZSK (Zone Signing Key) signe les données de zone elles‑mêmes (Resource Records). DS (Delegation Signer) est l’enregistrement dans la zone parente (parent) qui contient le condensé de la clé publique KSK et établit ainsi la chaîne de confiance jusqu’à la racine. Les validateurs (resolveurs avec prise en charge DNSSEC) vérifient cette chaîne pour classer une réponse comme « secure ».

L’interaction est essentielle : vous signez votre zone avec une ZSK ; la ZSK est protégée par la KSK ; la KSK est vérifiée par un enregistrement DS dans la zone parente. Si la chaîne est interrompue à un quelconque niveau (DS manquant, clé obsolète, signatures expirées), les validateurs peuvent renvoyer SERVFAIL et les clients ne pourront plus atteindre les services.

Conditions préalables et questions de planification avant la mise en œuvre

Zeitstrahl für KSK- und ZSK-Rolloverphasen
Chronologie et fenêtres de chevauchement lors du rollover des clés.

Avant de commencer la signature, vérifiez :

  • Votre registrar/fournisseur propose-t-il un accès API ou une interface UI pour les enregistrements DS ? De nombreux registrars n’autorisent le téléversement automatique que via des interfaces spécifiques.
  • Votre serveur DNS autoritatif supporte-t-il DNSSEC (BIND, Knot, PowerDNS, NSD) ? Quels outils de signature sont disponibles ?
  • Les clés doivent-elles être stockées dans un HSM (Hardware Security Module) ? Un HSM augmente la sécurité mais implique des contraintes opérationnelles et des coûts.
  • Existe-t-il un domaine de test ou un environnement de staging où vous pouvez simuler le déploiement ?

Étape par étape : signer une zone (procédure pratique)

L’exemple suivant décrit le flux de base avec les outils BIND (dnssec-keygen, dnssec-signzone). Il explique non seulement le „comment“, mais aussi le „pourquoi“.

1) Génération des clés (KSK et ZSK)

La ZSK est généralement plus petite (et renouvelée plus fréquemment) que la KSK. Les KSK doivent être changées moins souvent et mieux protégées (éventuellement hors ligne ou dans un HSM). Exemple avec dnssec-keygen :

Shell
# ZSK (conforme RFC : p.ex. RSASHA256, 2048 bits)
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com

# KSK (plus longue, p.ex. 4096 bits, destinée à servir d'ancre de confiance)
dnssec-keygen -a RSASHA256 -b 4096 -n ZONE -f KSK example.com

Pourquoi ? Des clés de signature plus petites (ZSK) réduisent la charge CPU lors de la signature ; des KSK plus longues augmentent la sécurité de l’ancre de confiance. L’option -f KSK indique que la clé est une Key Signing Key (KSK).

2) Signer la zone

La signature génère des RRSIG (signatures) ainsi que des enregistrements DNSKEY qui sont intégrés dans le fichier de zone. Exemple :

Shell
# Hypothèse : fichier de zone example.com.zone
# dnssec-signzone produit un fichier de zone signé
dnssec-signzone -A -3 randomsalt -N increment -o example.com -t example.com.zone

Les options : -A active la gestion automatique des clés, -3 génère un sel NSEC3, -N increment incrémente proprement le numéro de série. Après exécution vous obtenez un fichier du type example.com.zone.signed, que vous devez diffuser depuis le serveur autoritatif.

3) Convertir DNSKEY en DS et publier chez le parent

Seul l’enregistrement DS dans la zone parente relie votre zone à la chaîne de confiance supérieure. Il est généré à partir de la KSK :

Shell
# Générer le DS à partir de la KSK (sha256 est courant)
dnssec-dsfromkey Kexample.com.+008+12345.key

# Output: example.com. IN DS 12345 8 2 
# Saisir cette valeur DS auprès du registrar / dans la zone parente

Pourquoi cela fonctionne : le DS est un hash de l’enregistrement DNSKEY (la KSK publique). Le parent stocke ce hash ; les résolveurs comparent, lors de la validation, le hash avec le DNSKEY présent dans votre zone.

Gestion des clés : stockage, sauvegarde et HSM

Le key-management couvre la protection, la rotation et la récupération. Règles et options :

  • HSM : si vous utilisez un HSM (interface PKCS#11), les clés privées restent protégées physiquement. Cela a du sens pour la KSK, moins impératif pour la ZSK, selon le profil de risque.
  • KSK hors ligne : conservez les clés privées KSK hors ligne (p. ex. sur un hôte éteint ou un HSM) pour prévenir le vol.
  • Sauvegarde & Restauration : créez des sauvegardes sécurisées et chiffrées des clés, incluant des exportations PKCS#12 protégées par mot de passe ou des archives chiffrées. Testez régulièrement la restauration.
  • Journalisation & Audit : chaque opération sur une clé (génération, déploiement, suppression) doit être enregistrée, idéalement dans un système à tenue d’audit immuable.

Intégration avec KMS et automatisation

De nombreuses équipes intègrent des systèmes de gestion de clés (Cloud-KMS ou HashiCorp Vault) via PKCS#11 ou API. Avantages : audit centralisé, rotation automatisée ; inconvénients : nouvelle surface d’attaque, dépendance à la disponibilité. Essentiel est un plan de récupération testé si le KMS n’est pas accessible.

Rotation des clés : stratégies ZSK et KSK

La rotation (rollover) désigne le remplacement d’une clé par une nouvelle. Il existe deux types : rotation ZSK et rotation KSK. Chacun suit une séquence type et comporte des risques.

Rotation ZSK (fréquente, automatisable)

Les ZSK sont souvent renouvelées de façon automatisée et à intervalles courts (p. ex. 1–3 mois), car elles sont davantage utilisées pour la signature. Procédure :

  1. Génération d’une nouvelle ZSK.
  2. Publication : nouveaux DNSKEY dans la zone sans suppression immédiate de l’ancienne ZSK.
  3. Continuer à signer jusqu’à expiration des anciennes signatures.
  4. Supprimer l’ancienne ZSK.

Risque : oublier de conserver les anciennes signatures suffisamment longtemps entraîne des signatures invalides. L’automatisation via dnssec-signzone ou la rotation de clés intégrée au serveur réduit les erreurs.

Rotation KSK (planifiée avec soin)

La rotation KSK est plus complexe car l’enregistrement DS chez le parent doit être adapté. Procédure (séquence en deux étapes, plus sûre) :

  1. Pré-publication : générez la nouvelle KSK et publiez la nouvelle DNSKEY publique dans votre zone, en parallèle de l’ancienne KSK.
  2. Phase de disparité : attendez que les résolveurs intègrent la nouvelle clé comme « known » ; continuez à signer avec la ZSK comme d’habitude.
  3. Mise à jour du parent : générez la valeur DS à partir de la nouvelle KSK et enregistrez-la auprès du registrar/parent (ou utilisez l’automatique CDS/CDNSKEY si pris en charge).
  4. Basculer : retirez ensuite l’ancienne KSK de votre zone, une fois que le parent a accepté le nouveau DS et qu’aucune erreur de validation n’apparaît.

Pourquoi autant de précautions ? Un changement de KSK erroné ou prématuré sans DS correct provoque une rupture de la chaîne de confiance et donc des indisponibilités côté validateurs.

Options d’automatisation : CDS/CDNSKEY, APIs et CI/CD

CDS et CDNSKEY sont des RFCs pour la publication automatique des DS auprès du registrar : votre zone publie des enregistrements CDS/DNSKEY, et un registrar compatible peut les reprendre automatiquement dans la zone parent. Avantage : rotation KSK automatisable. Inconvénient : de nombreux registrars ne le prennent pas encore en charge ou seulement via des workflows spécifiques, donc tester au préalable.

Alternative : intégrer les APIs du registrar dans des pipelines CI/CD. Exemple : le job de signature génère le DS, la pipeline appelle l’API du registrar pour l’injecter, vérifie le succès et notifie l’équipe. Prévoyez impérativement des mesures de sécurité et une validation humaine pour les modifications KSK.

Vérification et validation : outils et séquences de test typiques

Contrôles essentiels à effectuer systématiquement :

  • Vérification locale des signatures : assurez-vous que des enregistrements RRSIG sont présents.
  • Validation DNS depuis un résolveur public : vérifiez la chaîne de confiance jusqu’au parent/root.
  • Surveillez les dates d’expiration des signatures (RRSIG Expiration) et l’expiration des clés (Key-Expiry).

Commandes de vérification pratiques

Shell
# Vérifier si la zone contient des RRSIG
dig +dnssec example.com SOA

# Vérifier la chaîne : indique si la réponse est marquée 'ad' (authentic data)
dig +dnssec @8.8.8.8 example.com A

# Vérifier le DS publié chez le parent (p. ex. les serveurs de noms TLD)
dig +short DS example.com @a.gtld-servers.net

# Outil pour validation approfondie : delv (ou drill)
delv example.com @8.8.8.8

Important : vérifiez depuis plusieurs résolveurs publics et depuis votre propre réseau ; les effets de cache peuvent entraîner des résultats différents.

Cas d’erreurs fréquents et comment les corriger

Dans l’exploitation courante, certaines erreurs se répètent. Voici les principales avec leurs causes et corrections.

1) SERVFAIL pour des parties de la zone après activation

Cause : chaîne interrompue (DS manquant ou incorrect chez le parent), signatures expirées, ou le serveur autoritatif fournit des données DNSKEY/DNSSEC incohérentes.

Séquence de vérification :

  1. dig +dnssec example.com SOA et vérifier si des RRSIG sont présents.
  2. dig +short DS example.com @parent-server vérifier si un DS est présent et correct.
  3. Utiliser delv pour voir l’erreur de validation.

Remédiation : assurez-vous que le DS correspond au hash du KSK-DNSKEY ; renouvelez les signatures localement et, si nécessaire, enregistrez le DS correct chez le registrar.

2) Réponses incohérentes entre serveurs autoritatifs

Cause : fichiers de zone différents (non synchronisation), états de clés différents ; un serveur fournit p. ex. la nouvelle version de DNSKEY, un autre la version précédente.

Correction : vérifiez les logs de transfert de zone (AXFR/IXFR), synchronisez les fichiers de zone, validez les numéros de serial et exécutez rndc reload ou un redémarrage de manière coordonnée. Pour les clusters DNS, contrôlez les mécanismes de réplication.

3) Problèmes de cache et de TTL après un rollover

Cause : d’anciennes valeurs DNSKEY/digest en cache empêchent la validation immédiate après le changement. Les TTL et le cache négatif des erreurs de validation (NSEC/NSEC3) peuvent prolonger la durée.

Remédiation : prenez en compte les TTL avant et après les déploiements ; planifiez le rollover avec une période de chevauchement suffisante. En cas d’urgence, vous pouvez réduire les TTL au préalable, mais cela n’est envisageable que sur le court terme.

4) Le registrar ne prend pas en charge la mise à jour automatique du DS

Cause : de nombreux registrar ne supportent pas l’import automatique CDS/CDNSKEY.

Remédiation : automatisez l’upload du DS via l’API du registrar ou saisissez-le manuellement selon des procédures documentées. Testez ce flux de travail sur un domaine de test avant de passer en production.

Liste de contrôle opérationnelle avant le déploiement en production

  • Signer une zone de test avec une configuration identique et la valider en staging.
  • Sauvegarde de toutes les clés privées, copie hors ligne sécurisée du KSK.
  • Vérifier si le registrar autorise les mises à jour DS et si des API sont disponibles.
  • Mettre en place du monitoring : alertes d’expiration RRSIG, validations échouées et incohérences entre NS.
  • Plan de rollback documenté : étapes pour retirer le DS chez le parent et désactiver la signature si les validateurs tombent massivement en erreur.

Stratégie de rollback et mesures d’urgence

Si la mise en production cause des problèmes, voici une stratégie de repli pragmatique :

  1. Rollback 1 : Supprimez l’entrée DS chez le parent (si vous devez permettre le fonctionnement à court terme sans validation). Remarque : cela rétablit des réponses DNS non sécurisées mais fonctionnelles.
  2. Rollback 2: Si cela n’est pas possible, restaurez le fichier de zone signé précédent et la configuration DNSKEY, puis publiez-les ; n’augmentez pas les TTL si possible, laissez plutôt les caches s’expirer.
  3. Communication : Informez immédiatement les équipes concernées, les pipelines CI/CD et le support du registrar externe.

Monitoring et maintenance en production

Tâches régulières :

  • Surveiller les dates d’expiration des RRSIG ; générer des alertes lorsque des signatures expirent dans une fenêtre prédéfinie (p. ex. 7 jours).
  • Respecter et documenter le calendrier de rollover des clés.
  • Exécuter automatiquement des signatures de test et des contrôles de validation depuis plusieurs réseaux (p. ex. via des jobs CI ou des contrôles de monitoring).

Conclusion : implémenter DNSSEC comme une démarche opérationnelle, pas comme une tâche ponctuelle

DNSSEC augmente la sécurité de la résolution de noms, mais introduit une complexité opérationnelle : gestion des clés, publication des DS auprès du parent, processus de rollover et monitoring sont des tâches opérationnelles centrales. Les implémentations réussies suivent des processus clairs, des vérifications automatisées et des procédures de rollback testées. Prévoyez des ressources pour la gestion des clés (HSM ou KMS), testez les workflows du registrar et automatisez la surveillance des signatures. En respectant ces points, vous réduirez le risque d’interruptions et ferez de DNSSEC un élément permanent du durcissement de votre infrastructure.

Commandes de vérification et exemples

Sélection de commandes utiles pour une vérification rapide :

Shell
# Anzeigen aller DNSKEYs der Zone
dig +dnssec example.com DNSKEY

# RRSIG-Details anzeigen
dig +dnssec example.com RRSIG

# Prüfen ob Resolver die Antwort validiert (ad flag)
dig +short +dnssec @8.8.8.8 example.com A | grep -i ad || echo "Not validated"

# Exportieren des DS-Werts aus einer KSK-Datei
dnssec-dsfromkey Kexample.com.+008+12345.key

Liste de contrôle pour la mise en œuvre initiale (version courte)

  • Staging : signer et valider dans un environnement de test.
  • Politique de clés : KSK hors ligne/HSM, ZSK en rotation automatisée.
  • Registrar : vérifier l’API ou le support, tester le workflow DS.
  • Monitoring : mettre en place le suivi de l’expiration des RRSIG, la dérive des DS et les erreurs de validation.
  • Plan de rollback : supprimer le DS, restaurer l’ancienne zone, playbook de communication.

Sources et outils (recommandations)

Outils courants : BIND (dnssec-keygen, dnssec-signzone), Knot, PowerDNS, delv/drill pour la validation, OpenDNSSEC pour l’intégration HSM et l’automatisation des clés. Choisissez l’outil adapté à votre structure opérationnelle et testez exhaustivement les points d’intégration (API du registrar, réplication de zones).

Résumé : L’implémentation de DNSSEC est maîtrisable si vous définissez au préalable la gestion des clés, les tests, les workflows du registrar et le monitoring. Mettez en place des processus clairs pour KSK/ZSK, le rollover et la récupération, et automatisez les contrôles récurrents. Vous minimiserez ainsi les risques opérationnels et assurerez une chaîne de confiance robuste pour vos zones DNS.

La signature DNS et les aspects KSK/ZSK sont également importants pour ce sujet. L’article situe ces éléments de manière compréhensible et indique les points essentiels pour l’exploitation quotidienne.