DNS over HTTPS est un protocole permettant de chiffrer les requêtes DNS et protéger leur intégrité. Il s’agit de protéger les requêtes DNS avec une couche de chiffrement (HTTPS).

Les principaux navigateurs web proposent désormais cette fonctionnalité.

Le principe est le même pour le DNS over TLS mais appliqué à l’ensemble de l’ordinateur via les DNS de votre carte réseau, à conditions que l’OS le prenne en charge.

Nous allons pour cette article d’utiliser UNBOUND comme résolveur DNS et DNSDIST comme frontal DNS qui supporte DoT et DoH.

UNBOUND

Pour l’installation de unbound, je vous renvoi vers l’article que j’ai écrit il y a déjà quelques années : Serveur DNS récursif UNBOUND

DNSDIST

Installation

L’installation est assez simple sur Debian par exemple

apt install dnsdist

Tapez le commande

dnsdist --version

pour vérifier que les instructions suivantes font bien partie de la liste

Enabled features: ... dns-over-tls(gnutls openssl) dns-over-https(DOH) ...

Configuration

Rendez vous dans le fichier « dnsdist.conf » dans le répertoire /etc/dnsdist

-- le resolveur DoT/DoH est public, on accepte tout le monde en IPv4 et IPv6
setACL({'0.0.0.0/0', '[::]/0'})

-- serveur DNS ou transferer les requetes entrantes
newServer({address='127.0.0.1:53', name='Unbound (local)'})

-- configuration de DoH
-- modifier l'IPv4 et l'IPv6 en consequence
addDOHLocal('87.106.170.231:443','/etc/dnsdist/certif_public.pem','/etc/dnsdist/certif_private.key', '/', {minTLSVersion='tls1.2'})
addDOHLocal('[2001:8d8:1801:81ca::11)]:443','/etc/dnsdist/certif_public.pem','/etc/dnsdist/certif_private.key', '/', {minTLSVersion='tls1.2'})

-- limitation du trafic a 100 requetes par seconde
-- plus d'info en <https://dnsdist.org/advanced/qpslimits.html>
addAction(MaxQPSIPRule(100), DropAction())

Certificat

Pour les certificats, nous allons utiliser Letsencrypt

apt install certbot

Puis générons le certificat

certbot certonly --standalone -d 'doh-demo.akoonet.com' -m '[email protected]' --no-eff-email

Il faut ensuite copié les certificats générés dans le répertoire /etc/letsencrypt/live/doh-demo.akoonet.com/

cp /etc/letsencrypt/live/doh-demo.akoonet.com/fullchain.pem /etc/dnsdist/certif_public.pem

cp /etc/letsencrypt/live/doh-demo.akoonet.com/fullchain.pem /etc/dnsdist/certif_private.key

Il faut maintenant appliquer les droits nécessaires pour que les certificats puissent être lu par dnsdist.

chown -R root:_dnsdist /etc/dnsdist

Et pour finir, démarrez dnsdist

systemctl start dnsdist

NOTE : Vous pouvez créer une tache d’automatisation pour gerer la mise à jour du certificat et la copie vers dnsdist

Configuration de firefox

Allez dans paramètres puis Vie privée et sécurité et descendez en bas de la page