Pour mettre en place un service DNS, le logiciel recommandé à l'AUF est BIND version 9. Le paquet Debian correspondant est bind9.
Cette page a été écrite à toute vitesssssse, merci aux DNSmen de la ré-écrire un peu plus proprement et plus en détail.
Installation
L'installation du service se fait simplement avec :
# aptitude install bind9
Cependant il est fortement recommandé (voir obligatoire !) de sécuriser le service DNS.
Le nom du logiciel effectuant le service DNS (et donc du processus) est named, tandis que BIND (Berkeley Internet Name Daemon) est le nom du projet.
Veillez à bien installer bind9 (avec un 9 à la fin). Le paquet bind fournit quant à lui la version 8.x de BIND, ce qui n'est pas la même chose !
Configuration
Ajouter une zone : créer le fichier /etc/bind/db.nom.de.la.zone puis référencer la zone dans /etc/bind/named.conf.local
Quand une zone est ajoutée ou mise à jour, lancez invoke-rc.d bind9 reload ou encore rndc reload.
L'outil rndc (remote name daemon control) permet d'être plus fin dans les ordres envoyés à named, voir man rndc.
view/recursion
Il y a peu, en testant des outils en ligne de vérification de DNS, j'ai remarqué une erreur importante dans mon DNS, j'étais en "Open Server". Autrement dit, n'importe qui, dans le monde, peut utiliser mon DNS pour effectuer des requêtes autre que demander des informations sur mon réseau interne. Au passage, on peut utiliser cette propriété pour fournir de mauvaises informations au cache de Bind. Une documentation était fournit pour éviter d'être en "Open Server" : http://www.cymru.com/Documents/secure-bind-template.html. Le livre de Bind fournit aussi une bonne documentation : http://www.oreillynet.com/pub/a/oreilly/networking/news/views_0501.html
- Les "view" servent a présenter différentes visions de notre réseau, suivant la "personne" qui interroge notre serveur DNS. Par exemple, vous pouvez vouloir réserver certaines machines d'une partie de votre réseau à un usage interne et donc qu'elles ne soient pas visibles de l'extérieur, ou bien vouloir que votre réseau FOAD puissent voir une machine qui ne doit pas être vu de votre réseau grand publique.
- L'option "recursion", qui porte la valeur yes/no, autorise ou non votre serveur DNS à interroger les autres serveurs DNS. Ce qui fait qu'on est "Open Server" ou non.
De manière basique, on peut donc créer une vue "interne" pour notre réseau, notre dmz, notre vpn, etc... qui autorise les requête récursives, et une vue "externe" qui n'autorise pas ce genre de requête.
// fichier /etc/bind/named.conf.local acl "rezointerne" { 192.168.1.0/24; // notre réseau interne 10.XX.0.0/24; // notre rpv XX.XX.XX.XX/28; // notre plage d'adresse publique }; view "interne" { match-clients { rezointerne; }; recursion yes; zone "refer.ga" { type master; file "/etc/bind/local/interne.refer.ga.hosts"; }; }; view "externe" { match-clients { any; }; recursion no; zone "refer.ga" { type master; file "/etc/bind/local/externe.refer.ga.hosts"; }; };
- Il est possible que le fichier soit le même, mais il est aussi possible d'avoir deux fichiers différents.
toutes vos zones doivent être définit dans toutes les vues (pour si vous en avez plus de 2). Donc si vous avez 2 vues, mais 15 zones, par exemple, vous pouvez intégrer vos zones dans un fichier à part utiliser un include pour que ce soit plus lisible.
DNSSEC
La gestion des noms de domaines est sujette à de nombreux types d'attaques informatiques. A la base, ces attaques consiste à transmettre aux serveurs "slave" ou aux "resolvers" des informations erronées afin de détourner le trafic destiné aux sites cibles de l'attaque.
Afin d'éviter ce problème, une serie de RFC ont permis l'extension du protocole DNS, lui permettant de supporter un certain nom d'opération cryptographique dans le but de:
Garantir l' authenticité des parties impliqués dans des échanges de messages/transactions DNS;
Garantir l' intégrité des données échangées lors de ces transactions ou échanges de messages DNS;
- Assurer la preuve de non existence lorsqu'une requête aboutie à une réponse de type NXDOMAIN pour une entité.
A l'AUF, DNSSEC pourrait nous intéresser à plus d'un titre. D'abord pour sécuriser nos DNS, mais aussi il pourrait nous servir pour publier les certificats
Pour aller plus loin
Quelques liens :
le site de BIND : http://www.isc.org/software/bind/
une documentation pour débuter : http://doc.ubuntu-fr.org/bind9 (j'ai lu en diagonale, ça semble être correct)
pour rire, les RFC qui concernent la DNS : http://www.bind9.net/rfc ... quelle horreur !