Installer un serveur DNS over HTTPS avec AdGuard Home

Dans ce tutoriel, je vais vous expliquer comment installer et configurer un serveur DNS over HTTPS avec AdGuard Home.

Mais avant de rentrer dans le vif du sujet quelques explications et présentation.

Qu’est ce que DNS over HTTPS

Les requêtes DNS classique sont envoyées sur le port 53 du serveur DNS utilisant UDP, de ce fait les requêtes DNS ne sont pas sécurisées, elles peuvent être vue très facilement en écoutant le réseau et aussi modifiées.

Pour palier en partie à ce problème, la technologie DNS over HTTPS (DoH) a été créé qui permet d’encapsuler les requêtes DNS dans le protocole HTTPS et donc de profiter du chiffrement SSL, ce qui rend plus difficile l’écoute et l’interception des requêtes DNS.

Les principaux DNS publiques comme Cloudflare ou encore Google proposent des serveurs DoH, le problème de ces DNS publiques, c’est qu’ils ne vont pas pouvoir résoudre vos nom de domaine interne.

Comment utiliser des serveurs DNS over HTTPS sur Windows 11

Sur Windows, il existe plusieurs solutions pour configurer la résolution de nom à travers un service DoH.

  • Configuration des serveurs DoH directement dans le navigateur Internet
  • Configurer IP de Windows 11 à condition de déclarer les serveurs DoH

Sur Windows 11 pour afficher les serveurs DoH par défaut entrer la commande suivante :

Get-DnsClientDohServerAddress

En configurant manuellement une des adresses IP en tant que serveur DNS sur Windows 11, vous aurez la possibilité d’activer la résolution en utilisant DoH.

Qu’est ce que AdGuard Home

AdGuard Home est un « service » qui permet de mettre en place un serveur DNS « domestique » qui permet de filtrer les requêtes DNS :

  • Publicités
  • Trackers
  • Sites malveillants
  • Certain service comme Facebook et sites pour adultes

AdGuard Home permet aussi d’avoir un interface Web de gestion du serveur DNS avec de nombreuses options comme la possibilité de mettre en place un service DNS over HTTPS (DoH), qui va être l’objet de ce tutoriel.

AdGuard Home peut être installer directement sur une machine Linux ou en conteneur à l’aide Docker.

Déployer AdGuard Home avec Docker

Avant de simplifier le déploiement de AdGuardHome, j’ai choisi de le déployer sur un serveur dédié en utilisant Docker et en installer Nginx en tant que reverse Proxy.

Comment à mon habitude, sur mon serveur, j’ai créé les dossiers /containers/adguardhome qui va contenir les différents fichiers et volumes.

sudo mkdir -p /containers/adguardhome

On va maintenant créer le fichier docker-compose.yml dans le dossier créé précédemment :

sudo nano docker-compose.yml

Voici le contenu du fichier :

Télécharger l’image :

sudo docker compose pull

Démarrer le conteneur :

sudo docker compose up -d

On va maintenant passer à la configuration du AdGuard Home.

Configuration d’AdGuard Home

Depuis un navigateur Internet, aller à l’url suivante : http://ip:3000 au lancement de l’assistant, cliquer sur C’est parti 1.

Changer le port de l’interface Web en indiquant le port 3000 1 puis cliquer sur Suivant 2.

Configurer un compte administrateur en indiquant son identifiant 1 puis son mot de passe 2 et cliquer sur Suivant 3.

A cette étape, l’assistant, vous explique en fonction de votre environnement comment configurer AdGuard Home comme serveur DNS, cliquer sur Suivant 1.

AdGuard Home est installé, cliquer sur Ouvrir le Tableau de bord 1.

Pour accéder à AdGuard Home, il faut s’identifier avec le compte créer précédemment.

Une fois connecté, on arrive sur le Tableau de bord, pour le moment celui-ci est vide.

Configuration de AdGuard Home

Pour commencer, nous allons configurer les DNS (redirecteur) de notre serveur AdGuard Home.

Depuis le menu de navigation, cliquer sur Paramètres 1 puis sur Paramètres DNS 2.

Dans la partie Serveurs DNS Upstream, on va indiquer les autres serveurs DNS pour effectuer les résolutions de nom, comme AdGuard Home a été installé en entreprise, je vais dans un premier temps, lui indiquer les contrôleurs de domaines qui sont serveurs DNS pour mon domaine Active Directory, puis en second un serveur DNS sur Internet pour faire les autres résolutions, ce qui est intéressant ici, c’est que l’on peut indiquer un service DoH sur Internet qui va permettre également de « sécurisé » les résolutions effectuées sur Internet.

Sur la capture ci-dessous voici ma configuration :

Pour vous aidez à la configuration, vous avez plusieurs exemples :

Pour valider la configuration, cliquer sur Tester les upstreams 1.

Puis cliquer sur Appliquer 1 pour enregistrer la configuration des serveurs DNS upstreams.

Dans les paramètres DNS, pour éviter tous problème, changer la valeur de Limite de taux par 0 puis cliquer sur Enregistrer.

