Menu Fermer

Comment anonymiser ses DNS (Anonymous DNS)

Le chiffrement des DNS a constitué un grand pas en avant pour rendre les DNS plus sûrs, en empêchant les intermédiaires d’enregistrer et de falsifier le trafic DNS.
Cela est possible avec des protocoles tels que DNS Over TLS ou HTTPS (DoT et DoH) et DNSCrypt.

Cependant, il faut encore faire confiance aux serveurs DNS non logués pour faire réellement ce qu’ils prétendent faire. Ils voient évidemment le trafic déchiffrés, mais aussi les adresses IP des clients.
Afin d’éviter cela, l’utilisation de DNS sur Tor ou sur des proxies (HTTP, SOCKS) est devenue assez courante. Cependant, cette méthode est lente et peu fiable car ces mécanismes n’ont pas été conçus pour relayer le trafic DNS.

Le DNS anonyme empêche les serveurs d’apprendre quoi que ce soit sur les adresses IP des clients, en utilisant des relais intermédiaires dédiés à la transmission de données DNS chiffrés.
Dans ce tutoriel, je vous montre comment anonymiser ses DNS (Anonymous DNS).

Comment anonymiser ses DNS (Anonymous DNS)

Qu’est-ce que DNS Anonymous (Anonymat DNS) ?

Les DNS anonymes sont une alternative légère aux proxies Tor et SOCKS, dédiés au trafic DNS. Ils cachent l’adresse IP du client aux résolveurs DNS, offrant ainsi l’anonymat en plus de la confidentialité et de l’intégrité.

Au lieu d’atteindre directement un serveur, qui est l’un des résolveurs publics, un client DNS anonyme chiffre la requête pour le serveur final, mais l’envoie à un relais.
Le relais ne connaît pas la clé secrète et ne peut rien apprendre du contenu de la requête. Il peut seulement transmettre aveuglément la requête au résolveur récursif DNS, le seul serveur capable de la déchiffrer.
Le résolveur DNS lui-même reçoit une connexion du relais, et non du client réel. Ainsi, la seule adresse IP qu’il connaît est celle du relais, ce qui rend impossible l’affectation des requêtes aux clients.

Qu'est-ce que DNS Anonymous (Anonymat DNS) ?

Le client chiffre les requêtes en utilisant la clé publique du serveur comme dans le
protocole standard DNSCrypt. Le relais ne fait que transmettre passivement les paquets chiffrés.
paquets chiffrés et ne connaît pas le secret partagé. Par conséquent :

  • Un relais n’apprend rien sur les requêtes et les réponses DNS qui sont
    échangées entre les clients et les serveurs. Il ne peut pas les altérer
    de même.
  • Un serveur n’apprend rien sur les adresses IP des clients. Les seules
    adresses IP qu’il peut observer sont celles des relais.

Anonymat DNS avec DNScrypt

Le DNS anonymisé peut être implémenté sur tous les protocoles cryptés existants, mais DNSCrypt est de loin l’instanciation la plus simple et la plus efficace.
Il ajoute seulement un en-tête avec une séquence constante suivie d’informations de routage (IP+port du serveur) aux requêtes DNSCrypt non modifiées. L’implémenter au-dessus d’une implémentation DNSCrypt existante est trivial.

L’overhead est minimal. Contrairement à DoH où les en-têtes peuvent encore révéler beaucoup d’informations sur l’identité du client, le DNSCrypt anonyme, par conception, ne permet pas de transmettre la moindre information en dehors du strict minimum requis pour le routage.

Pour les opérateurs de relais, le DNSCrypt anonyme est un engagement moins important que de faire fonctionner un nœud Tor. Les requêtes ne peuvent être relayées que par UDP, elles doivent correspondre à un format très strict, l’amplification est impossible, et les boucles sont empêchées. Les relais peuvent essentiellement être utilisés uniquement pour le trafic DNS chiffré.

Plus d’infos : ANONYMIZED-DNSCRYPT.txt

Comment configurer DNS Anonymous avec DNSCrypt

Pour l’installation de DNSCrypt, suivez ce tutoriel : Comment installer DNSCrypt sur Linux pour sécuriser les DNS

