DNS et vie privée
Ce billet fait partie des billets sur le thème du DNS.
Qu'est ce que le DNS ?
Sur le DNS, je vous invite à voir ma présentation DNS - Vulgarisation, où je dis, Les sites webs sont associés à des noms de domaines et se trouvent sur des serveurs (qui ont une adresse IP) et un serveur DNS est un annuaire qui fait la correspondance nom de domaine - adresse IP. Quand on tape une adresse url dans le navigateur, par exemple http://genma.free.fr, l'ordinateur va demander au serveur DNS quel est l'adresse IP du serveur où se trouve le site web demandé. L'ordinateur connait alors l'adresse IP du site web. Il peut alors envoyer des paquets ("Envoi moi la page d'accueil que je l'affiche", "Tiens voilà les login et mots de passe") et communiquer avec le site web.
DNS et vie privée
La notion de DNS leak ou fuite DNS en français correspond au fait que quand on utilise un VPN par exemple, les demandes aux serveurs DNS ne passent pas par le VPN. Le serveur DNS est donc interrogé directement. Quiconque écoute la connexion réseau peut donc voir ces demandes DNS et savoir quels sont les sites que l'on souhaite consulter.
De plus, si on utilise le serveur DNS de son fournisseur d'accès (ce qui est le cas par défaut quand on se connecte sur sa box Internet), celui-ci peut enregistrer la liste des demandes DNS et donc là aussi savoir les sites que l'on souhaite consulter. Il en est de même sur un réseau d'entreprise, encore plus quand on est derrière un proxy.
Résolution de DNS quand on est derrière un proxy ?
Pour cette partie, je me base en partie sur la traduction que je fais d'une réponse sur le message How to resolve the DNS locally when there is a proxy configured ? du site askubuntu.com.
Lorsque l'on utilise un proxy HTTP (comme c'est le cas en entreprise)
l'adresse IP à laquelle on se connecte et celle du proxy, pas celle de la destination finale
l'URL que l'on demande est l'URL complète (incluant le hostname) de la requête
De plus, c'est le proxy qui fait le DNS lookup. Ce n'est pas possible de faire le DNS lookup en local, et de seulement envoyer l'adresse IP au serveur proxy (pour qu'il fasse son travail de proxy et nous renvoie la page web) Il n'y a pas de mécanisme où on demanderait à un proxy de d'utiliser une adresse IP particulière pour un hôte particulier. On peut essayer de changer l'URL de, disons, http://example.com/mypage en http://33.33.33.33/mypage, mais le serveur proxy ne saura pas quel nom d'hôte demander. Le web moderne (HTTP / 1.1) dépend d'un en-tête où l'hôte est toujours présent dans la demande, ce qui permet à un serveur Web de servir pour plusieurs sites, qui seront alors identifiés par leur nom de domaine.
La seule possibilité est de configurer le serveur proxy pour qu'il utilise le résolveur DNS de son choix. Mais cela n'est possible que si on utilise un serveur proxy local que l'on contrôle, sur lequel on a la main.
Remarque : Lorsque l'on utilise un proxy SOCKS ou une autre méthode de tunneling de niveau inférieur, il est possible d'utiliser un serveur DNS local. Mais pas avec un proxy HTTP.
En quoi HTTPS apporte un peu d'inimité ?
Quand on se connecte à un site sur un site avec une connexion en Https, seul la première partie de l'URL est en clair. La liste des pages consultes, les arguments (les identifiants, mots de passe) etc. sont chiffrées et restent secrètes. (Sous réserve qu'il n'y ait pas d'Homme du milieu/Man in the Middle)
Il n'est donc pas possible de savoir quelles pages vous regardez sur le site (à moins de consulter l'historique dans votre navigateur ou les logs du serveur web en lui-même). On peut savoir via les demandes DNS que vous consultez un site, mais pas quelles pages sur ce site. Pour aller plus loin, je vous invite à consulter mes billet taggués Https et à faire usage de Tor via le TorBrowser, ce qui permet d'anonymiser sa connexion et de faire en sorte que le site web ne sache pas que vous le consultez (les logs ne tracent pas votre IP mais celle du noeud de sortie Tor).
Que fait un serveur DNS Local
Un serveur DNS local peut être utile pour avoir un peu plus d'intimité. Comme on est maitre du serveur DNS local, on sait quelles données sont conservées. Ce serveur DNS interroge directement les serveurs TLD (.fr, .com, .net) afin de stocker le résultat en local, ce qui est mieux pour la vie privée. Sur la mise en place d'un serveur DNS en local, je vous invite à lire le billet de Stéphane Bortzmeyer Son propre résolveur DNS.
A lire également :
Les Billets taggués Proxy