Pour un rendu optimal, activez JavaScript

Chiffrer ses requêtes DNS avec DNScrypt

 ·  ☕ 5 min de lecture  ·  🦊 Propositionjoe

Une charmante découverte.

Vous trouverez dans ce papier:

  • Un réflexion sur l’importance d’un DNS fiable
  • Une proposition de solution en installant un client DNScrypt

Prérequis:

  • Une debian 8
  • ou une Redhat

Edit du 17 mars 2018: le proxy utilisé dans ce tuto a été abandonné, il existe désormais une version en go à cette page. Pour ma part je n’utilise plus dnscrypt que j’ai trouvé de moins en moins fiable, sur fond de rumeur d’abandon du projet. À la place je vous recommande plutôt Unbound.

Un peu de contexte

Ce passage décrit les raisons qui me poussent à m’intéresser à l’autohébergement et à la protection de ma vie privé; si vous ne vous intéressez qu’au chiffrement de vos requêtes DNS, passez simplement ce paragraphe.

Je suis personnellement de plus en plus inquiet du vent mauvais qui se lève un peu partout dans le monde. Entre les poussées électorales du pire; l’aveuglement des progressistes (à ne pas vouloir de Sanders on finira par avoir Lepen, peut être pas en 2017, mais en 2022 sans doute); et la monopolisation sans concession des “grands” de l’internet… Je suis convaincu que toutes les graines sont plantées pour que commence un long hiver réactionnaire (hiver - oui - les horreurs ne poussent que par grand temps pourri: et c’est le cas aujourd’hui).

De ce constat là est né ce blog, comme une tentative modeste de faire ma part en contribuant au commun face aux appétits des ventrus pour qui tout doit être profit, accaparement et surveillance publicitaire ou politique. Nul n’a jamais vu un puissant laisser volontairement les clés de son château à un sans abris, quand bien même ce dernier le demanderai avec courtoisie; c’est à dire dans les formes de la négociation sociale.

L’enjeu est donc de s’armer, de chercher, de comprendre, de rater même… Tout plutôt que de passivement apprécier sa télé spectacle; ou encore les applis du robot et de la pomme qui savent tout sur vous, mais dont vous ne savez rien. La liberté c’est d’apprendre à faire, pas de faire-faire par un autre.

Un serveur DNS qu’est ce que c’est?

Pour faire simple, chaque site dispose d’un adresse publique par se connecter à internet, c’est l’ip (une suite de 4 nombres, par exemple 192.168.1.1 ou 45.63.25.55). Par commodité on associe à l’ip une adresse composée de lettre (carmagnole.ovh). Le DNS est en fait l’annuaire que vous interrogez afin de faire la traduction entre ce que vous taper en lettre dans votre navigateur internet, et l’adresse ip du site que vous souhaitez contacter. La plupart du temps c’est transparent, et ce service vous est fourni par votre opérateur internet. L’enjeu principal d’un DNS est qu’il soit neutre et fidèle; personne ne veut voir une réponse différente de ce que demandé…

Et pourtant c’est bien ce que la justice a ordonné de faire à Free, Orange et SFR à plusieurs reprises afin de rendre un site de partage de contenu injoignable. Demain la même chose se produira sans doute pour des contenus jugés par nos élus illégaux… La liste pourrait être longue.

Il faut savoir également que toutes les requêtes DNS ne sont pas chiffrées sur internet, ce qui signifie que toutes vos demandes de “traduction” passe en clair sur internet; donc que votre opérateur - ou quiconque écoute - est en mesure de savoir quel site vous avez demandé à connaître l’adresse (c’est indispensable afin de pouvoir ensuite visiter n’importe quel site web; sauf si vous avez visité ce site récemment et que par conséquent vous avez déjà la réponse en cache… Mais c’est un autre sujet).

Le fonctionnement de DNScrypt

Pour répondre à l’enjeu d’avoir un service d’annuaire neutre, il convient de choisir un serveur DNS de confiance (donc pas celui de votre opérateur ou pire celui de google); et de chiffrer vos communications. Et c’est ce que propose DNScrypt.

Attention, il faut savoir que si les requêtes entre vous et un serveur de DNS DNScrypt sont chiffrés, ce n’est pas le cas des requêtes que fais ensuite ce serveur sur internet. Cela rend donc inutile d’autohéberger un serveur DNScrypt (le traffic local sera chiffré, pas celui sortant…).

La solution d’utiliser un vps rien que pour soi-même n’est pas non plus la meilleur: pour anonymiser ses requêtes il est impératif de les noyer dans celles de beaucoup d’autres personnes. Il convient donc de mutualiser et c’est d’ailleurs ce que propose noobunbox.

J’ai utilisé cette solution quelque temps, mais je n’étais pas complètement satisfait de ma dépendance. En effet, n’utiliser qu’un seul serveur DNScrypt entraîne que ce serveur connaisse toutes vos requêtes (car même si on a confiance, ce n’est clairement pas - par principe - l’idéal d’en rester là).

La solution avec un simple script

Finalement aujourd’hui j’utilise DNScrypt avec un client local qui fait ses demandes de manière aléatoire sur différent serveur. Pour se faire j’ai lu avec intérêt le papier de 15 min of fame, et je me suis mis en tête de compiler le client pour debian. Cela marche, mais j’avais une latence de 5 à 10s, ce qui n’est pas viable. Finalement je me suis rendu sur github et j’ai trouvé cette merveille.

Il s’agit d’un simple script qui fait tout le boulot, vous n’avez qu’à choisir les serveurs DNScrypt que vous souhaitez (plusieurs sont possibles, il est même possible de recourir à des serveurs random!).

Pour aller plus loin, il est très bon de partager ce DNS sur le réseau local. Il suffit de renseigner l’ip de la machine où vous avez installé le client DNScrypt dans votre box internet; ou encore dans Pihole. Mais pour cela il faudra installer un cache dns joignable sur le réseau local… Ça fera l’objet d’un tuto très bientôt.

Pour rendre effectif un changement de DNS, n’oubliez pas de rédémarrer votre pc.

Bref du très bon, qui juste marche.

Partagez

Propositionjoe
RÉDIGÉ PAR
Propositionjoe
Soyez résolus de ne servir plus et vous voilà libres, Étienne de La Boétie, Bricoleur militant.