SafeITExperts

SafeITExperts

Your expert guide to cybersecurity and digital privacy. Security hardening for all platforms : Windows, macOS, Linux, and Android. Solutions aligned standards : NIST and ANSSI for comprehensive digital protection.


15 Options Essentielles d'Unbound DNS | Sécurité et Confidentialité

Publié par Marc sur 21 Juin 2025, 18:32pm

Catégories : #DNS, #Unbound, #Resolver, #sécurité

sécuriser Unbound ≥1.25.1 avec DNSSEC, DoT/DoH/DoQ, durcissement système. Scénarios domestique/PME/entreprise.

sécuriser Unbound ≥1.25.1 avec DNSSEC, DoT/DoH/DoQ, durcissement système. Scénarios domestique/PME/entreprise.

Sécurité DNS avec Unbound en 2026 | SafeITExperts
Ouvrir le sommaire

Sécurité DNS avec Unbound en 2026 (Mis à jour mai 2026)

Introduction — Unbound en 2026 : état des lieux

Unbound est un résolveur DNS validant, récursif et de mise en cache développé par NLnet Labs, conçu pour être à la fois rapide et sécurisé [reference:0]. Ce guide présente les configurations critiques pour sécuriser Unbound ≥1.25.1, en intégrant les quatre piliers suivants.

Correctifs CVE de mai 2026
CVE-2026-32792 (DoS), CVE-2026-33278 (validation DNSSEC) — mises à jour impératives pour Unbound ≥1.25.1.
Protocoles de chiffrement modernes
DoT, DoH, DoQ avec exemples fonctionnels et mises en garde contre les erreurs de configuration courantes.
Durcissement système
SELinux, Firewalld, confinement chroot — guide pas à pas pour openSUSE Tumbleweed.
Approche par scénarios
Configurations adaptées : domestique, PME, entreprise — choisissez selon votre contexte.
Correction critique appliquée
La configuration tls-upstream: yes appliquée globalement casse la résolution DNS vers les serveurs racine non-DoT. Ce guide utilise désormais forward-tls-upstream dans des forward-zone explicites. Voir section Chiffrement moderne.
📦 Versions & CVE 2026 🖱️ Cliquez sur les rubriques à gauche
3 indicateurs
Navigation
Version requise : Unbound ≥ 1.25.1 MAI 2026
Publiée le 20 mai 2026 par NLnet Labs, cette version corrige 11 vulnérabilités dont CVE-2026-33278 (CVSS 9.8). Source : NLnet Labs [reference:1]
Commande de vérification
Copier# Vérifier la version sur openSUSE Tumbleweed
zypper search --details unbound

# Installer / mettre à jour
sudo zypper refresh && sudo zypper install unbound
CVE-2026-32792 : Déni de service DNSCrypt CVSS 7.5
Si Unbound est compilé avec DNSCrypt, un attaquant peut provoquer un déni de service via des requêtes malformées. Correction : mise à jour vers 1.25.1. [reference:2]
CVE-2026-33278 : Corruption de pointeur DNSSEC CVSS 9.8
Vulnérabilité critique dans le validateur DNSSEC pouvant permettre une exécution de code à distance. Impact : compromission du résolveur. Correction : 1.25.1 impérative. [reference:3]
CVE-2026-42960 : Empoisonnement de cache CVSS 8.1
Enregistrements d'autorité malformés pouvant corrompre le cache. Atténuation : activer harden-below-nxdomain et harden-glue. [reference:4]
Spécificités openSUSE Tumbleweed
• Chemin de config : /etc/unbound/unbound.conf
• Dossier de travail : /var/lib/unbound/
• Utilisateur système : unbound:unbound
• SELinux : politique unbound_t par défaut
• Dépôt recommandé : server:dns pour versions récentes
Vérification du dépôt
Copier# Ajouter le dépôt server:dns si nécessaire
sudo zypper addrepo --refresh https://download.opensuse.org/repositories/server:/dns/openSUSE_Tumbleweed/ server:dns
sudo zypper refresh

Configuration essentielle pour Unbound ≥1.25.1

Cette section détaille les options de configuration validées par la documentation officielle unbound.conf(5) v1.25.1. Les valeurs par défaut et les recommandations ont été vérifiées pour cette version.

