Outils pour utilisateurs

Outils du site


kb:crypto:dnssec

Signer ses entrées DNS avec DNSSEC sous Bind9

:!: Gérer son DNSSEC est plutôt simple, mais demande de la précaution, car si vous faites une erreur, les résolutions DNS de votre domaine seront rejetées par les résolveurs.

Signer un domaine

Configuration de votre Bind9

Avant de commencer, il faut s'assurer de plusieurs choses. La première est qu'il faut impérativement que l'utilisateur de votre service bind9 puisse écrire dans le dossier contenant les zones.
Personnellement, je crée un dossier /var/lib/bind9/zones appartenant à l'utilisateur bind, et je fais un lien symbolique pour qu'il apparaisse aussi dans le dossier /etc/bind/.

Il faudra ensuite définir un dossier pour contenir les clés. Ce dossier devra est lisible par l'utilisateur de votre service bind9. Dans la configuration, dans la catégorie options, vous devrez donc définir :

key-directory "/etc/bind/keys";

Ensuite, je vous conseille de définir la méthode de mise à jour des zones en mode date, ce n'est pas obligatoire, mais je préfère comme ça. Dans votre configuration, toujours dans la catégorie options, il vous faut simplement définir :

serial-update-method date;

Configuration de votre domaine

Pour commencer, il faut générer les clés pour ce domaine. Avant cela, il faut il faut générer.

Pour générer une clé KSK avec l’algorithme 16 :

# dnssec-keygen -a ED448 -3 -n ZONE -f KSK exemple.net

Pour générer une clé ZSK avec l’algorithme 16 :

# dnssec-keygen -a ED448 -3 -n ZONE exemple.net

Ensuite, dans la déclaration de votre zone dans la configuration de bind9, il faudra inclure ces deux lignes :

auto-dnssec maintain;
inline-signing true;

Et recharger bind9 avec :

# rndc reload

Une fois fait, vérifiez que votre domaine est bien signé en faisant une requête DNS simple :

# dig +short @ns01.virtit.fr virtit.fr DNSKEY

Vous devriez voir vos 2 clés:

257 3 14 8EFFgoNyjBNEVEJv2bcWEuJNVce/UAEFLUmImpSbXoheyMxPZie7XGLW lr7JK0kxt/LqHz5vIqNq5dmjLMOKLo+sziw8/Xn03aM+RdAOOPO9YYQk zMMf5x49kbGRE0UQ
256 3 14 hnBDXcku9GgDVcs+UjwE837AXqkg22dzNDRy9ovb+JgOPUSJxggyTpos DorqO+C5zklhUQQGdS59fNiL+9w/jcGNAEj6d/vkO941KuH0M1WxkP1u WkDidQEnvXKYMu3d

Ensuite, comme quand vous avez créé vos clés, il va falloir aller définir les entrées DS dans votre registrar. Il est obligatoire de déclarer les entrées DS de ses clés KSK, et facultatif de le faire pour les clés ZSK. La norme étant même de ne pas le faire.

Pour récupérer l'entrée DS, faites la commande :

dnssec-dsfromkey -a SHA-384 Kvirtit.fr.+016+17928.key

et ensuite, on va l'ajouter dans votre registrar. Il m'est impossible de couvrir tout les registrar, donc a vous de trouver comment faire.

Une fois fait, vous pouvez vérifier que les signatures sont valides via le site https://dnsviz.net/

Roll-Over des clés

La pratique recommandée est de renouveler ses clés ZSK tout les 3 mois, et les KSK tous les ans.

Personnellement, je ne prends pas le temps de le faire, je fais le renouvellement des 2 clés tous les ans environ.

Rendez-vous dans votre dossier de clé, et générez les clés que vous souhaitez renouveler. Comme ceci pour la KSK :

# dnssec-keygen -a ED448 -3 -n ZONE -f KSK -r /dev/urandom exemple.net

et comme cela pour la ZSK:

# dnssec-keygen -a ED448 -3 -n ZONE -r /dev/urandom exemple.net

Assurez vous que les clés sont lisibles par l'utilisateur de bind, dans mon cas, il suffit d'autoriser la lecture au groupe, via :

# chmod g+r /etc/bind/keys/*

Ensuite, rechargez la configuration de bind :

# rndc reload

Ensuite, vous pouvez vérifier que les clés ont été chargées via :

# dig +short @ns01.virtit.fr virtit.fr DNSKEY

Vous devriez voir 4 clés, les anciennes et les nouvelles, par exemple :

257 3 14 8EFFgoNyjBNEVEJv2bcWEuJNVce/UAEFLUmImpSbXoheyMxPZie7XGLW lr7JK0kxt/LqHz5vIqNq5dmjLMOKLo+sziw8/Xn03aM+RdAOOPO9YYQk zMMf5x49kbGRE0UQ
256 3 14 hnBDXcku9GgDVcs+UjwE837AXqkg22dzNDRy9ovb+JgOPUSJxggyTpos DorqO+C5zklhUQQGdS59fNiL+9w/jcGNAEj6d/vkO941KuH0M1WxkP1u WkDidQEnvXKYMu3d
256 3 16 qI8l3+HET31u9qSw3l8mjKVoM0QI6dRlHAH2j/VySfM7cc4FakesgoT7 4Kj8tIDWShTIAbQ8gh2A
257 3 16 XKBH2mz7VoHzOPxcYPAqfjxr9yAu3Xweu7pGSGhxxQx7TJilIYj0f1zV uqFh7TQ6cmdna3HPrbaA

Ensuite, comme quand vous avez créé vos clés, il va falloir aller définir les entrées DS dans votre registrar. Pour rappel, il est obligatoire de déclarer les entrées DS de ses clés KSK.

Pour récupérer l'entrée, faites la commande :

dnssec-dsfromkey -a SHA-384 Kvirtit.fr.+016+17928.key

et ensuite, on va l'ajouter dans votre registrar. Il m'est impossible de couvrir tout les registrar, donc a vous de trouver comment faire.

:!: Ne supprimez pas les anciennes entrées DS pour le moment

Il faudra attendre l'expiration du TTL de vos entrées DS, ce qui dépend de votre registrar. Vous pouvez l'obtenir en faisant une requete avec dig, mais par sécurité, je préfère attendre 1 ou 2 jours avant de la supprimer. De même, je vérifie toujours que les signatures via https://dnsviz.net/ sont valides avant de les supprimer.

kb/crypto/dnssec.txt · Dernière modification : 2022/07/09 19:54 de beu