> Tech > Utiliser DNSSEC dans BIND

Utiliser DNSSEC dans BIND

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Pour utiliser DNSSEC dans BIND 9.1.3, il faut créer une zone sécurisée sur un serveur BIND 9.1.3. Cela se fait en quatre étapes : générer des clés, créer un jeu de clés, signer le jeu de clés de la zone enfant, et signer la zone.

Générer les clés. Une zone

Utiliser DNSSEC dans BIND

sécurisée
doit avoir une ou plusieurs paires
de clés publique et privée, appelées
clés de zone. On utilise la clé privée de
la zone pour signer celle-ci. Les clients
DNS utilisent la clé publique correspondante
pour vérifier les signatures.
Quand la zone parent (example.com,
par exemple) délègue une zone enfant
sécurisée (us.example.com, par
exemple), on peut utiliser la ou les clés
privées de la zone parent pour signer la
ou les clés de la zone enfant. Si la zone
parent a de multiples paires de clés, on peut utiliser différentes clés pour signer
la ou les clés des zones parent et
enfant.

On utilise la commande dnsseckeygen
pour générer les clés sur un
serveur BIND 9.1.3. (Entrez la commande
sans aucun paramètre pour
vous informer sur l’utilisation de la
commande.) Ainsi, pour générer une
paire de clés destinée à  la zone enfant
us.example.com dans le listing 1, entrez
la commande suivante sur le serveur
BIND :

dnssec-keygen a DSA b 1024-n
ZONE us.example.com

L'option -a définit quel algorithme
de signature numérique les clés générées
utiliseront. D'après RFC 2535,
DSA est l'algorithme obligatoire pour
l'interopérabilité DNSSEC, mais BIND
9.1.3 accepte également Deffie-
Hellman, Hash Message Authentication
Code (HMAC)-MD5, RSA, et
RSA-MD5. L'option -b indique la longueur de clé (1024 bits dans cet
exemple). L'option -n définit le type de
nom de la clé : zone, hôte, entité ou
utilisateur. Le dernier paramètre de la
commande exemple est le nom de clé,
qui doit être le même que le nom de
zone si le type de nom indiqué est
zone.

La commande dnssec-keygen permet
également de choisir le protocole
que les clés générées supporteront ;
par défaut, DNSSEC. La commande
sauvegarde les clés générées dans
deux fichiers de sortie dans le répertoire
courant ; les paramètres que l'on
utilise dans la commande déterminent
les noms de fichiers. La commande
exemple stockerait la clé publique
dans le fichier Kus.example.
com.+003+51297.key et stockerait
la clé privée dans le fichier
Kus.example.com.+003+51297.private.
Le premier groupe de chiffres représente
l'algorithme numérique (ici,
DSA, que DNSSEC représente par le
chiffre 3). Le deuxième groupe de chiffres (51297 ici) est le key tag, qui
distingue les clés des autres paires de
clés et apparaît dans les enregistrements
SIG de la zone signée. Il faut
protéger le fichier de clés privées et le
garder secret, mais il faut inclure le
nom de fichier de clés publiques dans
le fichier de zone non sécurisée de la
zone enfant.

Créer un jeu de clés. Avant que la
zone parent ne puisse signer la clé publique
d'une zone enfant, il faut créer
un jeu de clés contenant la clé publique
de la zone enfant que la zone parent
pourra reconnaître et signer. On
utilise la commande dnssec-makekeyset
pour créer ce jeu de clés. Par
exemple, la commande

dnssec-makekeyset t 7200 -e
20011231235959 Kus.example
.com.+003+51297

crée un jeu de clés pour la zone enfant
us.example.com. L'option -t définit
la valeur TTL des enregistrements
SIG et KEY. La commande exemple attribue
7.200 secondes au TTL ; 3.600
secondes est la valeur par défaut.
L'option -e définit le temps de fin de
signature de la zone parent. La commande
exemple indique que la signature
expire à  23:59:59 le 31 décembre
2001 (c'est-à -dire, 20011231235959).
Le temps de fin de la signature par défaut
est de 30 jours après le temps
départ. (La commande exemple accepte
l'heure de départ de la signature
par défaut, qui est now, mais on peut
utiliser l'option -s pour préciser une
heure de départ.) La commande sauvegarde
le fichier de sortie du jeu de clés
en tant que keyset-zone. dans le répertoire
courant. (Le point final fait partie
du nom de fichier.) Par exemple, le fichier
de sortie keyset-us.example.com.
résulterait de la commande example.

Signer le jeu de clés de la zone enfant. Ensuite, il faut soumettre le jeu
de clés de la zone enfant à  la zone parent,
afin que celle-ci puisse signer le
jeu de clés. La zone parent utilise la
commande dnssec-signkeyset pour signer
le jeu de clés d'une zone enfant.
Ainsi, pour ordonner à  la zone parent
example.com de signer le jeu de clés
d'us.example.com de la zone enfant,
utilisez la commande

dnssec-signkeyset keyset-us
.example.com Kexample
.com.+003+47063

Par défaut, la commande utilise les
temps de départ et de fin de la signature
que l'on a indiqués quand on a
créé le jeu de clés de la zone enfant,
mais on peut se servir des options -s et
-e pour changer ces temps. Le dernier
paramètre est le key tag de la zone parent. La commande sauvegarde le fichier
de sortie des jeux de clés signés
en tant que signedkey-zone. dans le répertoire
courant. (Le point final fait
partie du nom de fichier.) Par exemple,
le fichier de sortie keysetus.
example.com. résulterait de la commande
exemple. La zone parent doit
ensuite envoyer en toute sécurité ce fichier
de sortie à  la zone enfant.
Stockez le fichier de sortie dans le
même répertoire que celui où vous
stockez les clés de la zone enfant.

Signer la zone. A présent, vous
pouvez signer la zone enfant. Pour
cela, servez-vous de la commande dnssec-signzone. Par exemple, pour signer
la zone enfant non signée
us.example.com du listing 1, utilisez la
commande

dnssec-signzone o us.example
.com /usr/local/etc/db
.us.example

L'option -o indique le nom de
zone (c'est-à -dire, us.example.com).
Le second paramètre est le chemin
d'accès complet du fichier de zone
(c'est-à -dire,
/usr/local/etc/db.us.example.). Cette
commande exemple crée un fichier de
sortie nommé
/usr/local/etc/db.us.example.signed.
Pour ordonner au serveur DNS BIND
9.1.3 de charger le fichier de zone sécurisé,
il faut inclure le nom du fichier
de zone signée dans le fichier named.
con d'us.example.com. (Pour
plus d'informations sur la configuration
de .conf nommé, voir « Sécurisez
votre service BIND DNS ».) Si l'on met
à  jour un fichier de zone après avoir signé
la zone, il faut resigner celle-ci.

DNSSEC sécurise bien les transferts
DNS. L'encadré « Une transaction
sécurisée » présente des exemples de
telles transactions pour la zone sécurisée
DNSSEC.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010