⚙️ Options de configuration (≥1.25.1) 🖱️ Cliquez sur les rubriques à gauche
4 catégories
Catégories
auto-trust-anchor-file Non configuré par défaut
Défaut : aucun fichier spécifié. Recommandation : "/var/lib/unbound/root.key". Active la validation DNSSEC automatique avec mise à jour périodique des ancres de confiance. Source : manpage unbound.conf(5) [reference:5]
harden-below-nxdomain yes (défaut depuis 1.8.0)
Défaut réel : yes (depuis 1.8.0, 2018). Conforme RFC 8020 — protection anti-empoisonnement de cache. L'audit indiquait no par erreur (basé sur une version antérieure). [reference:6]
harden-glue yes (défaut)
Défaut : yes. Validation stricte des enregistrements glue. Recommandé : yes. Protection essentielle contre les attaques par empoisonnement de cache.
hide-identity / hide-version no (défaut)
Défaut : no. Recommandation : yes. Masque l'identité et la version du serveur pour limiter la surface d'attaque. [reference:7]
private-address Aucune configurée par défaut
Recommandation : configurer les plages RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) et 169.254.0.0/16. Bloque les adresses privées dans les réponses publiques — protection anti-rebond DNS. [reference:8]
access-control 127.0.0.0/8 only
Défaut : seul localhost est autorisé. Recommandation : ajouter les sous-réseaux locaux (192.168.0.0/16 allow, etc.). Restreint les requêtes aux réseaux de confiance. [reference:9]
qname-minimisation yes (défaut)
Défaut : yes. Réduit les données transmises aux serveurs upstream pour améliorer la confidentialité. Conforme RFC 7816. [reference:10]
edns-buffer-size 1232 (défaut depuis 1.12.0)
Défaut réel : 1232 (DNS Flag Day 2020). Évite la fragmentation UDP, requis pour DoT/DoH. Recommandation : 1232. [reference:11]
prefetch no → yes
Défaut : no. Recommandation : yes. Précharge les entrées de cache avant expiration (~10% de trafic supplémentaire, mais latence améliorée). [reference:12]
rrset-roundrobin yes (défaut depuis 1.11.0)
Défaut réel : yes (depuis 1.11.0, 2020). Rotation des RRSet pour répartition de charge. L'audit indiquait no par erreur. [reference:13]
use-caps-for-id no (défaut) — Déconseillé en production
Défaut : no. Recommandation : no (sauf test). La randomisation 0x20 peut provoquer des SERVFAIL avec certains résolveurs upstream. La documentation officielle et les retours d'expérience déconseillent cette option en production. [reference:14][reference:15]
Bonne pratique
Toujours vérifier les valeurs par défaut via unbound-control dump_config ou la manpage unbound.conf(5) pour votre version installée. Les valeurs par défaut ont évolué au fil des versions : harden-below-nxdomain est passé à yes en 1.8.0, rrset-roundrobin en 1.11.0, edns-buffer-size à 1232 en 1.12.0.

Chiffrement moderne : DoT / DoH / DoQ

En 2026, le chiffrement du transport DNS n'est plus optionnel. Unbound supporte nativement trois protocoles.

🔐 Protocoles de chiffrement 🖱️ Cliquez sur les rubriques à gauche
3 protocoles
Protocoles
DNS-over-TLS (DoT) — Port 853 TCP NATIF
Chiffrement TLS natif, port dédié. Compatible avec tous les résolveurs publics majeurs (Quad9, Cloudflare, Google).
Configuration recommandée
Copierforward-zone:
  name: "."
  forward-addr: 9.9.9.9@853#dns.quad9.net
  forward-addr: 149.112.112.112@853#dns.quad9.net
  forward-tls-upstream: yes  # ← UNIQUEMENT ici !
  tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
  tls-protocols: "TLSv1.3"
  tls-cipher-list: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
⚠️ Ne pas utiliser tls-upstream: yes globalement DANGER
Cette directive appliquée au bloc server: force le TLS pour toutes les requêtes sortantes, y compris vers les serveurs racine qui ne le supportent pas. Résultat : échec de résolution immédiat.
DNS-over-HTTPS (DoH) — Port 443 HTTPS PROXY REQUIS
Unbound ne supporte pas DoH en mode client natif. Deux architectures possibles :
Option 1 : Proxy local avec doh-proxy
Copier# Installer doh-proxy (NLnet Labs)
sudo zypper install unbound-doh-proxy

# Configuration minimale dans /etc/unbound/unbound.conf
server:
  interface: 127.0.0.1@5353  # Écoute sur port alternatif
