DoH - DoT - Pi-hole - Unbound

Posted on Sun 19 May 2019 in Internet

Au commencement, pi-hole

Projet intéressant qu'est Pi-Hole : https://pi-hole.net/

pihole

C'est une solution qui installe de manière automatique un DNS menteur afin de s'éviter tous les sites qui hébergent de la publicité, trackers, etc..

Si vous disposez d'un RaspberryPi qui traine dans un coin à la maison c'est une excellente solution à mettre en place.

C'est bien mais pas top

Si vous disposez comme moi d'un serveur dédié ou d'une machine virtuelle hébergée, il pourrait être intéressant de mettre la chose en place en cas de déplacement ou pour son smartphone en 4G.

Il suffirait pour cela d'exposer votre serveur DNS Pi-Hole publiquement (TCP 53), personnellement je ne le fait pas directement, uniquement au travers d'un tunnel VPN.

Je suis tombé sur cet article très bien construit sur l'installation en plusieurs étapes d'un serveur DNS over HTTPS (DoH) + DNS over TLS (DoT) + Pi-hole + Unbound :

https://www.aaflalo.me/2018/10/tutorial-setup-dns-over-https-server/

  • DNS over HTTPS/DoH c'est la possibilité d'effectuer des requêtes DNS chiffrées sur HTTPS/TLS (TCP 443) via Nginx.
  • DNS over TLS/DoT c'est la peu ou prou la même chose, DNS sur TLS directement mais sur un port spécifique (TCP 853).
  • Pi-hole, cf. juste avant
  • Unbound est un recurseur DNS simple à installer et configurer.

Le fonctionnement est le suivant :

pihole

Les cas d'usage

  • Connecté en VPN, vous utilisez le DNS interne du serveur, en l'occurence pi-hole, vous beneficiez du DNS menteur/filtrage publicitaire. Pratique à condition que le port de votre VPN ne soit pas filtré.
  • Sur mobile Android à partir de la version 9, vous pouvez préciser un DNS privée (DNS over TLS, DoT) et vous utilisez alors votre DNS menteur quelque soit le réseau WiFi ou 4G.
    • Test effectué avec Chrome Android, pas de bloqueur en extension, les pages normalement infestées de publicités sont visitables.
    • Un détail cependant, le protocole nécessite d'utiliser le port TCP 853, donc filtrable.
  • Sur un poste de travail Windows/Linux/OSX, au moyen d'un client approprié (
    https://dnscrypt.info/implementations/) pour le protocole DNS over HTTPS/DoH, vous utilisez votre DNS menteur, y compris au travers de proxy HTTP.

Pour essayer/utiliser

Pour utiliser DoT sur votre mobile :

Options > Réseau > Avancé > DNS privée > dns.k3nny.fr

Pour tester DoH dans un navigateur :

https://dns.k3nny.fr/dns-query?name=www.toto.fr&type=A

{
    Status: 0,
    TC: false,
    RD: true,
    RA: true,
    AD: false,
    CD: false,
    Question: [
    {
        name: "www.toto.fr.",
        type: 1
    }
    ],
    Answer: [
    {
        name: "www.toto.fr.",
        type: 1,
        TTL: 3867,
        Expires: "Sun, 19 May 2019 15:46:27 UTC",
        data: "46.105.57.169"
    }
    ]
}

Pour aller plus loin

Pour comprendre plus en détails tous les enjeux et la technique derrière DoH/DoT, je vous invite à lire l'excellent billet de Stephane Bortzmeyer :

https://www.bortzmeyer.org/8484.html .

Et si au passage l'envie vous prend, je vous conseille d'acheter son livre "Cyberstructure" il est excellent.

https://cyberstructure.fr/