|
Ce document n'est pas un tutorial sur DJBDNS, mais un résumé sur l'interêt de son utilisation et sur son fonctionnement général 1- Concept général 2- Dnscache 3- tinydns 3- Le fichier de zone1- Concept généralLe serveur DJBDNS, développé par Dan Bernstein (également à l'origine de Qmail) est disponible en open source sous la licence DJB, qui permet de le redistribuer mais pas de le modifier. Il constitue une réelle alternative à BIND, qui est le serveur DNS le plus utilisé. DJBDNS est architecturé en modules et dispose de fonctions destinées à assurer une meilleure sécurité. DJBDNS est en particulier destiné à résister aux paquets DNS "forgés". Par exemple, le module DNS Cache utilise pour ses connexions des numéros de ports et d'identifications aléatoires provenant d'un générateur cryptographique (BIND pour sa part utilise toujours le même port). De plus, l'auteur a pour projet d'implémenter un système d'authentification par clé publique basé sur Nym (un système comprenant des noms de domaines longs générés à partir d'une empreinte de clé publique propre à un système) montrant ainsi que DJBDNS est en constante amélioration. DJBDNS est composé d'une série de modules :
D'autres modules utilitaires sont présents, ainsi que plusieurs outils d'administration et de débuggage DNS annexes à la fonction principale de DJBDNS. L'installation de DJBDNS requière l'installation préalable de deamontools et de ucspi-tcp. Deamontools est un ensemble d'outils qui permet de gérer les services efficacement et uscpi-tcp fourni les programmes tcpclient et tcpserver utilisés pour le transfert de zones. Voyons en détail Tinydns et Dnscache qui sont les modules principaux du serveur DNS. 2- DnscacheL'ensemble DJBDNS est le résultat de deux observations : dans un premier temps, beaucoup de problèmes de sécurités liés à BIND viennent de la façon dont BIND prend des décisions sur les requêtes à qui il faut faire confiance et celles qu'il doit écarter. Chaque paquet reçu peut contenir des informations supplémentaires permettant d'outrepasser les restrictions, les réponses peuvent être falsifiées. Dnscache est une réponse à cette problématique, qui contrairement à BIND est uniquement un résolveur récursif et ne répond qu'aux requêtes DNS provenant d'un serveur de nom autorisé (l'autorisation a été vérifiée par la chaîne de délégations de nom de domaine sur Internet). Afin de pouvoir l'utiliser dans un poste client, il est indispensable d'autoriser la connexion du client sur le serveur en ajoutant explicitement l'adresse IP du client dans le fichier de configuration du serveur. Un certain nombre de renseignements nous permettent de voir quelles sont les machines qui effectuent des requêtes sur leur serveur et quels sites Internet sont consultés. Tinydns est un serveur de nom développé le plus simplement possible. Il ne répond à aucune des demandes de résolution de nom dont les fichiers de zones ne se trouvent pas sur le disque. Tinydns édite une base de donnée au format CDB et possède la caractéristique d'être en mémoire vive. On ne remplit pas directement le fichier de zone dans la base de donnée CDB, un fichier de zone data est remplie selon les critères définis dans le point suivant. A l'aide de la commande make, le fichier data génère la base de donnée data.cdb. 4- Le fichier de zone (data)Afin de comprendre le format du fichier de zone Tinydns, voici un rappel de la RFC 1034. Un nom de domaine identifie un noeud. A chaque noeud est attribué un ensemble d'informations sur des ressources (inscrites dans le fichier de zone), lequel peut être vide. L'ensemble des informations de ressources associé à un nom de domaine particulier est composé de plusieurs enregistrements de ressources séparées (appeler également RR pour ressources records). L'ordre des enregistrements n'est pas significatif, et ne doit pas nécessairement être préservé par les serveurs de noms, les résolveurs, ou tout autre partie du DNS. Voila les différents enregistrements pouvant être insérés dans le fichier de zone :
Chaque enregistrement a également une durée de vie "Time To Live" (TTL) qui indique le temps pendant lequel un serveur de noms ayant obtenu l'enregistrement peut le garder dans son cache. Cette valeur est représentée sous forme d'un entier sur 32 bits et est exprimée en secondes, Dans le fichier data de Tinydns, une typologie permet d'insérer les divers types d'enregistrement. Voici le tableau de signification des symboles utilisés :
Les autres symboles ne sont pas étudiés dans le cadre du projet ABCDNS. Voici un exemple de création de zone pour un nom de domaine example.com :
Explications :
|