Mise en place d'un service DNS chiffré et sécurisé

Mise en place d'un service DNS chiffré et sécurisé
Photo by Denny Bú / Unsplash

Ce guide vous explique comment installer et sécuriser une instance de DNS privé sur un serveur Debian, accessible via les protocoles chiffrés DoT (DNS-over-TLS) et DoH (DNS-over-HTTPS).

Installation et Configuration d'AdGuard Home

Pour garantir que votre instance DNS démarre automatiquement au boot et tourne en arrière-plan, AdGuard Home s'installe nativement comme un service systemd.

Téléchargement et installation : Utilisez le script automatique officiel pour télécharger et installer le binaire adapté à votre architecture (arm64 pour un RPi 4 par exemple) :

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

Gestion du service :
Une fois installé, AdGuard Home est automatiquement enregistré comme service AdGuardHome. Vous pouvez le gérer avec les commandes systemd standards :

    # Démarrer le service
    sudo systemctl start AdGuardHome

    # Activer le lancement automatique au démarrage
    sudo systemctl enable AdGuardHome

    # Vérifier l'état du service
    sudo systemctl status AdGuardHome

Initialisation : Après le premier démarrage, accédez à l'interface web (généralement sur le port 3000 par défaut lors de la première installation) pour effectuer la configuration initiale via l'assistant de configuration.

Après l'installation du logiciel de service DNS sur votre serveur Debian :

Chiffrement : Dans l'interface d'administration, accédez à Paramètres > Paramètres de chiffrement.

Certificats : Utilisez Certbot pour générer des certificats SSL pour votre nom de domaine:

sudo apt install certbot
sudo certbot certonly --standalone -d votre.domaine.fr

Paramétrage : Dans l'interface, indiquez les chemins vers vos fichiers de certificats générés :

    • fullchain.pem pour le certificat.
    • privkey.pem pour la clé privée.

Ports : Activez le chiffrement et assurez-vous que les ports 853 (DoT) et 443 (DoH) sont configurés.

Sécurisation du réseau (UFW)

Il est essentiel de restreindre l'accès à votre serveur pour ne laisser passer que le trafic autorisé :

# Autoriser le DNS standard uniquement pour le réseau local
sudo ufw allow from 192.168.1.0/24 to any port 53 proto udp
sudo ufw allow from 192.168.1.0/24 to any port 53 proto tcp

# Autoriser le DNS chiffré (DoT/DoH) pour l'accès externe
sudo ufw allow 853/tcp
sudo ufw allow 443/tcp

# Activer le pare-feu
sudo ufw enable

Optimisations système (Exemple pour Raspberry Pi 4)

Si votre serveur tourne sur un environnement de type Raspberry Pi, quelques optimisations permettent d'améliorer la durabilité et la réactivité :

Stockage : Ajoutez l'option noatime dans votre fichier /etc/fstab pour réduire les écritures disque.

Performance CPU : Utilisez cpupower pour forcer le mode performance:Bash

sudo apt install linux-cpupower
sudo cpupower frequency-set -g performance

Consommation : Désactivez les services inutiles (Bluetooth/Wi-Fi) dans le fichier /boot/firmware/config.txt pour libérer des ressources :

dtoverlay=disable-bt
dtoverlay=disable-wifi

Points de vigilance

Renouvellement : N'oubliez pas de mettre en place une tâche automatique pour le renouvellement des certificats SSL (via certbot renew).

Monitoring : Surveillez l'état de votre service DNS via les logs système et les outils de monitoring de votre choix.

Ce tutoriel fournit une base solide pour gérer votre propre infrastructure DNS de manière chiffrée et sécurisée.