C’est un des protocoles les plus importants de l’Internet et pourtant il est méconnu ou mal compris. Le Domain Name System (DNS) est un outil formidable pour renforcer votre système d’information. Mais il peut être aussi un mécanisme de malveillance plutôt sournois. VeryFrog vous emmène alors à la découverte des différentes facettes du DNS.
Le DNS : A quoi sert-il ?
Sur l’Internet, chaque machine (serveur, téléphone, box, …) possède une adresse – appelée adresse IP – qui lui permet d’interagir sur le réseau. Cette dernière est une série de plusieurs nombres comme par exemple 185.216.27.12 (IP version 4) ou encore fe80::a63e:51ff:fe72:82d6 (IP version 6).
Le problème avec ces adresses, c’est qu’elles ne sont pas faciles à retenir pour des humains. Il est en effet plus aisé pour nous d’utiliser des noms que des chiffres. C’est pourquoi il existe un mécanisme qui permet d’associer un nom à une adresse IP : le DNS (Domain Name System). Grâce à lui, vous pouvez naviguer sur Google en tapant www.google.fr plutôt que 216.58.215.35.
Fonctionnement du Protocole
Les noms associés aux adresses IP sont appelés des noms de domaine. On les retrouve classiquement sous la forme de mots séparés par des points, comme www.veryfrog.com. On peut placer autant de mots qu’on souhaite dans la limite de 253 caractères.
Un nom de domaine se lit à l’envers. Le dernier mot, souvent court tel que .com ou .fr, est appelé domaine de premier niveau (Top Level Domain ou TLD). Vient ensuite le nom de l’organisation puis une série de mot permettant de définir un service ou une machine. Dans l’exemple www.veryfrog.com, on identifie donc le domaine de premier niveau .com (entreprise commerciale) puis veryfrog (l’organisation) et enfin www (le service World Wide Web).
On peut alors remarquer qu’on définit ainsi une arborescence des noms de domaine, comme le montre la figure suivante:
Chaque noeud de l’arbre va représenter un domaine et chaque feuille un service ou une machine sur l’Internet. Un serveur DNS est alors disponible pour chaque noeud de cet arbre afin de résoudre, id est d’associer un nom à une adresse IP, les noms de ce domaine. Ainsi, pour trouver le site web www.veryfrog.com, j’interroge le serveur en charge du TLD .com qui m’indique l’adresse du serveur en charge de veryfrog.com. J’interroge alors ce dernier qui me donne l’adresse IP du service nommé www (le site web en l’occurence). C’est ainsi que s’effectue, de manière récursive, une résolution de nom sur l’Internet.
Tirez-parti de DNS
DNS est un protocole extrêmement résilient. En effet, lorsqu’une résolution DNS est effectuée, chaque entité de la chaîne garde le résultat en cache, y compris le client (navigateur, OS, …) final. Ainsi, en cas de défaillance d’un des noeuds de l’arborescence, les résolutions peuvent continuer à se faire et garantir une continuité d’activité. Sachez également que les serveurs DNS fournissent la plupart du temps un mécanisme de maître/esclave pour assurer la haute disponibilité de la résolution.
DNS est issu de l’Internet, mais il peut également être mis en place à l’intérieur du réseau local. Cela permet de joindre les services internes par des noms plutôt que par les adresses IP. Une des bénéfices de cela est que si vous migrez un progiciel par exemple dans votre entreprise, il suffit de changez l’adresse IP associée au nom de domaine du logiciel pour basculer automatiquement tous les utilisateurs sur la nouvelle monture.
Un autre usage particulièrement intéressant du DNS est qu’il peut fournir un **mécanisme de répartition de charge **pour vos applications et services. En effet, on peut associer plusieurs adresses IP à un même nom de domaine. Dans ce cas, le client effectuant la résolution choisira l’adresse IP qui souhaite et cela aboutira à une répartition de charge **homogène **sur vos serveurs, sans effort. On appelle cela le DNS Round Robin.
Les dangers du DNS
Le protocole DNS est en place depuis bientôt 40 ans et il a fait ses preuves. Néanmoins, certains inconvénients existent. Le premier est l’utilisation du cache. En effet, on a vu qu’afin d’amèliorer la performance et la redondance, tout le monde utilise un cache des résolutions. Cependant, en cas de changement (bascule d’un PRA, migration, …) il faudra attendre l’expiration du cache de chaque entité sur la chaîne de résolution pour effectivement valider les modifications.
Un autre inconvénient est que DNS ne propose pas de réel mécanismes de sécurité et notamment d’authentification. Ainsi, n’importe qui peut proposer une résolution pour n’importe quel nom de domaine. C’est ce que font les bloqueurs de publicité en résolvant les domaines des publicité avec de fausses adresses IP. On parle alors de DNS menteurs. Cette possibilité est terrifiante: vous n’avez aucun moyen de vous assurez que l’adresse IP résolue est effectivement la bonne. Donc méfiez vous des serveurs DNS publics (comme 8.8.8.8 ou 1.1.1.1) car ils vous montrent leur vision de l’Internet et rien ne garantit que ce soit la bonne !
Enfin, la structure arborescence du DNS et son absence d'authentification permettent d’utiliser des serveurs DNS légitime comme générateur de trafic pour un attaque par déni de service (Attaque par amplification). L’idée est d’envoyer énormément petites requête DNS aboutissant à de grosse réponses (une demande de 60 octets peut aboutir à une réponse de 4Ko !) à plusieurs serveurs au nom de la cible. Les serveurs DNS vont alors tous renvoyer leurs réponses à la cible, laquelle sera vite submergée.
DNS est donc un protocole primordiale pour l’Internet mais qui vous sera très utile dans votre réseau d’entreprise. Cependant, il présente quelques inconvénients, notamment du fait de son manque inné de sécurité. Heureusement, on peut réduire ces impacts grâce à de bonnes implémentations serveurs et à l’utilisation de renforts comme le protocole DNSSEC. N’hésitez pas à nous contacter pour mettre en oeuvre le service DNS dans votre entreprise.