Trucs:DNSsec Facile et sécurisé
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 :
Deux clés sont créées : une publique, une privée.
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 :
Key: J2YO13VruFOILqTC6KvRvQ==
Rajoutez une entrée dans named.conf pour la clef :
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 » ) :
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) :
$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:
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 :
> 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 »
grant key match_type host_name «type»; deny key match_type host_name «type»; };
Exemple :
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 :-)