+++

title = "Dépucelage DNSSEC (2)"
date = 2012-05-09
aliases = [ "post/2012/05/09/Dépucelage-DNSSEC-(2)"]
[taxonomies]
tags = [ "internet", "dns" ]
+++

Parce qu'il y a des moments où il faut aller péter des culs !

<!-- more -->

Dans la première partie, on a vu le principe de fonctionnement théorique, on va maintenant passer à la pratique. Il faut donc commencer par vérifier que ton registrar préféré peut prendre la clé que tu vas générer dans quelques minutes.

Il faut aussi t'assurer que la société ou l'association qui s'occupe de la racine de ton domaine prenne bien en compte DNSSEC. Il est ouvert sur .eu et .net pour tous, je ne connais pas le statut des autres.

Je précise que tout a été réalisé avec Bind 9.7, ce qui implique beaucoup de manipulation manuelle. Bind 9.9 semble bien plus optimisé, mais je n'ai pas encore eu le temps de m'y pencher.

# Générer ses clés

Un peu comme en SSH, il va falloir créer des clés pour signer les zones DNS. Comme on l'a vu avant, il y a deux paires de clés à générer : la ZSK (Zone Signing Key) et la KSK (Key Signing Key). On commence par la KSK, avec la magnifique ligne suivante :

```
# dnssec-keygen -f KSK -r /dev/urandom -a RSASHA256 -b 2048 -n ZONE mabite.net
```

On précise ici simplement le nom de la zone à signer et l'algorithme à utiliser. Attention, logiquement on ne doit pas utiliser `-r /dev/urandom` qui génère des nombres pseudo-aléatoires pas assez aléatoires (le problème c'est que, sans ça, ça prend un peu des plombes à faire !).

On renomme la clé générée (parce qu'elle a un nom absolument imbitable) :

```
# mv Kmabite.net.+008+51505.key Kmabite.net.ksk.key
# mv Kmabite.net.+008+51505.private Kmabite.net.ksk.private
```

Et rebelote pour la ZSK (c'est à peu près les mêmes commandes) :
```
# dnssec-keygen -r /dev/urandom -a RSASHA256 -b 2048 -n ZONE mabite.net
Kmabite.net.+008+61026
# mv Kmabite.net.+008+61026.key Kmabite.net.zsk.key
# mv Kmabite.net.+008+61026.private Kmabite.net.zsk.private
```

aintenant, on va délicatement insérer dans la zone nos grosses clés fraîchement générées :

```
# cat db.mabite.net | tail -n 2
$include /etc/bind/Kmabite.net.zsk.key ; ZSK
$include /etc/bind/Kmabite.net.ksk.key ; KSK
```

# Oh oui ! Signe-moi la zone !! Plus fort !

agie de l'informatique et des clés RSA, tu es maintenant prêt à générer une zone signée parfaitement valide d'un point de vue DNS. Pour cela, il suffit d'utiliser la commande ci-dessous :

```
# dnssec-signzone -e20120601000000 -p -t -g -k Kmabite.net.ksk.key -o mabite.net db.mabite.net Kmabite.net.zsk.key
```

Alors là, je sais : elle est un peu raide. Pourtant, c'est pas si compliqué que ça : `-e` permet d'indiquer la durée de validité de la clé de signature de zone (en l'occurence le 1er juin 2012). Les autres options servent simplement à indiquer le fichier de zone d'origine `db.mabite.net`, la zone en question `mabite.net` et les différents clés de chiffrement.

Elle est un peu dure à avaler, mais c'est parce que c'est la première… Tu vas t'habituer.

Une fois que la zone est signée, tu obtiens deux magnifiques fichiers, le fichier `db.mabite.net` et le fichier `db.mabite.net.signed` (au passage tu peux voir qu'il a sévèrement engraissé !). Il suffit donc d'activer proprement DNSSEC au niveau de Bind :

```
options {
…
dnssec-enable yes;
…
}
```

Et de changer la zone servie :
```
zone "mabite.net" {
        type master;
        file "/etc/bind/db.mabite.net.signed";
};
```

À partir de ce moment, il « suffit » que les serveurs primaires et secondaires supportent bien DNSSEC et… c'est presque fini !

Il reste en effet une ultime étape : donner les informations nécessaires à ton registrar pour qu'il puisse poser les informations de la KSK dans la zone mère de ta zone. Malheureusement, à cette étape, il faudra voir directement avec lui pour savoir quelle est la procédure.

Ah et pour la vérification rendez-vous [là](http://dnssec-debugger.verisignlabs.com/) ou [là](http://dnsviz.net/).

Voilà, maintenant, plus personne ne peut usurper ta zone (enfin, en tout cas pas les clients « sérieux »). Ouf, bon ben, je vais reprendre 4 mois de vacances moi, parce que je suis épuisé là…