La configuration minimale pour utiliser Adguard Home en tant que serveur DNS est terminé.

Tester le résolution de nom avec AdGuard Home

Sur un ordinateur, changer la configuration DNS et indiquer l’adresse IP du serveur AdGuard Home, aller sur Internet ou faite des résolution de nom à l’aide de PowerShell (Resolve-DnsName).

Retourner sur le Tableau de bord de AdGuard Home, vous devriez voir les statistiques.

Depuis le Journal des requêtes, vous pouvez avoir également toutes les requêtes DNS qui ont été traitées.

Pour chaque requête, on peut avoir des informations supplémentaires.

Je trouve cette partie d’Adguard Home très intéressante car elle permet d’avoir des informations complètes sur le service DNS.

Configuration du DoH sur AdGuard Home

On va maintenant passer au sujet de départ du tutoriel, qui est la mise en place d’un service DNS over HTTPS en interne.

Pour cette partie, nous allons avoir besoin :

  • Un serveur Web qui va traité les requêtes HTTPS qui sera Nginx
  • Un nom de domaine avec un enregistrement spécifique pour le service DOH (doh.domain.tld)
  • Un certificat SSL (Let’s Encrypt)

Commencer par installer Nginx :

sudo apt install nginx -y

Si besoin installer le certbot pour Nginx

sudo apt install python3-certbot-nginx -y

Si vous utilisez Certbot, cela implique de publier sur Internet le service Web

Maintenant, on va créer le virtualhost dans le dossier /etc/nginx/sites-available.

sudo nano /etc/nginx/sites-available/doh.domain.tld

Exemple 1 : vous possédez un certificat SSL

Exemple 2 : utilisation de certbot

Ajouter le lien symboloque afin que Nginx charge le virtualhost :

sudo ln -s /etc/nginx/sites-available/doh.domain.tld /etc/nginx/sites-enabled

Tester la configuration :

sudo nginx -t

Si vous n’avez pas d’erreur recharger la configuration :

sudo systemctl reload nginx

Dans le cas d’utilisation d’un certificat Let’s Encrypt, générer le certificat avec le commande suivante :

sudo certbot

Il va maintenant falloir modifier la configuration d’AdGuard Home pour autoriser la connexion depuis le reverse proxy et aussi lui indiquer d’autoriser DoH depuis une connexion qui n’est sécurisé (SSL) car c’est notre reverse proxy Nginx en frontale qui va gérer cette partie.

Ouvrir le fichier AdGuardHome.yaml :

sudo nano confdir/AdGuardHome.yaml

Ajouter l’adresse 0.0.0.0/0 dans la partie trusted_proxies: et dans la partie tls: modifier allow_unencrypted_doh à true.

AdGuardHome config file

Sauvegarder les modifications et redémarrer le conteneur :

sudo docker compose restart

La configuration coté AdGuard Home pour service DNS over HTTPS (DoH) est terminée.

Tester le service DoH avec Dog

Si vous avez un ordinateur sur Ubuntu, on peut tester la résolution DNS à travers DoH avec Dog.

Pour installer Dog entrer la commande suivante :

sudo snap install dog

Pour lancer une résolution de nom :

dog rdr-it.com @https://doh.domain.tld/dns-query --https

Configurer manuellement les serveurs DoH sur Windows 11

Maintenant, on va voir comment configurer manuellement, les serveur DNS over HTTPS sur Windows 11, cette étape est nécessaire pour tester le bon fonctionnement avec un déploiement à grande échelle.

Depuis les paramètres Réseau et Internet sur Windows, cliquer sur Modifier 1 sur la configuration DNS de la carte réseau.

Configurer le serveur DNS en indiquant l’adresse IP 1>, choisir Activé (modèle manuel) 2 sur le champ DNS sur HTTPS, entrer l’url du service DoH 3 puis cliquer sur Enregistrer 4.

Dans la configuration, on peut voir que le DNS est chiffré.

Pour vérifier le bon fonctionnement, on peut voir dans le Journal des requêtes sur AdGuard Home que l’on utilise DNS-over-HTTPS.

Configuration automatique du DNS over HTTPS

Pour configurer automatiquement le DNS over HTTPS sur Windows 11 quand la configuration est passé par un serveur DHCP, il faut déclarer à Windows 11 que les serveurs DNS supporte le DoH.

Pour cela, il faut passer par un script PowerShell :

Pour vous aidez voici un modèle de script qui peut être exécuté au démarrage de l’ordinateur.

Vous avez maintenant tout pour déployer vos serveur DNS over HTTPS en interne.

Conclusion

AdGuard Home est un serveur DNS qui va vous permettre de voir ce qui se passe au niveau DNS sur votre environnement informatique et aussi vous permettre de déployer facilement des serveurs DoH.

Je ne l’ai pas aborder dans ce tutoriel, mais vous allez aussi pouvoir activer des filtres pour limiter le traçage de vos utilisateurs et réduire l’empreinte numérique de votre société sur Internet.

Prochainement, je vais vous expliquer comment configurer un service DoH directement dans les navigateurs Internet.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

Laisser un commentaire