Recherche


imprimer pdf
Comment configurer une zone dnssec sur serveur dédié ?

Qu'est ce que le DNSSEC


Le service dns est névralgique à la plupart des services présents sur internet, mais ce dernier a été mis à mal suite à la mise à disposition de plusieurs méthodes d'empoisonnement de zone DNS. Bien que des patchs aient été rapidement mis à disposition, une autre solution plus sécuritaire peut être mise en place : le DNSSEC.

Pour comprendre le DNSSEC, il faut comprendre ce qu'est la cryptographie asymétrique. Elle est constitué de deux clefs : une publique, et l'autre privée.
La clef privée permet de générer un chiffrage d'une information, alors que la clef publique ne permet que de la lire. La clef privée est nécessaire pour générer une clef publique. De ce fait, si votre clef publique ou le chiffrage de l'information est altéré, vous serez incapable de lire l'information.

Il est actuellement recommandé de changer la ZSK tous les 3 mois et la KSK tous les ans. Gardez aussi bien en tête que votre TLD doit valider votre zone.

Dans le cas du DNSSEC, l'administrateur ajoute donc à sa zone un chiffrage (RRSIG) de chacun des champs DNS à l'aide de sa clef privée, et rend disponible une clef publique (DNSKEY), afin de pouvoir les lire. Et nous transmettons en plus une empreinte de la clef au registre (DS).


Dans ce guide, les champs en rouge devront être remplacés par vos propres valeurs.


Dans les cadres gris, vous trouverez un exemple pratique



Prérequis


- votre nom de domaine utilise les dns associés à votre serveur dédié
- votre nom de domaine a une zone dns déjà configurée sur votre serveur dédié


Définitions


ZSK : composées d'une clef publique et d'une clef privée, elles sont utilisées pour signer les champs de la zone. Ces clefs sont inconnues du registre.
KSK : composées d'une clef publique et d'une clef privée, elles ne sont utilisées que pour signer les clefs ZSK. Ces clefs sont signé par un champ DS dans la zone mère (auprès du registre)
DNSKEY : champs contenant une clef publique
DS : C'est un condensât d'une DNSKEY, elle est transmise à la zone mère


Génerer ses clefs


Nous utilisons l'outil dnssec-keygen. Cet outil utilise l'entropie, qui est générée lors de l'utilisation de la machine. Une machine peu sollicitée peut être longue à générer. Dans ce cas, vous pouvez utiliser l'argument "-r /dev/urandom" pour gagner du temps, mais OVH ne le préconise pas.


Générer sa clef KSK


Une fois n'est pas coutume, nous travaillerons directement dans le répertoire contenant les zones DNS. Dans mon cas, ce répertoire est "/etc/named/"

Nous générons la clef avec la commande "dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE mondomaine.eu" :


root@ks34682 ~# dnssec-keygen -f KSK -r /dev/urandom -a RSASHA256 -b 2048 -n ZONE likarum.eu
Generating key pair.........................................................................+++ .............................................+++
Klikarum.eu.+008+04789

Nous remarquons que ma clef KSK se nomme Klikarum.eu.+008+04789, nous allons la renommer pour qu'elle soit plus intelligible :


root@ks34682 named# mv Klikarum.eu.+008+10954.key Klikarum.eu.ksk.key
root@ks34682 named# mv Klikarum.eu.+008+10954.private Klikarum.eu.ksk.private



Générer sa clef ZSK


Nous générons la clef avec la commande "dnssec-keygen -a RSASHA256 -b 2048 -n ZONE mondomaine.eu" :


root@ks34682 ~# dnssec-keygen -r /dev/urandom -a RSASHA256 -b 2048 -n ZONE likarum.eu
Generating key pair....................................................................+++ .....+++
Klikarum.eu.+008+43119

Nous remarquons que ma clef ZSk se nomme Klikarum.eu.+008+43119, une fois encore nous la renommons :


root@ks34682 named# mv Klikarum.eu.+008+02184.key Klikarum.eu.zsk.key
root@ks34682 named# mv Klikarum.eu.+008+02184.private Klikarum.eu.zsk.private


Insérer ses clefs dans sa zone


Les fichiers *.Key contiennent maintenant nos clefs publiques, il nous faut les insérer dans notre zone DNS. Vous pouvez soit en ajouter le contenu, soit ajouter des champs d'inclusion dans votre zone. Je choisis d'ajouter des inclusions :

$include /etc/named/Kmondomaine.eu.zsk.key ; ZSK
$include /etc/named/Kmondomaine.eu.ksk.key ; KSK

Nous en profitons pour incrémenter le serial de notre zone. Dans ma zone ci-dessous je changerai la valeur 2011122603 par 2011122604


Voici ce à quoi ressemble ma zone DNS :

