Skip to main content

Chiffrement DNS

AdGuard Home prend en charge tous les protocoles de chiffrement DNS modernes prêts à l'emploi :

note

AdGuard Home prend en charge à la fois DNSCrypt côté client et côté serveur. Apprenez à configurer AdGuard Home comme serveur DNSCrypt.

Ce guide explique comment configurer un serveur DNS chiffré avec AdGuard Home.

Installation du serveur

L'objectif de la sécurisation du trafic DNS est de le protéger contre les tiers qui pourraient l'analyser ou le modifier, par exemple les fournisseurs d'accès à Internet.

Cela signifie que vous aurez besoin d'un serveur doté d'une adresse IP publique et dédiée. Il existe de nombreux fournisseurs de serveurs cloud bon marché�: DigitalOcean, Vultr, Linode, etc. Choisissez-en un, créez-y un serveur cloud, et Installer AdGuard Home sur votre serveur.

Enregistrer un nom de domaine

Tout d’abord, vous avez besoin d’un nom de domaine. Si vous n'en avez jamais enregistré, voici une [instruction simple][enregistrement de nom de domaine] qui vous aidera.

Obtenir un certificat SSL

DNS-over-HTTPS et DNS-over-TLS reposent tous deux sur le chiffrement TLS, vous aurez donc besoin d un certificat SSL pour les utiliser.

Un certificat SSL peut être acheté auprès d'une autorité de certification (CA), une entreprise à laquelle les navigateurs et les systèmes d'exploitation font confiance pour enregistrer les certificats SSL des domaines.

Vous pouvez également obtenir le certificat gratuitement auprès de la CA Let’s Encrypt, une autorité de certification gratuite développée par l’Internet Security Research Group (ISRG).

Ce guide explique comment obtenir un certificat auprès d'eux.

L'utilisation de CertBot

Certbot est un client facile à utiliser qui récupère un certificat auprès de Let’s Encrypt.

  1. Accédez à certbot.eff.org et choisissez Aucun des éléments ci-dessus pour le logiciel et votre système d’exploitation.
  2. Suivez les instructions d’installation et arrêtez-vous avant d’atteindre la section Démarrer.

Obtenez un certificat via DNS challenge

Vous avez un nom de domaine, l'utilisation de DNS challenge est le moyen le plus simple d'obtenir un certificat.

Exécutez cette commande et suivez les instructions de certbot :

sudo certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1"

Au final, vous obtiendrez deux fichiers :

  • fullchain.pem : votre certificat SSL encodé au format PEM
  • privkey.pem : votre clé privée encodée au format PEM

Les deux seront nécessaires pour configurer AdGuard Home.

Important

Vous devrez utiliser exactement la même procédure pour renouveler le certificat existant.

L'utilisation de Lego

Il existe également une alternative très agréable et facile à utiliser à CertBot appelée LEGO.

  1. Installez-le en utilisant une méthode appropriée.
  2. Choisissez votre fournisseur DNS dans la liste et suivez les instructions pour obtenir un certificat.

Voici également un script simple que vous pouvez utiliser pour automatiser la génération et le renouvellement des certificats.

Configurer AdGuard Accueil

  1. Ouvrez l’interface Web d’AdGuard Home et accédez aux Paramètres.

  2. Choisissez la section Cryptage.

    Capture d’écran des paramètres de chiffrement

  3. Copiez/collez le contenu du fichier fullchain.pem dans le champ sous Certificats ou spécifiez le chemin d'accès au fichier.

  4. Copiez/collez le contenu du fichier privkey.pem dans le champ sous Clé privée ou spécifiez le chemin d'accès au fichier.

  5. Saisissez votre nom de domaine dans Nom du serveur.

  6. Recevez les messages de validation et cliquez sur Enregistrer les paramètres.

note

AdGuard Home rechargera automatiquement les certificats et/ou les clés privées spécifiés par le chemin d'accès au fichier lorsqu'ils seront modifiés. Un rechargement peut également être déclenché par un signal SIGHUP.

L'utilisation avec proxy inverse

Nous avons déjà un guide sur la configuration d�'un serveur proxy inverse pour accéder à l�'interface utilisateur Web d�'AdGuard Home.

AdGuard Home est en mesure de restreindre les requêtes DNS-over-HTTPS qui proviennent du serveur proxy non inclus dans la liste "de confiance". Par défaut, il est configuré pour accepter les requêtes provenant d'adresses de bouclage IPv4 et IPv6.

Pour permettre à AdGuard Home de gérer les requêtes DNS sur HTTPS provenant d'un serveur proxy inverse, définissez le paramètre trusted_proxies dans AdGuardHome.yaml sur l'adresse IP du serveur proxy. Si vous disposez de plusieurs serveurs proxy, vous pouvez utiliser un CIDR au lieu d'une simple adresse IP.

