Utilisation de TSIG avec Bind

Le système de signatures de transaction (TSIG) est un mécanisme utilisé pour sécuriser les messages DNS et de fournir une communication sécurisée entre serveur DNS (généralement entre le serveur maître et le serveur esclave. TSIG peut protéger les types de transactions suivantes :

  • Le transfert de zone
  • Les notifications
  • Les mises à jour dynamiques
  • Les messages récursifs de requête

(cette liste n'est pas exhaustive)
TSIG est disponible depuis la version 8.2 de BIND.
TSIG utilise des clés secrètes partagées, ces clés utilisent les fonctions de "hashage" à sens unique pour authentifier les messages DNS.
TSIG est facile et léger pour résolveurs et nommé.

Pré-requis

On considère que Bind est déjà installé sur votre serveur "maître" et votre serveur "esclave" et qu'il est parfaitement opérationnel.
Ce tutoriel fonctionne sur Debian Squeeze ou supérieur.

Génération de la clé

On créé un répertoire pour stocker les clés.

mkdir /etc/bind/keys
cd /etc/bind/keys


Ensuite on génère la clé avec la commande suivante :

dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST rndc-key

Ici, nous utilisons le hash "HMAC-SHA512", codé sur 512 bits.
Cette commande aura pour effet de générer deux fichiers portant l'extension '.key' et '.private'.
Le fichier '.key' contient la clé public partagée, le fichier '.private' contient les informations sur la clé
Nous allons donc récupérer la clé partagée, avec la commande suivante :

cat Krndc-key.*.key

Ce qui nous donnera un réponse de ce genre

rndc-key. IN KEY 512 3 165 LVfglksdjgfioujHGlkkd7765GdsgdJH55 pUiqisqf498e2sqd98765gfj1Dy9ish6yQ==

Notre clé est donc LVfglksdjgfioujHGlkkd7765GdsgdJH55 pUiqisqf498e2sqd98765gfj1Dy9ish6yQ==.

Configuration du serveur "Maître"

Maintenant que nous avons notre clé, il faut configurer Bind sur le serveur "Maître".
Pour cela, nous modifions le fichier /etc/bind/named.conf.local et on ajoute au début de ce fichier les lignes suivantes :

//On indique la clé à utiliser et son algorithme de chiffrage
key "TSIG"
{
        algorithm hmac-sha512;
        secret "LVfglksdjgfioujHGlkkd7765GdsgdJH55 pUiqisqf498e2sqd98765gfj1Dy9ish6yQ==";
};
 
//On indique l'adresse IP du serveur "Esclave"
server 5.39.76.33
{
        keys { TSIG; };
};


Ensuite, il reste a relancer le serveur BIND avec la commande suivante :

service bind9 restart



Configuration du serveur "Esclave"

Une fois que le serveur "Maître" est configuré, passons au serveur "Esclave". Même opération, on modifie le fichier named.conf.local en rajoutant les lignes suivantes :

//On indique la même clé qu'on a précisé sur le serveur Maître
key "TSIG"  
{
        algorithm hmac-sha512;
        secret "LVfglksdjgfioujHGlkkd7765GdsgdJH55 pUiqisqf498e2sqd98765gfj1Dy9ish6yQ==";
};
 
//Ici on indique l'adresse IP du serveur Maître
server 37.187.127.145
{
        keys { TSIG; };
};


Et on relance le serveur BIND :

service bind restart



Auteurs et sources