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:09] james [Prérequis] |
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 52: | Ligne 62: | ||
| allow-query { any; }; | allow-query { any; }; | ||
| notify yes; | notify yes; | ||
| - | // transfert vers *n'importe quel serveur* qui presente la clef "tsig-ddomain-com" | + | // transfert vers *n'importe quel serveur* qui presente la clef "tsig-domain-com" |
| // transfert *sans clef* vers 192.168.3.1 | // transfert *sans clef* vers 192.168.3.1 | ||
| allow-transfer { key "tsig-domain-com"; 192.168.3.1; }; | allow-transfer { key "tsig-domain-com"; 192.168.3.1; }; | ||
| 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 | ||
| + | |||