Proxy inverse Nginx

Pour configurer AdGuard Home dans le but qu'il accepte les requêtes provenant du serveur proxy inverse Nginx, assurez-vous que ce dernier soit configuré correctement.

Le fichier nginx.conf doit contenir les directives appropriées pour ajouter les en-têtes de transfert pris en charge à la requête, à savoir X-Real-IP ou X-Forwarded-For. Ceci peut être réalisé avec ngx_http_realip_module. En résumé, le module récupère l'adresse IP réelle du client et l'inscrit dans l'en-tête de la requête HTTP. AdGuard Home recevra et interprétera la valeur de cet en-tête comme l'adresse réelle du client. L'adresse du serveur proxy inverse sera également reçue et vérifiée par rapport à la liste des serveurs proxy "de confiance".

Un autre en-tête que vous pourriez vouloir faire transiter est l'en-tête Host, qui est nécessaire pour qu'AdGuard Home reconnaisse les requêtes provenant de clients dont le nom d'hôte contient un identifiant ClientID.

Par exemple, si la configuration du serveur proxy inverse contient les directives suivantes :

location /dns-query {
# …
proxy_set_header Host $host;
proxy_set_header X-Real-IP '1.2.3.4';
proxy_bind 192.168.1.2;
# …
}

AdGuard Home récupérera l'adresse 192.168.1.2 comme adresse de votre serveur proxy et la comparera à la liste trusted_proxies. La version 1.2.3.4 sera contrôlée par les paramètres d'accès si le proxy est considéré "fiable".

Cloudflare CDN

Le réseau de distribution de contenu (CDN) de Cloudflare agit comme un proxy inverse ajoutant ses propres en-têtes cloudflare-headers aux requêtes transférées, qui sont CF-Connecting-IP et True-Client-IP. Ceux-ci sont également pris en charge par AdGuard Home, de sorte que les adresses des serveurs proxy inverses peuvent être insérées directement dans la liste trusted_proxies. Consultez la référence officielle de Cloudflare sur la restauration de l'adresse IP originelle du visiteur.

Autres en-têtes

D'autres en-têtes HTTP pourraient être pris en charge à l'avenir par AdGuard Home. Toutefois, toute requête de fonctionnalité relative aux en-têtes doit d'abord être résolue en configurant le proxy inverse lui-même.

Par exemple, pour modifier le mécanisme HTTP Strict Transport Security afin d'inclure la directive expérimentale preload, on pourrait utiliser une configuration similaire à celle-ci :

location /dns-query {
# …
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# …
}

Configuration des appareils

Android

  • Android 9 et versions ultérieures prennent en charge nativement le protocole DNS-over-TLS. Pour le configurer, allez dans ParamètresRéseau et InternetAvancésDNS privé et saisissez votre nom de domaine ici.
  • AdGuard for Android prend en charge DNS-over-HTTPS, DNS-over-TLS, DNSCrypt et DNS-over-QUIC.
  • Intra ajoute la prise en charge de DNS-over-HTTPS à Android.

iOS

  • iOS 14 et versions ultérieures prennent en charge DNS-over-TLS et DNS-over-HTTPS nativement via des profils de configuration. Afin de faciliter les choses, AdGuard Home peut générer ces profils de configuration pour vous. Il vous suffit d'aller dans Guide d'installationConfidentialité DNS et de faire défiler jusqu'à iOS.
  • AdGuard pour iOS prend en charge DNS-over-HTTPS, DNS-over-TLS, DNSCrypt et DNS-over-QUIC.
  • DNSCloak prend en charge DNS-over-HTTPS mais pour le configurer afin d'utiliser votre propre serveur, vous devrez générer un DNS Stamp pour celui-ci.

Windows

  • Windows 10 Build 19628 et versions ultérieures prennent en charge nativement DNS-over-HTTPS.
  • AdGuard pour Windows prend en charge DNS-over-HTTPS, DNS-over-TLS, DNSCrypt et DNS-over-QUIC.

macOS

  • macOS Big Sur et les versions ultérieures prennent en charge DNS-over-TLS et DNS-over-HTTPS nativement via des profils de configuration. Afin de faciliter les choses, AdGuard Home peut générer ces profils de configuration pour vous. Il vous suffit d'aller dans Guide d'installationConfidentialité DNS et de faire défiler jusqu'à iOS.

D'autres implémentations

  • AdGuard Home lui-même peut être un client DNS sécurisé sur n'importe quelle plateforme.
  • dnsproxy prend en charge tous les protocoles DNS sécuritaires connus.
  • dnscrypt-proxy prend en charge DNS-over-HTTPS.
  • Mozilla Firefox prend en charge DNS-over-HTTPS.

