DNSSEC (Domain Name System Security Extensions) est une technologie qui renforce l'authentification dans le DNS en utilisant des signatures numériques. Il permet à un client DNS de vérifier que les réponses qu'il reçoit d'un serveur DNS sont authentiques et n'ont pas été altérées. Il ne chiffre pas les requêtes, mais garantit leur intégrité.
Pourquoi utiliser DNSSEC ?
Le DNS a été conçu sans sécurité. Un attaquant peut intercepter une requête DNS et renvoyer une fausse adresse IP, redirigeant un utilisateur vers un site malveillant. C'est ce qu'on appelle l'empoisonnement de cache DNS (cache poisoning). DNSSEC empêche ce type d'attaque.
Prérequis
- Un serveur DNS BIND9 fonctionnel, maître pour une zone (ex: `example.com`).
- Accès root ou privilèges sudo.
- Votre registrar de nom de domaine doit supporter DNSSEC pour pouvoir publier vos clés.
Le fonctionnement en bref
DNSSEC repose sur une chaîne de confiance basée sur la cryptographie asymétrique.
- ZSK (Zone Signing Key) : Une clé qui signe tous les enregistrements de votre zone (A, MX, CNAME, etc.).
- KSK (Key Signing Key) : Une clé plus robuste qui signe uniquement la ZSK.
- Enregistrement DS (Delegation Signer) : Une empreinte (hash) de votre KSK que vous publiez chez votre registrar. C'est ce qui permet de lier votre zone à la chaîne de confiance globale du DNS.
Configuration avec BIND9
Étape 1 : Activer DNSSEC dans BIND
Modifiez votre fichier de configuration named.conf.options :
sudo nano /etc/bind/named.conf.options
Assurez-vous que les options suivantes sont présentes :
options {
// ... autres options
dnssec-validation auto;
listen-on-v6 { any; };
};
Activez la signature en ligne pour votre zone dans named.conf.local :
sudo nano /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
// Activer la maintenance automatique de la signature
inline-signing yes;
auto-dnssec maintain;
key-directory "/etc/bind/keys"; // Spécifier un répertoire pour les clés
};
# Créez le répertoire pour les clés
sudo mkdir /etc/bind/keys
sudo chown bind:bind /etc/bind/keys
sudo systemctl restart bind9
Étape 2 : Générer les clés
Grâce à la configuration `auto-dnssec maintain`, BIND va générer les clés automatiquement ! Après le redémarrage, vérifiez le répertoire des clés :
sudo ls -l /etc/bind/keys
Vous devriez y trouver plusieurs fichiers `Kexample.com.+...key` et `Kexample.com.+...private`.
Étape 3 : Récupérer l'enregistrement DS
Les clés ont été générées et la zone est maintenant signée en mémoire. Nous devons récupérer l'enregistrement DS à fournir à notre registrar.
# Chercher les enregistrements DS pour la KSK (Key Signing Key)
grep -r "KSK" /var/log/syslog | grep "DNSKEY"
# Ou utilisez un outil comme dnssec-dsfromkey
sudo dnssec-dsfromkey -2 /etc/bind/keys/Kexample.com.+...key
Vous obtiendrez une sortie comme :
example.com. IN DS 31825 8 2 ABCDEFGHIJKLMNOP1234567890
Les informations importantes sont : `31825` (Key Tag), `8` (Algorithme), `2` (Digest Type) et le long hash.
Étape 4 : Publier l'enregistrement DS chez le registrar
Connectez-vous à l'interface de gestion de votre nom de domaine chez votre registrar (OVH, Gandi, GoDaddy, etc.). Cherchez la section "DNSSEC" et copiez-y les 4 valeurs de l'enregistrement DS. La propagation peut prendre de quelques minutes à 24 heures.
Une fois l'enregistrement DS propagé, votre zone est entièrement sécurisée par DNSSEC.
Vérification
Vous pouvez utiliser des outils en ligne comme `dnssec-analyzer.verisignlabs.com` ou `dnsviz.net` en entrant votre nom de domaine. Ils vous montreront un graphique de la chaîne de confiance.
En ligne de commande, utilisez `dig` :
# +dnssec demande les enregistrements de signature (RRSIG)
dig +dnssec www.example.com @localhost
# Le flag "ad" (Authenticated Data) dans la réponse indique que la validation a réussi
dig +dnssec www.example.com @8.8.8.8
Si vous voyez le flag `ad` dans les en-têtes de la réponse, cela signifie que le résolveur a pu valider votre signature DNSSEC avec succès.
Avec la configuration `auto-dnssec maintain`, BIND gérera automatiquement la rotation des clés ZSK. Cependant, vous devrez intervenir manuellement pour la rotation des clés KSK, car cela implique une nouvelle publication de l'enregistrement DS chez votre registrar. Cette opération se fait généralement tous les 1 à 2 ans.
Conclusion
DNSSEC est une technologie complexe mais essentielle pour sécuriser le DNS. Grâce aux fonctionnalités modernes de BIND9 comme la signature en ligne et la maintenance automatique, sa mise en place est devenue beaucoup plus accessible. En sécurisant votre zone, vous protégez vos utilisateurs contre les attaques de type "man-in-the-middle" et renforcez la confiance dans votre nom de domaine.