root@ks34682 named# cat likarum.eu
$ttl 86400
likarum.eu. IN SOA likarum.eu. postmaster.likarum.eu. (
2011122603
21600
3600
604800
86400 )
IN NS ks34682.kimsufi.com.
IN NS ns.kimsufi.com.
IN MX 10 mail.likarum.eu.
IN A 213.251.174.72
www IN A 213.251.174.72
mail IN A 213.251.174.72
smtp IN A 213.251.174.72
pop IN A 213.251.174.72
pop3 IN A 213.251.174.72
imap IN A 213.251.174.72
sql IN A 213.251.174.72
mysql IN A 213.251.174.72
vetements IN A 213.251.174.72
likarum.eu IN TXT "v=spf1 a ~all mx ~all ptr:ovh.net ~all"
webmail IN A 213.251.174.72
$include /etc/named/Klikarum.eu.zsk.key
$include /etc/named/Klikarum.eu.ksk.key


Créer et appliquer sa zone DNSSEC



Chiffrer sa zone


Nous signons la zone avec la commande "dnssec-signzone -eYYYYMMDDHHMMSS -p -t -g -k Kmondomaine.eu.ksk.key -o mondomaine.eu le-fichier-de-ma-zone-dns Kmondomaine.eu.zsk.key".

La valeur YYYYMMDDHHMMSS représente la date d'expiration. Si je souhaite que ma zone expire le 4 mars 2012 à 4h20, j'écris : 20120304042000


root@ks34682 named# dnssec-signzone -e20120330000000 -p -t -g -k Klikarum.eu.ksk.key -o likarum.eu likarum.eu Klikarum.eu.zsk.key


Nous obtenons un fichier nommé : le-fichier-de-ma-zone-dns.signed


Configurer named


Nous vérifions que named est configuré pour prendre en charge le DNSSEC. Vous devriez trouver dans le fichier de configuration de named, la variable dnssec-enable égale à yes.


root@ks34682 named# cat /etc/bind/named.conf|grep dnssec-enable
dnssec-enable yes;

Si ce n'est pas le cas, éditez votre fichier de configuration avec nano, pico ou vim pour ajouter ou modifier cette variable

Maintenant nous devons indiquer de ne plus utiliser notre fichier de zone originel, mais son équivalent chiffré.

Dans mon fichier /etc/bind/named.conf, j'ai remplacé :


zone "likarum.eu" {
type master;
file "/etc/bind/mondomaine.eu";
};

par :


zone "likarum.eu" {
type master;
file "/etc/bind/likarum.eu.signed";
};

Et finalement, nous relançons le service DNS.


/etc/init.d/named restart


Verification


Nous vérifions la présence de la zone DNSSEC avec la commande "dig +cd +multi mondomaine.eu dnskey"


root@ks34682 named# dig +cd +multi likarum.eu dnskey
;; Truncated, retrying in TCP mode.

; <<>> DiG 9.7.3-P3-RedHat-9.7.3-2.el6_1.P3.3 <<>> +cd +multi likarum.eu dnskey
; global options
+cmd

;; Got answer:
; ->>HEADER<<- opcode
QUERY, status: NOERROR, id: 29910

; flags
qr aa rd ra cd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:
;likarum.eu. IN DNSKEY

;; ANSWER SECTION:
likarum.eu. 86400 IN DNSKEY 256 3 8 (
AwEAAbb6xT+KjF3qqeWAkswdlpQ7QW9sm9d9y7vcRJPJ
BUQdDXAtf6cRcJVI4Ql1GoCAhgrmV5/7ZbDrR3T54K+J
WAogmyfVd27uz1FLnlYAZRcLOLqGp8HLztgpwJQdbC8a
jeMx5yhYiH1ea8ZFHlumMwHJSrocgKyWyWGFZDiqRJ8A
xgYFzJDhoSSOnN3lO73NvaOQQnb7wT1BDHSuk+cc5ISS
XclyUUR0WKSeUl5LpGYgY8h4du01Da4z8gT3cS7ftIBD
7cjh0Fl6A+ADNCTiKQqD3j6f9CVCQ0uq87rPez6kyQZP
/pr3TNc6Fgv7L6SpkBR0luQYiVdlz7u77+KdnuM=
) ; key id = 2184
likarum.eu. 86400 IN DNSKEY 257 3 8 (
AwEAAabIfR/5YyblLfcTWSRat0e6LvzAYQ/EqHkvixAf
+/1LoEf/dVr0UPqTTLkhcYM5dIxIT9k35GS51TimTuis
HINBV7TdIy9rCtA4Qf2ih5JJ+M1vsd6HAQjJAFRlJeYV
lsWATet4IU9Zoy0PnU+ksJTdbyj3vlC0TEz5QyaI9N1m
DNVJkuTXuSlgcm6Rx2DVpOI9/cPtQWRYkk3EH4yXxTNR
7jVTF1eRVL4T1orW2DmZPfh+qOmNVL2Dg0gXTlbksHjG
xlZ4nHDzf4KzFxh9skJcVNBUzK/RacsLZyOzT3UAidJA
8gUOtEriO821mf+XmOhEkcAekj6ARjpCwEk+uv0=
) ; key id = 10954

