.st0{fill:#FFFFFF;}

Réseau

Qu’est-ce qu’il y a derrière les URLs ?

 février 12, 2020

By  Thierry DAUGER

De nos jours, peu nombreux sont ceux qui connaissent des numéros de téléphones par cœur. En effet, on a tous maintenant une application qui contient tous nos contacts. Et quand on veut appeler quelqu’un, on le sélectionne par son nom, rarement par son numéro. Avec les sites web, c’est un peu pareil. Qui irait sur un site en utilisant son adresse IP plutôt que son nom DNS ? 🙂

Le bottin des sites web

Un peu d’histoire

Chaque machine reliée à un réseau dispose d’un fichier, le fichier « hosts », qui permet d’effectuer la correspondance entre un nom et une adresse IP. Ce fichier est très utile sur un petit réseau local, par exemple pour contacter les machines avec un nom plutôt qu’une adresse.

Au tout début, le réseau internet ne comportait pas trop de machine. Un service permettait alors de télécharger la version la plus récente du fichier hosts correspondant aux machines sur Internet. De nos jours, avec plus d’un milliard de site sur internet, cela ferait un fichier de plus de 40 Go…

C’est pourquoi, en 1983, l’Université de Californie (UCLA) a écrit les spécifications d’un système, le DNS[1]. L’année d’après, des étudiants de l’université Berkeley, en Californie aussi, ont écrit un programme qui implémente ce protocole.

Le DNS

Un système hiérarchique

DNS est l’acronyme de Domain Name System, Système de Nom de Domaine en français. Le DNS est un système hiérarchique. L’ICANN[2], Internet Corporation for Assigned Names and Numbers, est une autorité de régulation d’Internet. Elle définit, entre autres, les Top Level Domain (TLD) que nous connaissons tous : les .com, .fr, .net, .org

L’ICANN délègue la gestion de ces TLD a des organismes appelés « Registry ». En France, c’est l’AFNIC[3] qui gère le domaine « .fr ». Des sociétés, appelés « Registrar » (« Bureau d’enregitrement » en français), sont habilitées à vendre des noms de domaines terminant par ce TLD. Il y en plus de 400 habilités par l’AFNIC, qui gèrent plus de 3 millions de domaines en « .fr ».

La résolution de nom

DNS est également l’acronyme de Domain Name Server. Dans ce cas, le DNS est un serveur qui entre en jeu dans le système DNS. Et enfin, DNS est l’acronyme de Domain Name Service, c’est à dire le protocole qui permet d’échanger des informations DNS.

Comme on l’a vu dans un précédent article, un ordinateur relié au réseau possède dans sa configuration l’adresse IP d’un serveur DNS. A la maison, c’est souvent l’adresse IP de la Box Internet. Ce serveur DNS est dit « récursif[4] » car c’est lui qui va effectuait les différentes interrogations nécessaire pour résoudre l’adresse d’un nom donné.

Résolution DNS

Exemple de résolution de nom DNS

Lorsque tu veux aller sur le site www.informatiquesanscomplexe.com, tu entres l’adresse dans ton navigateur. Celui-ci envoie alors une requête à l’adresse IP du serveur DNS récursif configuré. La résolution s’effectue ensuite par étapes. Le serveur envoie d’abord une requête aux serveurs racines pour savoir quel serveur DNS gère le « .com ». Avec la réponse, il effectue une requête pour connaître le serveur DNS qui gère le domaine « informatiquesanscomplexe.com ». Et pour finir, il effectue une requête pour résoudre le nom www.informatiquesanscomplexe.com et obtenir ainsi l’adresse IP du site.

Il existe 13 adresses IP correspondants aux serveurs racines. Cela correspond en fait à près de 1000 serveurs capables de répondre aux requêtes. Afin d’éviter des attaques potentielles sur ces serveurs, seules 13 adresses sont communiquées publiquement.

Si tu veux connaitre la liste de tous les TLD gérés, tu peux télécharger librement le fichier à l’adresse suivante : https://www.internic.net/domain/root.zone.

Le cache DNS

Afin d’éviter de trop nombreuses requêtes, chaque réponse contient un TTL (Time To Live). C’est en fait le temps de validité de la réponse. Si par exemple le TTL est de 86400 secondes, cela veut dire que le demandeur pourra conserver la réponse dans son cache pendant 1 jour. Durant tout ce temps, le demandeur puisera la réponse dans son cache et évitera ainsi des requêtes inutiles.

Comme chaque serveur de la chaîne DNS gère un cache, la modification de l’adresse IP correspondante à un nom DNS n’est pas immédiate. En effet, cette modification doit se propager à tous les serveurs de la chaîne DNS pour être prise en compte. La propagation d’un serveur à un autre ne s’effectuant que lorsque le TTL est dépassé.

Les types d’enregistrement DNS[5]

Un serveur DNS contient différents types d’enregistrements correspondants à différentes actions du serveur DNS. Les principaux utilisés sont définis ici.

L’enregistrement DNS de type NS

L’enregistrement NS (Name Server) correspond à l’adresse du serveur qui gère un domaine particulier. Souvent, le Registrar qui vous vend le nom de domaine hébergera aussi le serveur DNS correspondant. Dans ce cas, les enregistrements NS de votre domaine pointeront vers les serveurs DNS de votre Registrar.

L’enregistrement DNS de type A

L’enregistrement A (Address) est le plus commun des enregistrements DNS. Il associe un nom à une adresse IP. On trouve également des enregistrements AAAA, correspondant à une IPv6.

L’enregistrement DNS de type PTR

L’enregistrement PTR (PoinTer Record) est l’inverse de l’enregistrement A. Il associe une adresse IP fixe à un nom. On parle souvent de « Reverse DNS », ou « DNS inversé » en français.

L’enregistrement DNS de type CNAME

L’enregistrement CNAME (Canonical NAME) est utilisé pour créer un alias sur un domaine déterminé. Par exemple si, dans le domaine « informatiquesanscomplexe.com », on créé le CNAME « recherche » qui pointe sur www.monsite.fr, alors quand tu taperas dans ton navigateur « recherche.informatiquesanscomplexe.com » tu aboutiras sur la page de www.monsite.fr !

L’enregistrement DNS de type MX

L’enregistrement MX (Mail eXchanger) permet d’indiquer le nom d’hôte, ou l’adresse IP, du serveur gérant les mails du domaine. Quand tu veux envoyer un mail à contact@informatiquesanscomplexe.com, ton client de messagerie va chercher l’enregistrement MX du domaine informatiquesanscomplexe.com pour lui envoyait ton mail.

L’enregistrement DNS de type TXT

Le champ TXT (TeXT) permet d’associer un nom à un champ texte. Ce type de champ est très souvent utilisé pour améliorer la sécurité d’une connexion de ton domaine avec un service extérieur. Il permet par exemple de lister les serveurs autorisés à envoyer des mails avec une adresse de votre domaine.

La sécurité du DNS

Comme tout service sur Internet, les serveurs DNS sont soumis à des attaques permanentes[6]. C’est pourquoi l’ensemble des serveurs sont répartis dans le monde entier.

Le but d’un pirate est de te rediriger vers son site sans que tu t’en rendes compte, afin qu’il puisse voler tes identifiants. Image qu’au lieu de te connecter sur le site officiel de ta banque, tu te connectes sur le site d’un pirate !

Le spoofing

Le spoofing est une technique qui consiste à usurper l’identité d’une autre machine. Par exemple, si ton navigateur effectue une requête vers le serveur DNS et que cette requête est interceptée, un pirate peut y répondre avec ses propres données. Il peut ainsi te rediriger vers son serveur.

Le spoofing DNS

Empoisonnement du cache DNS

Comme nous l’avons vu, afin d’éviter de trop nombreuses requêtes et accélérer les accès Internet, chaque serveur DNS de la chaîne contient un cache. L’empoisonnement du cache DNS consiste à fournir de fausse information à un serveur DNS qui en fait la demande, afin de tromper les clients.

Pour réaliser ceci, un pirate utilise son propre DNS. Par exemple, disons qu’il possède le domaine « jepirate.com ». Avec son ordinateur, il va effectuer une requête DNS vers le domaine « jepirate.com ». Son Serveur DNS va alors répondre avec des données erronées. Par exemple, son DNS va répondre que l’IP du serveur www.mabanque.fr est 1.2.3.4. Le serveur DNS de son Fournisseur d’Accès à Internet (FAI) va donc inscrire cette information dans son cache. L’adresse réelle du serveur www.mabanque.fr est en fait 134.214.21.49. 1.2.3.4 est l’adresse IP d’un serveur web du pirate, qui reproduit exactement le site d’une banque.

Plus tard, étant abonné au même FAI, tu veux aller sur le site de ta banque en tapant www.mabanque.fr dans ton navigateur. Ton navigateur va faire une requête vers le DNS du FAI, qui lui répond que l’IP est 1.2.3.4. Ton navigateur se connecte alors sur le site du serveur pirate et sans le savoir, tu fournis tes identifiants au pirate !

Empoisonnement du cache DNS

DNSSEC

Afin de palier au mieux aux attaques possibles, une nouvelle norme a été mise en place. Il s’agit du DNSSEC[7] pour Domain Name System SECurity Extentions. C’est un mécanisme qui permet de signer numériquement les enregistrements DNS, afin d’en garantir l’authenticité.

La signature des enregistrements est assurée par un mécanisme de clé privée et clé publique associée. Un enregistrement est signé avec une clé privée, qui reste secrète. Le serveur DNS hébergeant un domaine fournit alors une clé publique correspondante, permettant d’authentifier le message. Lorsque qu’un serveur DNS reçoit un message du type « NOM = IP », il peut l’authentifier en vérifiant sa signature. Cela évite ainsi certaines attaques DNS comme le spoofing ou l’empoisonnement du cache.

La sécurité du DNS avec DNSSEC

Mais alors, qu’est-ce qu’il y a derrière les URLs ?

Voilà, maintenant tu sais un peu mieux ce qu’il y a derrière l’adresse d’un site web quand tu le tapes dans ton navigateur. Et pour répondre à la question du titre ce cet article, derrière les URLs, eh bien il y a en général…plusieurs adresses IP !

Eh oui, il est possible d’associer plusieurs adresses à un même nom. Cela permet de réaliser ce que l’on appelle de l’équilibre de charge par DNS. Cela veut dire que, comme le client reçoit plusieurs adresses, il va choisir une adresse dans la liste. Cette technique est très utilisée quand un service est réparti sur plusieurs sites géographiques par exemple.

Equilibrage de charge par DNS

Et comme d’habitude, pour résumer tout cela, regardes la vidéo !


[1] https://cyber.harvard.edu/icann/pressingissues2000/briefingbook/dnshistory.html
[2] https://www.icann.org/fr
[3] https://www.afnic.fr/
[4] https://fr.wikipedia.org/wiki/Domain_Name_System#R%C3%A9solution_du_nom_par_un_h%C3%B4te
[5] https://www.rfc-editor.org/rfc/rfc2181.txt
[6] https://blog.nameshield.com/fr/2017/09/06/3-attaques-dns-plus-communes-combattre/#
[7] Un très bon dossier de l’AFNIC sur le DNSSEC https://www.afnic.fr/medias/documents/afnic-dossier-dnssec-2010-09.pdf

Thierry DAUGER


Your Signature

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Subscribe to our newsletter now!

>