Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 19:47]
james [Recopier cette clef dans notre configuration Bind] ajout commentaire conf
sysadmin:tsig [2014/10/24 16:37] (Version actuelle)
james ajout références
Ligne 8: Ligne 8:
   * des serveurs DNS deja configurés ;-) : un maître et un ou plusieurs esclaves pour une zone donnée   * 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   * 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
 +<​note>​Dans un monde ideal il faudrait générer non pas une clef par zone mais bel et bien une clef par couple de serveurs DNS effectuant des transferts : on peut alors nommer ces clefs en utilisant par exemple les noms des machines en relation : "​tsig-dnsmaster-dnsslave1"​ par exemple. Dans ce cas adaptez la suite, mais dans notre monde de bisounours une clef par zone nous suffira (ie : clef partagée entre tous les serveurs secondaires)</​note>​
  
 ===== Sur le serveur maître ===== ===== Sur le serveur maître =====
Ligne 45: 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 51: 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 59: 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) =====
 +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
 +
 +
sysadmin/tsig.1413654474.txt.gz · Dernière modification: 2014/10/18 19:47 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0