; Query time
1 msec

; SERVER
127.0.0.1#53(127.0.0.1)

; WHEN
Fri Dec 30 16:09:25 2011

; MSG SIZE rcvd
580



"Configurer la zone mère"


Nous avons une zone DNSSEC fonctionnelle, mais pour qu'elle puisse être totalement sécurisée, il nous faut transmettre un condensât de votre clef KSK à votre registre.

Via votre manager OVH, nous sélectionnons votre domaine, Domaine & DNS, Délégation Sécurisée (DNSSEC), et enfin Modification:



Vous arriverez sur la page Modifier les DS du domaine mondomaine.eu :



Il ne nous reste plus qu'à remplir les différents champs (Identifiant, Drapeaux, Algorithme, et Clé publique). Tout ces éléments sont compris dans votre clef KSK public.

Voici la mienne :


root@ks34682 named# cat Klikarum.eu.ksk.key
; This is a key-signing key, keyid 10954, for likarum.eu.
Created
20111226140308 (Mon Dec 26 15:03:08 2011)

Publish
20111226140308 (Mon Dec 26 15:03:08 2011)

Activate
20111226140308 (Mon Dec 26 15:03:08 2011)

likarum.eu. IN DNSKEY 257 3 8 AwEAAabIfR/5YyblLfcTWSRat0e6LvzAYQ/EqHkvixAf+/1LoEf/dVr0 UPqTTLkhcYM5dIxIT9k35GS51TimTuisHINBV7TdIy9rCtA4Qf2ih5JJ +M1vsd6HAQjJAFRlJeYVlsWATet4IU9Zoy0PnU+ksJTdbyj3vlC0TEz5 QyaI9N1mDNVJkuTXuSlgcm6Rx2DVpOI9/cPtQWRYkk3EH4yXxTNR7jVT F1eRVL4T1orW2DmZPfh+qOmNVL2Dg0gXTlbksHjGxlZ4nHDzf4KzFxh9 skJcVNBUzK/RacsLZyOzT3UAidJA8gUOtEriO821mf+XmOhEkcAekj6A RjpCwEk+uv0=


Je constate donc que :

mon identifiant est : 10954
mon drapeau est : 257
mon algorithme est : 8
et ma clef est : AwEAAabIfR/5YyblLfcTWSRat0e6LvzAYQ/EqHkvixAf+/1LoEf/dVr0 UPqTTLkhcYM5dIxIT9k35GS51TimTuisHINBV7TdIy9rCtA4Qf2ih5JJ +M1vsd6HAQjJAFRlJeYVlsWATet4IU9Zoy0PnU+ksJTdbyj3vlC0TEz5 QyaI9N1mDNVJkuTXuSlgcm6Rx2DVpOI9/cPtQWRYkk3EH4yXxTNR7jVT F1eRVL4T1orW2DmZPfh+qOmNVL2Dg0gXTlbksHjGxlZ4nHDzf4KzFxh9 skJcVNBUzK/RacsLZyOzT3UAidJA8gUOtEriO821mf+XmOhEkcAekj6A RjpCwEk+uv0=

Une fois validé, OVH se chargera de générer le condensât, et de le transmettre au registre. Il faut en moyenne 72h pour que les champs DS soient disponible sur la zone mère.


Maintenir votre zone DNSSEC


Vous devriez maintenant avoir compris comment gérer vos clefs, signer votre zone, et transmettre vos clefs au registre. Alors qu'une zone DNS est statique et ne nécessite que peu d'entretien, une zone DNSSEC a besoin d'être renouvelée lorsque nous la modifions, mais aussi régulièrement pour conserver une sécurité optimale.


Lors de la modification d'un enregistrement


Vous devez :

- mettre à jour votre numéro de série SOA
- resigner votre zone (dnssec-signzone...)


Extension de la validité de la signature


Vous devez :

- mettre à jour votre numéro de série SOA
- resigner votre zone avec l'argument de temps adéquat (dnssec-signzone -eYYYYMMDDHHMMSS ...)



Mise en place d'une nouvelle clef ZSK


ATTENTION : Vous devez conserver les anciennes clefs un certain temps avant de les supprimer définitivement. Je vous suggère 10 jours


Vous devez :

- générer de nouvelles clefs ZSK
- ajouter vos nouvelles clefs
- mettre à jour votre numéro de série SOA
- resigner votre zone (dnssec-signzone...)


Mise en place d'une nouvelle clef KSK


ATTENTION : Vous devez conserver les anciennes clefs un certain temps avant de les supprimer définitivement. Je vous suggère 10 jours


Vous devez :

- générer de nouvelles clefs KSK et ZSK
- ajouter vos nouvelles clefs
- mettre à jour votre numéro de série SOA
- resigner votre zone (dnssec-signzone...)
- "reconfigurer" la zone DNS mère