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é. 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
Commande de vérification
openSUSE — Vérification & installation
# 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.
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.
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.
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
Dépôt server:dns
# 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).
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).
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.
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.
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.
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.
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.
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).
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.
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.
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
unbound.conf — forward-zone DoT
forward-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
unbound.conf — doh-proxy
# 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
Caddyfile — DoH upstream
# 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.
Configuration minimale
unbound.conf — DoQ (DNS-over-QUIC)
server:
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
SELinux — Politiques DoT/DoQ
# 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
Firewalld — Règles DoT/DoQ
# 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.
Configuration chroot
unbound.conf — Confinement chroot
# 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
systemd — État du service Unbound
$ sudo 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
unbound.conf — Profil Domestique
server:
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
unbound.conf — Profil PME
server:
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
unbound.conf — Profil Entreprise
# 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 :

🔗 Documentation officielle Unbound
Manpages unbound.conf(5), architecture interne et notes de version officielles de NLnet Labs.
📢 NLnet Labs — Unbound 1.25.1
Annonce officielle de version du 20 mai 2026 et correctifs de sécurité (11 CVE traitées).
🛡️ NIST SP 800-81r3 (2026)
Secure Domain Name System Deployment Guide : cadre de référence pour la résilience et la sécurité DNS.
📜 Standards IETF : RFC 8484 & RFC 9250
Spécifications officielles IETF définissant les protocoles DNS-over-HTTPS (DoH) et DNS-over-QUIC (DoQ).
🦎 openSUSE Wiki — Guide Unbound
Directives d'intégration système, gestion des paquets et durcissement sous openSUSE Tumbleweed.
🔍 Base de données CVE (OSV.dev)
Suivi continu, métriques et historique des alertes de vulnérabilités affectant le résolveur Unbound.
🌐 Résolveurs Publics DoT / DoH / DoQ
Documentation technique des infrastructures publiques chiffrées (Quad9, Cloudflare DNS, Google DNS).

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

Lectures Recommandées SafeITExperts

Approfondissez vos connaissances en sécurité réseau, systèmes et souveraineté numérique :

🛡️ Sécurité Gaming 2025 : Guide Complet Protection Réseau
Guide complet de protection réseau domestique, optimisation de latence et sécurisation routeur.
🔒 Cybersécurité et Vie Privée Numérique 2025 — Guide Complet
Guide complet sur la vie privée en ligne, le chiffrement, l'hygiène réseau et la souveraineté numérique.
🛡️ Actions Préventives 2025 : Sécurité Linux, Windows, macOS
Durcissement proactif multi-OS, contrôles réseau et meilleures pratiques défensives.
🐧 Panorama sécurité OS 2026 : Linux, Windows, macOS, BSD
Comparatif architectural approfondi des défenses noyau, piles réseau et modèles d'isolation.

À 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.

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

👥 Commentaires

Commenter cet article