AROC-EN Mali Exercice DNSSEC 1. Installer BIND9 # apt-get install bind9 Vérifier que BIND9 tourne # /etc/init.d/bind9 start # rndc status 2. Les fichiers de configuration de BIND9 se situent dans /etc/bind # cd /etc/bind Nous allons créer une zone, dnssec.aroc, et la signer. Comme nous devons créer et stocker des clés pour signer cette zone, nous devons créer un répertoire pour tout contenir: # mkdir db.dnssec.aroc # cd db.dnssec.aroc 3. Créer le fichier zone non-signé: # vi dnssec.aroc C'est une zone normale, sans informations DNSSEC dedans. Voici un exemple pour vous aider à démarrer. $TTL 3600 @ SOA tldXX.aroc. nsrc.nsrc.org. ( 0 ; serial 28800 ; refresh 3600 ; retry 604800 ; expire 3600 ) ; negative-cache TTL NS tldXX.aroc. test TXT "voici un TXT RRSet, que nous allons signer" TXT "voici un autre enregistrement dans le meme RRset" Vérifier que la zone que vous avez créé n'a pas d'erreurs dedans: # named-checkzone dnssec.aroc ./dnssec.aroc 4. Créér les KSK pour la zone DNSSEC.AROC # dnssec-keygen -a RSASHA1 -b 4096 -n ZONE -f KSK -r /dev/urandom dnssec.aroc Ceci est une clé 2048-bit RSA, et c'est une KSK. Cette clé sera stockée dans un fichier. Trouvez la en faisant ls (ou en regardant bien la sortie de la commande dnssec-keygen), et NOTEZ le nom de ce fichier. On utilise /dev/urandom pour générer des chiffres aléatoires, mais uniquement dans le contexte de cet exercice. Normalement on utiliserait /dev/random (sans 'u'), et nous obtiendrions des chiffres aléatoires de plus grande qualité, mais ceci prendrait plus longtemps. 5. Créer une ZSK pour la zone DNSSEC.AROC # dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -r /dev/urandom dnssec.aroc Ceci est une clé1024-bit RSA, et elle sera utilisée comme ZSK. Encore une fois, elle sera stockée dans un fichier. Si vous devenez confus et ne savez plus quelle clé est ZSK et KSK, rappelez vous que la plus petite (taille fichier, ls -l) (qui servira à signer la zone, est la ZSK. Noter le nom du fichier. Voir l'étape 4) cf. le commentaire sur /dev/urandom 6. Inclure la KSK et la ZSK dans le fichier non-signé: Add the following lines to the dnssec.aroc zone file: $INCLUDE "/etc/bind/db.dnssec.aroc/nom_du_fichier_KSK.key" $INCLUDE "/etc/bind/db.dnssec.aroc/nom_du_fichier_ZSK.key" Revérifier que la zone est correcte et ne contient pas d'erreur après cette modification. # named-checkzone dnssec.aroc ./dnssec.aroc On pourrait également copier/coller le contenu des fichiers de clé ZSK et KSK directement dans la zone. Mais il faut être sûr de le faire correctement. Pas besoin de copier/coller avec l'utilisation de la directive $INCLUDE. 7. Signer la zone # dnssec-signzone -N unixtime dnssec.aroc En utilisant la commande "-N unixtime", on fait savoir à dnssec-signzone qu'il doit mettre à jour le numéro de série automatiquement. Ceci nous évite de devoir le faire à la main dans le fichier non-signé. Regarder le contenu de votre répertoire: # ls dnssec.aroc Kdnssec.aroc.+005+34222.private dnssec.aroc.signed Kdnssec.aroc.+005+34653.key dsset-dnssec.aroc. Kdnssec.aroc.+005+34653.private Kdnssec.aroc.+005+34222.key keyset-dnssec.aroc. # Explication: dnssec.aroc unsigned zone file dnssec.aroc.signed signed zone file dsset-dnssec.aroc. DS record you could send to your parent keyset-dnssec.aroc. the DNSKEY record that the DS record matches Kdnssec.aroc.*.key public keys we generated earlier Kdnssec.aroc.*.private private keys we generated earlier Vérifier que la zone que vous avez signée est correcte: # named-checkzone dnssec.aroc ./dnssec.aroc.signed 8. Servir la zone La zone signée est une zone comme toute autre -- elle contient simplement des enregistrements en plus. Pour indiquer à BIND9 qu'il doit servir cette zone, nous devons l'ajouter à named.conf. Le meilleur endroit pour effectuer ce changement sur Ubuntu est dans /etc/bind/named.conf.local # cd /etc/bind # vi named.conf.local ... et ajouter ceci à la fin du fichier: zone "dnssec.aroc" { type master; file "/etc/bind/db.dnssec.aroc/dnssec.aroc.signed"; }; Vérifier que vous n'avez pas fait de faute de frappe en vérifiant la configuration: # named-checkconf /etc/bind/named.conf Si il n'y a pas d'erreurs, vous ne verrez aucun message de la part de named-checkcconf. Dites à BIND9 de recharger sa configuration: # rndc reconfig Envoyez des requêtes à votre serveur de noms, et observez les réponses: # dig @127.0.0.1 dnssec.aroc SOA # dig @127.0.0.1 dnssec.aroc DNSKEY # dig @127.0.0.1 test.dnssec.aroc TXT Essayez maintenant d'ajouter l'option +dnssec, et vous verrez les signatures apparaître dans les réponses: # dig @127.0.0.1 dnssec.aroc SOA +dnssec # dig @127.0.0.1 dnssec.aroc DNSKEY +dnssec # dig @127.0.0.1 test.dnssec.aroc TXT +dnssec Quelles sont les dates d'inception et d'expiration sur les signatures ? 9. Rappel! En réalité, vous devrez re-signer régulièrement afin que vos signatures n'expirent pas. Quand vous rédigez la zone, pas besoin de modifier la version signée (qui sera plus grosse et compliquée à lire) - vous modifiez la version non-signée: # cd /etc/bind/db.dnssec.aroc # vi dnssec.aroc AprÈs tout changement, vous devez recréer de nouvelles signatures: # cd /etc/bind/db.dnssec.aroc # dnssec-signzone -N unixtime dnssec.aroc Encore une fois, en utilisant "-N unixtime", on fait savoir à dnssec-signzone qu'il doit mettre à jour le numéro de série dans le SOA. Pas besoin de le mettre à jour dans le fichier non-signé.