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