Configuration de DNS anonymes dans dnscrypt-proxy

Le support pour les DNSCrypt anonymes a été introduit dans la version 2.0.29.

L’anonymisation ne fonctionne qu’avec les serveurs DNSCrypt. Si vous avez besoin d’utiliser des serveurs DoH, vous devez toujours utiliser Tor, ou des proxys SOCKS à la place.
Activer à la fois les serveurs DoH et DNSCrypt dans votre configuration est tout à fait correct, mais le trafic DoH ne sera pas anonymisé.

[anonymized_dns]
routes = [
    { server_name='serveur-exemple-1', via=['anon-exemple-1', 'anon-exemple-2'] }
]
  • serveur-exemple-1 : est le nom d’un serveur DNSCrypt quelconque. Il s’agit probablement de l’un des serveurs configurés dans les paramètres server_names.
  • anon-exemple-1 et anon-exemple-2 : Il s’agit de relais. Une liste des relais peut être trouvée dans le fichier relays.md qui est automatiquement téléchargé par défaut avec d’autres listes de serveurs.

Les noms de relais peuvent également être remplacés par des timbres DNS (sdns://…), des IP et des ports (ip:port) ou des noms d’hôtes et des ports (‘host:port). Si un résolveur fait également office de relais, il est possible d’utiliser son cachet normal au lieu du cachet du relais.

Comment configurer DNS Anonymous avec DNSCrypt

Un joker (*) peut être utilisé à la place d’un nom de serveur afin d’appliquer un ensemble de relais à tous les serveurs. Ne l’utilisez que si vous avez défini des noms de serveurs, avec un petit ensemble de serveurs qui ne se chevauchent pas avec les relais.

Un joker peut également être utilisé comme relais (via=[“*”]). Dans ce cas, le proxy choisira automatiquement les relais, en les sélectionnant en essayant d’éviter que les relais et les serveurs soient sur le même réseau.

[anonymized_dns]
routes = [
    { server_name='serveur-exemple', via=['*'] }
]

Vous souhaitez probablement que les relais et les serveurs vers lesquels ils sont relayés soient exploités par des entités différentes. Si vous voulez minimiser la latence, choisissez des relais et des serveurs qui sont proches du point de vue du réseau. Si vous êtes paranoïaque, choisissez des relais et des serveurs situés dans des pays différents. À vous de décider.

[anonymized_dns]
routes = [
    { server_name='serveur-exemple-1', via=['anon-exemple-1', 'anon-exemple-2'] }
    { server_name='serveur-exemple-2', via=['anon-exemple-3', 'anon-exemple-4'] }
    { server_name='serveur-exemple-2', via=['anon-exemple-5', 'anon-exemple-6'] }
]

Utiliser des serveurs DNS et relays aléatoires pour plus d’anonymat

Dans cet exemple, nous désactivons server_names et on utilise le wildcard dans le server_name de routes.
On utilise disabled_server_names pour désactiver les relais en tant que serveur.
En effet, l’utilisation d’un relais géré par la même entité que le serveur vers lequel il relaie irait à l’encontre de l’objectif d’anonymisation. Vous trouverez ci-dessous une explication sur la manière d’éviter une telle situation.
Enfin, l’option skip_incompatible permet d’ignorer les résolveurs DNS incompatibles avec l’anonymisation.

listen_addresses = []
#server_names = ['cloudflare']

require_dnssec = true
require_nofilter = false
cache = false

disabled_server_names = ['anon-cs-fr', 'anon-bcn']


[anonymized_dns]
routes = [
    { server_name='*', via=['anon-cs-fr', 'anon-bcn'] }
 ]

skip_incompatible = true
Utiliser des serveurs DNS et relays aléatoires pour plus d'anonymat dans DNSCrypt

Il en résulte que DNSCrypt utilise un serveur DNS aléatoire tout en passant par des relais.
Cela augmente encore plus l’anonymat et évite qu’un résolveur DNS puisse vous tracer entièrement.

Utiliser des serveurs DNS et relays aléatoires pour plus d'anonymat dans DNSCrypt

Un test des serveurs DNS confirme bien que le serveur DNS est aléatoire.

Tester les serveurs DNS