Description
Cet article a pour but de montrer comment configurer le service unbound pour que celui fasse ses requêtes en tenant compte du protocole DNSSEC, protocol de chiffrement des données, et aussi pour qu’elles soient transmises en tenant compte du protocol de chiffrement TLS.
Configuration
Pour rappel :
- le fichier de configuration est normalement :
/var/unbound/etc/unbound.conf
- la commande pour tester la configuration est :
unbound-checkconf
Je ne rappellerai pas comment configurer pleinement Unbound, lisez cet article : OpenBSD : utiliser Unbound
DNSSEC
La gestion DNSSEC se fait par l’usage de l’outil unbound-anchor
qui crée
un fichier de clé nécessaire et l’ajout de la variable auto-trust-anchor-file
qui pointe vers ledit fichier de clés, dans votre fichier de configuration,
tel quel :
auto-trust-anchor-file: "/var/unbound/db/root.key"
Auquel, il faut ajouté le mode de validation DNSSEC :
module-config: "validator iterator"
Même si sous OpenBSD, ce fichier de clé est généré automatiquement dès le premier démarrage, pour générer le fichier de clé :
# unbound-anchor -u _unbound -a "/var/unbound/db/root.key"
L’option -u
utilise ici le nom utilisateur, par défaut lié au projet
unbound, sous OpenBSD, à savoir _unbound
.
De même, il faut ajouter les variables suivantes à votre propre fichier de configuration :
harden-below-nxdomain: yes
harden-dnssec-stripped: yes
harden-referral-path: yes
Explications
- L’option
harden-referral-path
’ renforce la validation DNSSEC - c’est une option expérimentale, sans norme RFC, et peut poser des problèmes de performances !
Depuis la version 1.7.0, unbound a une nouvelle option : aggressive-nsec
qui met en cache les enregistrements NSEC pour générer les réponses rapidement.
Depuis OpenBSD 6.4, unbound est fourni en version 1.8.1, donc profitez-en :
aggressive-nsec: yes
DNS over TLS
Oui, unbound est capable de communiquer aussi avec les serveurs DNS, en mode protocolaire DoT !
Il est nécessaire de bien comprendre l’impact de l’usage de ce mode de communication. Du fait d’utiliser TLS, la communication semble “ralentie”, donner la sensation de lenteur…
Cela est plus ou moins sensible selon la puissance de votre machine et des serveurs interrogés, de la qualité du réseau, etc.
Il faut configurer unbound ainsi, dans un premier temps :
do-tcp: yes
ssl-upstream: yes
Explications :
do-tcp
indique de communiquer sur le protocole TCPssl-upstream
outls-upstream
oblige à communiquer sur le protocole TLS.- Il est important que le(s) serveur(s) DNS interrogés sachent communiquer sur ce protocole, autrement les requêtes échoueront !
- Si les deux options
*-upstream
sont indiquées, seule la dernière sera prise en compte.
Forward
Ensuite, il est nécessaire de décommenter - si ce n’est pas déjà fait -
la partie forward-zone
, pour indiquer le(s) serveur(s) à interroger sur
le port adéquat - par défaut : 853 - tel(s) que :
forward-zone:
name: "." # use for ALL queries
forward-ssl-upstream: yes
# FDN DoT
## https://www.fdn.fr/ouverture-des-services-dot-doh/
forward-addr: 80.67.169.12@853
forward-addr: 80.67.169.40@853
forward-addr: 2001:910:800::12@853
forward-addr: 2001:910:800::40@853
# Others
forward-addr: 9.9.9.9@853 # Quad9
forward-addr: 1.1.1.1@853 # Cloudflare
forward-addr: 149.112.112.112@853 # Quad9 secondaire
forward-addr: 1.0.0.1@853 # Cloudflare secondaire
forward-addr: 2620:fe::fe@853 # Quad9 / IPv6
forward-addr: 2606:4700:4700::1111@853 # Cloudflare / IPv6
forward-addr: 2606:4700:4700::1001@853 # Cloudflare secondaire / IPv6
(…)
Explications :
forward-ssl-upstream
ou son pendantforward-tls-upstream
- (cette dernière semble n’être pas reconnue… sous OpenBSD) oblige toutes les requêtesname: "."
à communiquer en mode DoT - normalement la documentation unbound informe qu’il faut aussi configurer l’optionssl-cert-bundle
, ou son pendanttls-cert-bundle
, voire l’optiontls-win-cert
pour authentifier les connexions. Cela ne semble pas nécessaire sous OpenBSD. (<= à confirmer !)
Tests DNSSEC
Dig
Un premier test à faire est l’usage de la commande dig
, tel que :
$ dig com. SOA +dnssec
; <<>> DiG 9.10.3-P4-Debian <<>> com. SOA +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60764
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 14, ADDITIONAL: 1
(…)
Ce qu’il faut repérer dans la sortie complète de la commande dig
est
sur la ligne flags:
: il faut la présence du drapeau ad
-
si celui-ci figure bien, c’est bon signe ! :D
$ dig com. SOA +dnssec | grep ";; flags"
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
Unbound-host
L’autre commande à utiliser est la commande unbound-host
qui permet de
s’assurer du même résultat, tel que :
$ unbound-host -v -f /var/unbound/db/root.key com.
com. has no address (secure)
com. has no IPv6 address (secure)
com. has no mail handler record (secure)
$ unbound-host -v -f /var/unbound/db/root.key www.ripe.net
www.ripe.net has address 193.0.6.139 (secure)
www.ripe.net has IPv6 address 2001:67c:2e8:22::c100:68b (secure)
www.ripe.net has no mail handler record (secure)
$ unbound-host -v -f /var/unbound/db/root.key www.afnic.fr
www.afnic.fr is an alias for lb01-1.nic.fr. (secure)
lb01-1.nic.fr has address 192.134.5.24 (secure)
lb01-1.nic.fr has IPv6 address 2001:67c:2218:30::24 (secure)
lb01-1.nic.fr has no mail handler record (secure)
$ unbound-host -v -f /var/unbound/db/root.key dnssec.cz
dnssec.cz has address 217.31.205.51 (secure)
dnssec.cz has IPv6 address 2001:1488:0:3::5 (secure)
dnssec.cz mail is handled by 10 mail.nic.cz. (secure)
dnssec.cz mail is handled by 15 mx.nic.cz. (secure)
dnssec.cz mail is handled by 20 bh.nic.cz. (secure)
# unbound-host -v -C /var/unbound/etc/unbound.conf dnssec.cz
dnssec.cz has address 217.31.205.51 (secure)
dnssec.cz has IPv6 address 2001:1488:0:3::5 (secure)
dnssec.cz mail is handled by 10 mail.nic.cz. (secure)
dnssec.cz mail is handled by 15 mx.nic.cz. (secure)
dnssec.cz mail is handled by 20 bh.nic.cz. (secure)
Navigateur internet
Un moyen visuel est d’ouvrir votre navigateur internet favori, puis d’aller sur les sites suivants :
- http://www.dnssec.cz : si, sur la partie droite, vous voyez une clé verte, c’est tout autant bon signe !
- https://en.internet.nl : cliquez sur le lien titré “Test my internet connection”
Documentations
Pour savoir comment :