| 1 | AROC-EN Mali |
|---|
| 2 | Exercice DNSSEC |
|---|
| 3 | |
|---|
| 4 | 1. Installer BIND9 |
|---|
| 5 | |
|---|
| 6 | # apt-get install bind9 |
|---|
| 7 | |
|---|
| 8 | Vérifier que BIND9 tourne |
|---|
| 9 | |
|---|
| 10 | # /etc/init.d/bind9 start |
|---|
| 11 | # rndc status |
|---|
| 12 | |
|---|
| 13 | 2. Les fichiers de configuration de BIND9 se situent dans /etc/bind |
|---|
| 14 | |
|---|
| 15 | # cd /etc/bind |
|---|
| 16 | |
|---|
| 17 | Nous allons créer une zone, dnssec.aroc, et la signer. Comme nous devons |
|---|
| 18 | créer et stocker des clés pour signer cette zone, nous devons créer un |
|---|
| 19 | répertoire pour tout contenir: |
|---|
| 20 | |
|---|
| 21 | # mkdir db.dnssec.aroc |
|---|
| 22 | # cd db.dnssec.aroc |
|---|
| 23 | |
|---|
| 24 | 3. Créer le fichier zone non-signé: |
|---|
| 25 | |
|---|
| 26 | # vi dnssec.aroc |
|---|
| 27 | |
|---|
| 28 | C'est une zone normale, sans informations DNSSEC dedans. |
|---|
| 29 | |
|---|
| 30 | Voici un exemple pour vous aider à démarrer. |
|---|
| 31 | |
|---|
| 32 | $TTL 3600 |
|---|
| 33 | |
|---|
| 34 | @ SOA tldXX.aroc. nsrc.nsrc.org. ( |
|---|
| 35 | 0 ; serial |
|---|
| 36 | 28800 ; refresh |
|---|
| 37 | 3600 ; retry |
|---|
| 38 | 604800 ; expire |
|---|
| 39 | 3600 ) ; negative-cache TTL |
|---|
| 40 | |
|---|
| 41 | NS tldXX.aroc. |
|---|
| 42 | |
|---|
| 43 | test TXT "voici un TXT RRSet, que nous allons signer" |
|---|
| 44 | TXT "voici un autre enregistrement dans le meme RRset" |
|---|
| 45 | |
|---|
| 46 | Vérifier que la zone que vous avez créé n'a pas d'erreurs dedans: |
|---|
| 47 | |
|---|
| 48 | # named-checkzone dnssec.aroc ./dnssec.aroc |
|---|
| 49 | |
|---|
| 50 | |
|---|
| 51 | 4. Créér les KSK pour la zone DNSSEC.AROC |
|---|
| 52 | |
|---|
| 53 | # dnssec-keygen -a RSASHA1 -b 4096 -n ZONE -f KSK -r /dev/urandom dnssec.aroc |
|---|
| 54 | |
|---|
| 55 | Ceci est une clé 2048-bit RSA, et c'est une KSK. Cette clé sera stockée |
|---|
| 56 | dans un fichier. Trouvez la en faisant ls (ou en regardant bien la sortie |
|---|
| 57 | de la commande dnssec-keygen), et NOTEZ le nom de ce fichier. |
|---|
| 58 | |
|---|
| 59 | On utilise /dev/urandom pour générer des chiffres aléatoires, mais |
|---|
| 60 | uniquement dans le contexte de cet exercice. Normalement on utiliserait |
|---|
| 61 | /dev/random (sans 'u'), et nous obtiendrions des chiffres aléatoires de |
|---|
| 62 | plus grande qualité, mais ceci prendrait plus longtemps. |
|---|
| 63 | |
|---|
| 64 | 5. Créer une ZSK pour la zone DNSSEC.AROC |
|---|
| 65 | |
|---|
| 66 | # dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -r /dev/urandom dnssec.aroc |
|---|
| 67 | |
|---|
| 68 | Ceci est une clé1024-bit RSA, et elle sera utilisée comme ZSK. Encore |
|---|
| 69 | une fois, elle sera stockée dans un fichier. |
|---|
| 70 | |
|---|
| 71 | Si vous devenez confus et ne savez plus quelle clé est ZSK et KSK, |
|---|
| 72 | rappelez vous que la plus petite (taille fichier, ls -l) (qui servira |
|---|
| 73 | Ã signer la zone, est la ZSK. |
|---|
| 74 | |
|---|
| 75 | Noter le nom du fichier. |
|---|
| 76 | |
|---|
| 77 | Voir l'étape 4) cf. le commentaire sur /dev/urandom |
|---|
| 78 | |
|---|
| 79 | |
|---|
| 80 | 6. Inclure la KSK et la ZSK dans le fichier non-signé: |
|---|
| 81 | |
|---|
| 82 | Add the following lines to the dnssec.aroc zone file: |
|---|
| 83 | |
|---|
| 84 | $INCLUDE "/etc/bind/db.dnssec.aroc/nom_du_fichier_KSK.key" |
|---|
| 85 | $INCLUDE "/etc/bind/db.dnssec.aroc/nom_du_fichier_ZSK.key" |
|---|
| 86 | |
|---|
| 87 | Revérifier que la zone est correcte et ne contient pas d'erreur |
|---|
| 88 | aprÚs cette modification. |
|---|
| 89 | |
|---|
| 90 | # named-checkzone dnssec.aroc ./dnssec.aroc |
|---|
| 91 | |
|---|
| 92 | On pourrait également copier/coller le contenu des fichiers de |
|---|
| 93 | clé ZSK et KSK directement dans la zone. Mais il faut être sûr |
|---|
| 94 | de le faire correctement. Pas besoin de copier/coller avec |
|---|
| 95 | l'utilisation de la directive $INCLUDE. |
|---|
| 96 | |
|---|
| 97 | 7. Signer la zone |
|---|
| 98 | |
|---|
| 99 | # dnssec-signzone -N unixtime dnssec.aroc |
|---|
| 100 | |
|---|
| 101 | En utilisant la commande "-N unixtime", on fait savoir à dnssec-signzone |
|---|
| 102 | qu'il doit mettre à jour le numéro de série automatiquement. Ceci nous |
|---|
| 103 | évite de devoir le faire à la main dans le fichier non-signé. |
|---|
| 104 | |
|---|
| 105 | Regarder le contenu de votre répertoire: |
|---|
| 106 | |
|---|
| 107 | # ls |
|---|
| 108 | dnssec.aroc Kdnssec.aroc.+005+34222.private |
|---|
| 109 | dnssec.aroc.signed Kdnssec.aroc.+005+34653.key |
|---|
| 110 | dsset-dnssec.aroc. Kdnssec.aroc.+005+34653.private |
|---|
| 111 | Kdnssec.aroc.+005+34222.key keyset-dnssec.aroc. |
|---|
| 112 | # |
|---|
| 113 | |
|---|
| 114 | Explication: |
|---|
| 115 | |
|---|
| 116 | dnssec.aroc unsigned zone file |
|---|
| 117 | dnssec.aroc.signed signed zone file |
|---|
| 118 | dsset-dnssec.aroc. DS record you could send to your parent |
|---|
| 119 | keyset-dnssec.aroc. the DNSKEY record that the DS record matches |
|---|
| 120 | Kdnssec.aroc.*.key public keys we generated earlier |
|---|
| 121 | Kdnssec.aroc.*.private private keys we generated earlier |
|---|
| 122 | |
|---|
| 123 | |
|---|
| 124 | Vérifier que la zone que vous avez signée est correcte: |
|---|
| 125 | |
|---|
| 126 | # named-checkzone dnssec.aroc ./dnssec.aroc.signed |
|---|
| 127 | |
|---|
| 128 | |
|---|
| 129 | 8. Servir la zone |
|---|
| 130 | |
|---|
| 131 | La zone signée est une zone comme toute autre -- elle contient simplement |
|---|
| 132 | des enregistrements en plus. Pour indiquer à BIND9 qu'il doit servir |
|---|
| 133 | cette zone, nous devons l'ajouter à named.conf. Le meilleur endroit pour |
|---|
| 134 | effectuer ce changement sur Ubuntu est dans /etc/bind/named.conf.local |
|---|
| 135 | |
|---|
| 136 | # cd /etc/bind |
|---|
| 137 | # vi named.conf.local |
|---|
| 138 | |
|---|
| 139 | ... et ajouter ceci à la fin du fichier: |
|---|
| 140 | |
|---|
| 141 | zone "dnssec.aroc" { |
|---|
| 142 | type master; |
|---|
| 143 | file "/etc/bind/db.dnssec.aroc/dnssec.aroc.signed"; |
|---|
| 144 | }; |
|---|
| 145 | |
|---|
| 146 | Vérifier que vous n'avez pas fait de faute de frappe en vérifiant la |
|---|
| 147 | configuration: |
|---|
| 148 | |
|---|
| 149 | # named-checkconf /etc/bind/named.conf |
|---|
| 150 | |
|---|
| 151 | Si il n'y a pas d'erreurs, vous ne verrez aucun message de la part de |
|---|
| 152 | named-checkcconf. |
|---|
| 153 | |
|---|
| 154 | Dites à BIND9 de recharger sa configuration: |
|---|
| 155 | |
|---|
| 156 | # rndc reconfig |
|---|
| 157 | |
|---|
| 158 | Envoyez des requêtes à votre serveur de noms, et observez les |
|---|
| 159 | réponses: |
|---|
| 160 | |
|---|
| 161 | # dig @127.0.0.1 dnssec.aroc SOA |
|---|
| 162 | # dig @127.0.0.1 dnssec.aroc DNSKEY |
|---|
| 163 | # dig @127.0.0.1 test.dnssec.aroc TXT |
|---|
| 164 | |
|---|
| 165 | Essayez maintenant d'ajouter l'option +dnssec, et vous verrez les |
|---|
| 166 | signatures apparaître dans les réponses: |
|---|
| 167 | |
|---|
| 168 | # dig @127.0.0.1 dnssec.aroc SOA +dnssec |
|---|
| 169 | # dig @127.0.0.1 dnssec.aroc DNSKEY +dnssec |
|---|
| 170 | # dig @127.0.0.1 test.dnssec.aroc TXT +dnssec |
|---|
| 171 | |
|---|
| 172 | Quelles sont les dates d'inception et d'expiration sur les signatures ? |
|---|
| 173 | |
|---|
| 174 | |
|---|
| 175 | 9. Rappel! |
|---|
| 176 | |
|---|
| 177 | En réalité, vous devrez re-signer réguliÚrement afin que vos signatures |
|---|
| 178 | n'expirent pas. |
|---|
| 179 | |
|---|
| 180 | Quand vous rédigez la zone, pas besoin de modifier la version signée |
|---|
| 181 | (qui sera plus grosse et compliquée à lire) - vous modifiez la |
|---|
| 182 | version non-signée: |
|---|
| 183 | |
|---|
| 184 | # cd /etc/bind/db.dnssec.aroc |
|---|
| 185 | # vi dnssec.aroc |
|---|
| 186 | |
|---|
| 187 | AprÃs tout changement, vous devez recréer de nouvelles signatures: |
|---|
| 188 | |
|---|
| 189 | # cd /etc/bind/db.dnssec.aroc |
|---|
| 190 | # dnssec-signzone -N unixtime dnssec.aroc |
|---|
| 191 | |
|---|
| 192 | Encore une fois, en utilisant "-N unixtime", on fait savoir à dnssec-signzone |
|---|
| 193 | qu'il doit mettre à jour le numéro de série dans le SOA. Pas besoin de le |
|---|
| 194 | mettre à jour dans le fichier non-signé. |
|---|
| 195 | |
|---|