Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sysadmin:tsig [2014/10/18 20:10] james [Recopier cette clef dans notre configuration Bind] typo |
sysadmin:tsig [2014/10/24 16:37] (Version actuelle) james ajout références |
||
---|---|---|---|
Ligne 46: | Ligne 46: | ||
include "/etc/bind/named.conf.tsigkeys"; | include "/etc/bind/named.conf.tsigkeys"; | ||
EOF</code> | EOF</code> | ||
+ | * Déclarer chaque serveur esclave pour lui associer sa clef dans le fichier /etc/bind/named.conf.local :<code> | ||
+ | server 192.168.2.42 { | ||
+ | keys { tsig-domain-com ;}; | ||
+ | }; | ||
+ | server 192.168.2.43 { | ||
+ | keys { tsig-domain-com ;}; | ||
+ | }; | ||
+ | </code>En adaptant bien sur les IP pour chaque esclave (et le nom de la clef si vous avez comme il faudrait un clef par esclave) | ||
+ | <note>Il vaut mieux déclarer ces directives "server" en haut du fichier, ou en tous cas avant la declaration de la zone correspondante</note> | ||
+ | |||
* 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 <code>allow-transfer { key "tsig-domain-com"; };</code> ou il faut noter la directive "key" comme dans l'exemple ci dessous :<code> | * 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 <code>allow-transfer { key "tsig-domain-com"; };</code> ou il faut noter la directive "key" comme dans l'exemple ci dessous :<code> | ||
zone "domain.com" { | zone "domain.com" { | ||
Ligne 60: | Ligne 70: | ||
<note>Dans ce cas les transferts seront autorisés vers n'importe quel serveur présentant la bonne clef.</note> | <note>Dans ce cas les transferts seront autorisés vers n'importe quel serveur présentant la bonne clef.</note> | ||
<note important>Il faut aussi noter qu'**il ne faut pas lister les IPs des serveurs secondaires ici** : les IPs ajoutées dans la directive allow-transfert sont les IPs que vous voulez autoriser justement à effectuer un transfert de zone **sans avoir à utiliser la clef** : donc en général **vous ne voulez pas faire ca ;-)**</note> | <note important>Il faut aussi noter qu'**il ne faut pas lister les IPs des serveurs secondaires ici** : les IPs ajoutées dans la directive allow-transfert sont les IPs que vous voulez autoriser justement à effectuer un transfert de zone **sans avoir à utiliser la clef** : donc en général **vous ne voulez pas faire ca ;-)**</note> | ||
+ | |||
+ | Il ne reste plus qu'a redémarrer votre bind : <code>/etc/init.d/bind9 restart</code>A partir de ce moment la les esclaves ne pourront plus se mettre a jour : vous obtiendrez sur l'esclave des erreurs comme cela : <code>Oct 18 20:23:54 dsnslave1 named[8064]: client 192.168.1.24#59985: request has invalid signature: TSIG tsig-domain-com: tsig verify failure (BADKEY)</code> ce qui est normal vu que nous n'avons pas encore configuré les esclaves, ce que l'on va faire de ce pas. | ||
+ | |||
+ | <note>Les fichiers .key et .private que nous avons généré tout a l'heure ne sont plus nécessaires et peuvent être supprimés du serveur pour plus de sécurité</note> | ||
===== Sur le(s) serveur(s) esclave(s) ===== | ===== Sur le(s) serveur(s) esclave(s) ===== | ||
+ | Comme pour le maitre il faut : | ||
+ | * Recopier cette même clef dans notre fichier de clefs (que l'on peut créer par la même occasion s'il nexiste pas deja) : | ||
+ | * <code>vi /etc/bind/named.conf.tsigkeys</code> | ||
+ | * Puis ajouter ce contenu :<code> | ||
+ | key "tsig-domain-com" { | ||
+ | algorithm HMAC-SHA512; | ||
+ | secret "dmomqcrOT7otZJdoyKRbDMhkii1a3ZdD4SvTdlMUSRga5O8WHeyW0nO1f1HnPDYuf8xV3rc8rBLs/sIvxoor8Q=="; | ||
+ | };</code>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 : <code> | ||
+ | chown root:bind /etc/bind/named.conf.tsigkeys | ||
+ | chmod 640 /etc/bind/named.conf.tsigkeys</code> | ||
+ | * Dire a bind d'utiliser ce fichier de clefs :<code> | ||
+ | # cat << EOF >> /etc/bind/named.conf | ||
+ | include "/etc/bind/named.conf.tsigkeys"; | ||
+ | EOF</code> | ||
+ | * Declarer que pour effectuer des transferts vers le maitre il faudra utiliser cette clef : ajouter la directive server en haut du fichier /etc/bind/named.conf.local en adaptant l'IP a cele de votre serveur maitre :<code> | ||
+ | server 192.168.1.24 { | ||
+ | keys { tsig-domain-com ;}; | ||
+ | };</code> | ||
+ | * La déclaration de la zone coté esclave reste inchangée : au final dans le fichier /etc/bind/named.conf.local vous devez avoir quelque chose qui ressemble à :<code> | ||
+ | server 192.168.1.24 { keys "tsig-domain-com";}; | ||
+ | ... | ||
+ | zone "domain.com" { | ||
+ | type slave; | ||
+ | file "domain.com.zone"; | ||
+ | masters { 192.168.1.24; }; | ||
+ | allow-query { localhost; internal; }; | ||
+ | notify no; | ||
+ | };</code> | ||
+ | après un petit redémarrage du service : <code># /etc/init.d/bind9 restart</code>vous devriez voir quelque chose ressemblant à ça dans les logs de votre serveur maitre : <code>client 192.168.2.42#46795: received notify for zone 'domain.com': TSIG 'tsig-domain-com'</code> | ||
+ | |||
+ | Il faut bien sur répéter cette opération sur tous vos serveurs secondaires si vous en avez plusieurs. | ||
+ | |||
+ | ===== Et voila ===== | ||
+ | Et voila nous disposons maintenant d'un transfert de zone sécurisé entre notre serveur DNS maître et nos serveurs DNS secondaires. | ||
+ | |||
+ | Si on veut tester les transfert avec et sans clef depuis un DNS secondaire: <code>dig @{ip-dns-principal} domain.com axfr</code> ce qui avec un peu de chance doit vous renvoyer une erreur ressemblant à ça (sinon il y a un problème dans la conf de votre serveur DNS primaire : <code>$ dig @192.128.2.1 domain.com axfr | ||
+ | |||
+ | ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @192.128.2.1 domain.com axfr | ||
+ | ; (1 server found) | ||
+ | ;; global options: +cmd | ||
+ | ; Transfer failed. | ||
+ | </code> | ||
+ | Alors qu'en utilisant la clef vous devriez voir le transfert s'effectuer (lancer en root ou en utilisant sudo pour avoir le droit de lire le fichier contenant la clef) : <code># dig @192.128.2.1 domain.com axfr -k /etc/bind/named.conf.tsigkeys</code> | ||
+ | |||
+ | ===== Références ===== | ||
+ | * http://www.mimiz.fr/blog/mise-en-place-dun-serveur-dns-dynamique/ | ||
+ | * http://opentodo.net/2013/01/authenticate-dns-zone-transfer-with-tsig/ | ||
+ | * https://lists.isc.org/pipermail/bind-users/2014-March/092714.html | ||
+ | * http://lamejournal.com/2013/06/10/bind-enabling-tsig-for-zone-transfers/ | ||
+ | * http://www.bind9.net/arm98.pdf | ||
+ | |||