forward-zone:
  name: "."
  forward-addr: 9.9.9.9@443#dns.quad9.net
  forward-https-upstream: yes
Option 2 : Terminaison serveur avec Caddy
Copier# Caddyfile minimal pour servir DoH localement
localhost:443 {
  reverse_proxy /dns-query {
    to localhost:5353
    header_up Host {host}
  }
  tls internal
}
DNS-over-QUIC (DoQ) — Port 853 UDP NATIF ≥1.22.0
Support natif depuis Unbound ≥1.22.0. Plus résistant au blocage que DoT. Quad9 et Cloudflare ont activé DoQ en production en 2026. [reference:16]
Configuration minimale
Copierserver:
  quic-port: 853  # UDP
  tls-service-key: "/etc/unbound/doq.key"
  tls-service-pem: "/etc/unbound/doq.pem"
  tls-protocols: "TLSv1.3"

# Pour utiliser un upstream DoQ :
forward-zone:
  name: "."
  forward-addr: 9.9.9.9@853#dns.quad9.net
  forward-ssl-upstream: yes  # alias pour DoQ
⚠️ Prérequis techniques VÉRIFIER
• OpenSSL ≥ 3.5.0
• libngtcp2 ≥ 1.13.0
• Vérification : ldd /usr/sbin/unbound | grep ngtcp2

Durcissement système : openSUSE Tumbleweed

🛡️ Durcissement système 🖱️ Cliquez sur les rubriques à gauche
3 axes
Axes
SELinux : autoriser le trafic DoT/DoQ sortant
Par défaut, la politique unbound_t peut bloquer les connexions vers les ports 853. Voici comment les ouvrir :
Commandes SELinux
Copier# Autoriser Unbound à initier des connexions vers le port 853 (DoT/DoQ)
sudo semanage port -a -t unbound_port_t -p tcp 853 2>/dev/null || \
sudo semanage port -m -t unbound_port_t -p tcp 853

# Si utilisation de DoQ (UDP)
sudo semanage port -a -t unbound_port_t -p udp 853 2>/dev/null || \
sudo semanage port -m -t unbound_port_t -p udp 853

# Recharger la politique
sudo restorecon -Rv /etc/unbound /var/lib/unbound
Firewalld : règles minimales
Ouvrir les ports nécessaires pour le service DNS et les connexions chiffrées sortantes.
Commandes Firewalld
Copier# DNS entrant (UDP/TCP 53)
sudo firewall-cmd --permanent --add-service=dns

# DoT/DoQ sortant (si non couvert par la zone trusted)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="0.0.0.0/0" port port="853" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="0.0.0.0/0" port port="853" protocol="udp" accept'

sudo firewall-cmd --reload
Confinement : chroot et utilisateur dédié
Le confinement chroot n'est pas actif par défaut (chaîne vide). Configurez-le pour isoler Unbound du reste du système. [reference:17]
Configuration chroot
Copier# Dans /etc/unbound/unbound.conf.d/hardening.conf
server:
  username: "unbound"
  chroot: "/var/lib/unbound"
  directory: "/var/lib/unbound"
  pidfile: "/var/run/unbound.pid"

# Préparer le chroot (à exécuter une fois)
sudo mkdir -p /var/lib/unbound/etc/ssl/certs
sudo cp /etc/ssl/certs/ca-certificates.crt /var/lib/unbound/etc/ssl/certs/
sudo chown -R unbound:unbound /var/lib/unbound
Vérification
Copiersudo systemctl status unbound
sudo journalctl -u unbound -f

Scénarios de déploiement : adapter la configuration

🎯 Scénarios d'usage 🖱️ Cliquez sur les rubriques à gauche
3 profils
Profils
🏠 Serveur domestique
Objectif : confidentialité basique, protection contre le tracking DNS
Chiffrement : DoT vers Quad9 ou Cloudflare
Performance : valeurs par défaut suffisantes
Supervision : logs locaux (journalctl -u unbound)
Configuration minimale
Copierserver:
  interface: 127.0.0.1
  port: 53
  access-control: 127.0.0.0/8 allow
  access-control: 192.168.1.0/24 allow
  hide-identity: yes
  hide-version: yes
  qname-minimisation: yes
  private-address: 10.0.0.0/8
  private-address: 172.16.0.0/12
  private-address: 192.168.0.0/16
  private-address: fd00::/8
  private-address: fe80::/10
  edns-buffer-size: 1232
  prefetch: yes

