Ceci est une ancienne révision du document !
Table des matières
Sécuriser ses transferts de zone DNS avec TSIG
Nous allons voir comment sécuriser ses transferts de zone DNS avec TSIG.
Comme d'habitude cette configuration se fera sur une debian stable à jour (wheezy a l'heure actuelle), mais doit être adaptée facilement à n'importe quelle distribution
Prérequis
- des serveurs DNS deja configurés
: un maître et un ou plusieurs esclaves pour une zone donnée
- pour éviter les attaques par rejeu, ces serveurs doivent être a la même heure : utilisation de ntpdate ou mieux d'un démon NTP sur chacun
Sur le serveur maître
Générer la clef partagée
- Création du repertoire servant a contenir la clef :
mkdir /etc/bind/keys ; chmod o-rx /etc/bind/keys ; cd /etc/bind/keys
- Génération de la clef :
dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST -r /dev/random transfer-domain-com
Apres un court instant vous devriez voir quelque chose comme :
masterdns:/etc/bind/keys# dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST -r /dev/random transfer-domain-com Ktransfer-domain-com.+165+52920
Un rapide ls -l nous montre bien la création des 2 fichiers de clef privée (.fichier .private) et publique (fichier .key):
masterdns:/etc/bind/keys# ls -l total 8 -rw-r--r-- 1 root bind 127 oct. 18 18:51 Ktransfer-domain-com.+165+52920.key -rw------- 1 root bind 232 oct. 18 18:51 Ktransfer-domain-com.+165+52920.private
<note>Le lecteur averti aura vu qu'en fait les clef de type “HOST” que nous avons utilisé sont des clef symétriques et non un couple privée/publique comme énoncé, et donc que les 2 fichiers .key et .private contiennent bien la même clef
</note>
Recopier cette clef dans notre configuration Bind
- Deja pour voir a quoi ressemble cette clef :
# cat Ktransfer-domain-com.*.private
qui devrait donner un résultat semblable à :
# cat Ktransfer-domain-com.*.private Private-key-format: v1.3 Algorithm: 165 (HMAC_SHA512) Key: dmomqcrOT7otZJdoyKRbDMhkii1a3ZdD4SvTdlMUSRga5O8WHeyW0nO1f1HnPDYuf8xV3rc8rBLs/sIvxoor8Q== Bits: AAA= Created: 20141018165729 Publish: 20141018165729 Activate: 20141018165729
- Recopier cette clef dans notre fichier de clefs (que l'on peut créer par la même occasion s'il nexiste pas deja) :
vi /etc/bind/named.conf.tsigkeys
- Puis ajouter ce contenu :
key "tsig-domain-com" { algorithm HMAC-SHA512; secret "dmomqcrOT7otZJdoyKRbDMhkii1a3ZdD4SvTdlMUSRga5O8WHeyW0nO1f1HnPDYuf8xV3rc8rBLs/sIvxoor8Q=="; };
ou vous remplacez “dmomqcrOT7otZJdoyKRbDMhkii1a3ZdD4SvTdlMUSRga5O8WHeyW0nO1f1HnPDYuf8xV3rc8rBLs/sIvxoor8Q==” par votre clef. bien sur vous pourrez ajouter vos futures clefs dans ce même fichier en utilisant un nom différent pour chaque.
- Limiter l'accès à ce fichier :
chown root:bind /etc/bind/named.conf.tsigkeys chmod 640 /etc/bind/named.conf.tsigkeys
- Dire a bind d'utiliser ce fichier de clefs :
# cat << EOF >> /etc/bind/named.conf include "/etc/bind/named.conf.tsigkeys"; EOF
- Configurer cette clef dans notre zone “domain.com” , dans le fichier /etc/bind/named.conf.local ou elle est déclarée : ajouter la directive
allow-transfer { key "tsig-domain-com"; };
ou il faut noter la directive “key” comme dans l'exemple ci dessous :
zone "domain.com" { type master; file "/etc/bind/domain.com.zone"; allow-query { any; }; notify yes; // transfert vers *n'importe quel serveur* qui presente la clef "tsig-ddomain-com" // transfert *sans clef* vers 192.168.3.1 allow-transfer { key "tsig-domain-com"; 192.168.3.1; }; also-notify { 192.168.3.1; }; };
