Trucs:DNSsec Facile et sécurisé

De Lea Linux
Aller à la navigation Aller à la recherche

Update DNSSec Facile et sécurisé

Vous avez toujours voulu avoir un DNS dynamique avec vos adresses IP toutes dynamiques.
Pour toi public, j'ai la solution.
Tout d'abord, nous allons créer la clé publique/privée :
dnssec-keygen -a HMAC-MD5 -b 128 -n zone key-dns
Deux clés sont créées : une publique, une privée.
Kkey-dns.+157+20468.key
      Kkey-dns.+157+20468.private
La privée sert pour les updates NS sur le poste client.
Récupérez la clef comme-ci et notez là quelque part :
root@system:/etc/bind/# cat Kkey-dns.+157+20468.private | grep Key
          Key: J2YO13VruFOILqTC6KvRvQ==
Rajoutez une entrée dans named.conf pour la clef :
key "key-dns." {
         algorithm hmac-md5;
         secret "J2YO13VruFOILqTC6KvRvQ==";
 };
Puis rajoutez la zone "dynamique" gérée par la clef (pour notre exemple, la zone sera « dynamic.lea-linux.org » ) :
zone "dynamic.lea-linux.org." {
         type master;
         file "dynamic.lea-linux.org.db";
         allow-update { key "key-dns."; };
 };
Créons maintenant le fichier de zone  (dynamic.lea-linux.org.db) :
$ORIGIN dynamic.lea-linux.org
$TTL 60     ; 1 minute
@     IN      SOA       dynamic.lea-linux.org.    admin.lea-linux.org. (
                                 2004100303 ; serial
                                 10800      ; refresh (3 hours)
                                 3600       ; retry (1 hour)
                                 1814400    ; expire (3 weeks)
                                 86400      ; minimum (1 day)
                                 )
@                             NS      ns.lea-linux.org.
user1                IN   A       216.239.39.104
Vous pouvez remarquer que J'ai crée un host dans "dynamic.lea-linux.org" appelé "user1"  (oui, c'est pas original ;-)
L'IP pointe vers l'une des adresses IP de google (elles se terminent toutes par .104)
Maintenant, je tente d'updater le DNS à distance :
Pour les connaisseurs:
root@system:/etc/bind# nsupdate -d -k ./Kkey-dns.+157+20468.private
  Creating key...
  > server ns.lea-linux.org.
  before getaddrinfo()
  > zone dynamic.lea-linux.org.
  > update delete user1.dynamic.lea-linux.org.
  > update add user1.dynamic.lea-linux.org. 60 A 217.24.84.100
  > send
  Reply from update query:
  ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:  47472
  ;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1
  ;; TSIG PSEUDOSECTION:
  key-dns.               0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1096763082 300 16 +FWSlnUktwcFZ09vP58ZdQ== 47472 NOERROR 0
Pour les non-connaisseurs :
Je vous explique chaque ligne.
Partez du dièse pour lire: j'utilise le programme nsupdate en mode débug (pour voir plus de message) ( -d ) et je spécifie la clé d'authentification (défini dans la conf du DNS) ( -k Khey-dns.biduletruc.private )
Le programme m'affiche qu'il crypte la clé pour le dialogue client<->serveur.
Chaque chevron correspond à une commande utilisateur.
Je demande donc à dialoguer avec le serveur "ns.lea-linux.org" (celui qui gère dynamic.lea-linux.org)
La ligne suivante n'a pas d'importance.
La commande "zone" spécifie la zone (naaaann!!! ;-) dans lequel je souhaite travailler: ici, c'est « dynamic.lea-linux.org »
Puis je lance des commandes de mise-à-jour "update".
Tout d'abord, je supprime l'entrée "user1.dynamic.lea-linux.org."
Puis juste après, je rajoute une entrée "user1.dynamic.lea-linux.org" avec comme TTL (time to live) à 60 secondes (c-a-d qu'après 1 min les DNS externes vont considérés cette adresse 
comme « deprecated », donc ils vont revenir chercher la nouvelle valeur) puis son type, ici "A" (Address) et sa nouvelle adresse IP (je vous laisse faire un resolv de la dernière IP  ;-)
Puis j'envoie le tout au DNS (send)
Le message parvient au DNS, puis un rapport me revient, j'éviterais de tout décrire car ça parle de flag DNS, de référence de clé privée/publique et tout le toutim.
mais en gros on peut voir que tout s'est bien passé.
Bon, pour en etre sur, on va faire une interrogation DNS :
Deuxième console :
user1@client:~$ nslookup
  > server ns.lea-linux.org.
  Default server: 212.85.153.253
  Address: 212.85.153.253#53
  > user1.dynamic.lea-linux.org.
  Server:         212.85.153.253
  Address:        212.85.153.253#53
  Name:   user1.dynamic.lea-linux.org
  Address: 217.24.84.100
  >

Première ligne (à partir du dièse) on lance l'application "nslookup" Puis, au premier chevron, je spécifie le serveur que je souhaite interroger NSlookup me répond que le default_server est maintenant celui là et que son adresse est ns.lea-linux.org et qu'on utilise le port 53 pour interroger le DNS (tout ceci est pas très important vous noterez ;-) là, je lui dit "mon beau nslookup, donne moi l'adresse à l'heure actuelle. Et là! mon gentil DNS me répond : Le nom "user1.dynamic.lea-linux.org" bah, maintenant il a l'adresse "217.24.84.100" Miracle de la technologie, c'est parfaitement cela ! Conclusion: Update parfaitement réalisé  :-) Je vous recommande de lire le manpage concernant nsupdate Car il existe d'autres commandes pour les updates DNS. Vous pouvez ainsi gérer un DNS en entier à partir de dnsupdate (et non plus rndc) * La sécurité des zones dynamiques : Dans les zones, vous pouvez spécifier une « police de mise-à-jour »

update-policy {
                grant key match_type host_name «type»;
                deny key match_type host_name «type»;
        };
Exemple :
update-policy {
                grant "key-dns" subdomain user1 A;
        };
Vous permettez à une personne ayant la clé privé "key-dns" d'updater le sous-domaine "user1" et devant etre de type A (Address)
Pour plus d'informations : http://www.zytrax.com/books/dns/ch7/xfer.html#update-policy
Voila, voila  :-)