forward-zone:
  name: "."
  forward-addr: 9.9.9.9@853#dns.quad9.net
  forward-tls-upstream: yes
  tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
🏢 Petite entreprise (10-50 utilisateurs)
Objectif : sécurité renforcée, journalisation centralisée
Chiffrement : DoT + DoQ en fallback
Performance : num-threads: 2, msg-cache-size: 50m
Supervision : surveillance via unbound-control stats
Ajustements spécifiques PME
Copierserver:
  num-threads: 2
  msg-cache-size: 50m
  rrset-cache-size: 100m
  unwanted-reply-threshold: 50000  # ~1% du trafic horaire estimé
  harden-referral-path: yes
  minimal-responses: yes
  aggressive-nsec: yes
🏭 Grande entreprise / Infrastructure critique
Objectif : conformité, résilience, détection d'intrusion DNS
Architecture : cluster Unbound + forwarders redondants
Chiffrement : DoT/DoQ avec certificats internes PKI
Performance : msg-cache-size: 100m, rrset-cache-size: 200m (recommandation pour forte charge)
Éléments d'architecture avancée
Copier# Cluster : répliquer la configuration sur plusieurs nœuds
# Load balancing : utiliser keepalived ou un équilibreur externe

# Forwarders redondants avec priorités
forward-zone:
  name: "."
  forward-addr: 9.9.9.9@853#dns.quad9.net
  forward-addr: 1.1.1.1@853#cloudflare-dns.com
  forward-addr: 8.8.8.8@853#dns.google
  forward-tls-upstream: yes

# Surveillance DNSSEC : alerte sur échecs de validation
# Intégrer dans votre monitoring existant :
# - unbound_dnssec_validation_success
# - unbound_dnssec_validation_failure

# Rotation des clés DNSSEC : automatiser via cron + unbound-anchor

Maintenance et évolution

Tâches récurrentes

📅 Hebdomadaire
Vérifier les logs d'erreur (journalctl -u unbound -p err)
📅 Mensuel
Valider la mise à jour des ancres DNSSEC (unbound-anchor -a /var/lib/unbound/root.key)
📅 Trimestriel
Réviser les règles access-control et private-address
🔄 À chaque mise à jour
Tester la configuration en dry-run avant déploiement
Rappel — Avant tout redémarrage, toujours valider la syntaxe avec unbound-checkconf /etc/unbound/unbound.conf puis recharger avec systemctl reload unbound.

Sources vérifiées

Ce guide s'appuie exclusivement sur des sources primaires et vérifiables :

  1. Documentation officielle Unbound : nlnetlabs.nl/documentation/unbound — manpages unbound.conf(5), notes de version [reference:18]
  2. NLnet Labs — Unbound 1.25.1 released : Annonce officielle du 20 mai 2026 — 11 CVE corrigées [reference:19]
  3. NIST SP 800-81r3 (2026) : Secure Domain Name System (DNS) Deployment Guide — cadre stratégique pour la sécurité DNS
  4. RFC 8484 (DoH), RFC 9250 (DoQ) — standards IETF pour le chiffrement DNS
  5. openSUSE Wiki : fr.opensuse.org/Unbound — spécificités d'intégration Tumbleweed
  6. Base de données CVE : OSV.dev — suivi des vulnérabilités Unbound
  7. Quad9, Cloudflare, Google DNS — documentation publique des résolveurs DoT/DoH/DoQ

Conformité éditoriale : Les affirmations factuelles sont sourcées ; les recommandations sont contextualisées par scénario ; les avertissements critiques sont signalés visuellement.

À propos de l'auteur

Marc est l'éditeur principal de SafeITExperts, blog technique bilingue FR/EN dédié à la cybersécurité, Linux et la souveraineté numérique.

RéseauLien
Sitesafeitexperts.com
X (Twitter)@crisisdav
FacebookSafeITExperts
Bluesky@crisis23.bsky.social
Mastodon (Infosec)@safeitexperts
Emailsafeitexperts@safeitexperts.com

Article publié le 21 juin 2025 — Mis à jour le 26 mai 2026 par Marc — SafeITExperts.
© SafeITExperts — Reproduction autorisée avec mention de la source.

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article

Archives

Nous sommes sociaux !

Facebook X Bluesky Mastodon GitHub Reddit RSS

Articles récents