La configuration de DNSCrypt

AdGuard Home peut fonctionner comme un serveur DNSCrypt. Cependant, cette fonctionnalité est uniquement disponible via le fichier de configuration et ne peut pas être configurée à l’aide de l’interface Web. Ce guide explique comment procéder.

La génération d’un fichier de configuration

Voici comment générer un fichier de configuration DNSCrypt et y faire pointer AdGuard Home :

Important

Assurez-vous que vos paramètres TLS sont valides et que le chiffrement est activé.

  1. Obtenez la dernière version de l’utilitaire dnscrypt pour votre système. Extrayez l’archive et accédez au répertoire résultant.

    • Sous Unix, en utilisant un shell compatible POSIX :

      (Ici et ci-dessous, linux-amd64 est utilisé comme exemple. Assurez-vous de télécharger et d'utiliser celui qui correspond à votre plateforme.)

      1. Extrayez les fichiers :

        tar -f ./dnscrypt-linux-amd64-v2.2.3.tar.gz -v -x -z

        Exemple de sortie :

        linux-amd64/
        linux-amd64/README.md
        linux-amd64/LICENSE
        linux-amd64/dnscrypt
      2. Accédez au répertoire extrait :

        cd ./linux-amd64/
      3. Générez le fichier de configuration :

        ./dnscrypt generate --provider-name '2.dnscrypt-cert.example.org' --out ./dnscrypt.yaml

        Exemple de sortie :

        2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
        2022/02/02 12:34:56 [info] Configuration has been written to ./dnscrypt.yaml
        2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
        2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
        2022/02/02 12:34:56 [info] dnscrypt server -c ./dnscrypt.yaml -f 8.8.8.8
    • Sur Windows, avec PowerShell :

      (Ici et ci-dessous, windows-amd64 est utilisé comme exemple. Assurez-vous de télécharger et d'utiliser celui qui correspond à l'architecture de votre processeur.)

      1. Extrayez les fichiers :

        Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zip
      2. Accédez au répertoire extrait :

        Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\
      3. Générez le fichier de configuration :

        .\dnscrypt.exe generate --provider-name '2.dnscrypt-cert.example.org' --out .\dnscrypt.yaml

        Exemple de sortie :

        2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
        2022/02/02 12:34:56 [info] Configuration has been written to .\dnscrypt.yaml
        2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
        2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
        2022/02/02 12:34:56 [info] dnscrypt server -c .\dnscrypt.yaml -f 8.8.8.8

    example.org est le nom de votre hôte et ./dnscrypt.yaml est le nom du fichier de sortie de configuration.

    Vous pouvez ajouter le chemin vers le binaire à votre PATH/$env:PATH.

  2. Dans le fichier de configuration (généralement AdGuardHome.yaml), ajoutez les lignes suivantes :

    'tls':
    # N.B. The encryption must be enabled.
    'enabled': true
    # …
    'port_dnscrypt': 5443
    'dnscrypt_config_file': './dnscrypt.yaml'

    5443 est le port de votre serveur DNSCrypt et ./dnscrypt.yaml est le nom du fichier de configuration généré à l'étape 2.

    Important

    Arrêtez AdGuard Home avant de modifier le fichier de configuration.

    tip

    Sous Windows, il est recommandé d'utiliser le chemin complet vers le fichier de configuration. Par exemple, C:\Users\Me\Files\dnscrypt.yaml.

Génération d’un tampon DNSCrypt

Voici comment générer un tampon DNSCrypt et vérifier votre installation :

  1. Go to https://dnscrypt.info/stamps/.

  2. Saisissez les données de votre fichier de configuration DNSCrypt. La clé publique du fournisseur correspond à la valeur du champ public_key dans votre fichier de configuration DNSCrypt.

    note

    Saisissez l'hôte avec votre port personnalisé.

  3. Vous avez maintenant un tampon qui ressemble à ceci :

    sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn

    Vérifiez votre installation en exécutant :

    ./dnscrypt lookup-stamp \
    --domain 'example.com' \
    --stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' \
    --type 'a'

    Ou, sur Windows :

    .\dnscrypt.exe lookup-stamp `
    --domain 'example.com' `
    --stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' `
    --type 'a'

    example.com est le nom de domaine à rechercher.

La configuration des appareils pour utiliser DNSCrypt

Toutes les plateformes

  • dnscrypt-proxy (implémentation de référence). DNSCrypt-Proxy est un proxy en ligne de commande pour Linux, BSD, Windows, macOS, Android, et plus encore.

Android

iOS

Windows

Voir le site web DNSCrypt et la liste du projet de confidentialité DNS pour plus d'informations.