Unbound (Serveur DNS)
Environnement
- Conteneur LXC Proxmox
- Ubuntu 18.04
Installation
Installer Unbound
apt install -y unbound
Configuration
Récupérer la liste des serveurs racine :
wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /var/lib/unbound/root.hints
Récupérer la liste des domaines publicitaires/malveillants et la rendre compatible avec Unbound :
wget https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -O /tmp/hosts
cat /tmp/hosts | grep '^0\.0\.0\.0' | awk '{print "local-zone: \""$2"\" redirect\nlocal-data: \""$2" A 0.0.0.0\""}' > /etc/unbound/unbound.conf.d/ads-malware.conf
Éditer le fichier de configuration /etc/unbound/unbound.conf et ajouter la configuration suivante (/!\ à adapter à son besoin):
mv /etc/unbound/unbound.conf /etc/unbound/unbound.conf.bak
nano /etc/unbound/unbound.conf
# Unbound configuration file for Debian.
#
# See the unbound.conf(5) man page.
#
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
server:
# The following line will configure unbound to perform cryptographic
# DNSSEC validation using the root trust anchor.
auto-trust-anchor-file: "/var/lib/unbound/root.key"
server:
verbosity: 1
logfile: "/var/log/unbound.log"
log-replies: yes
log-time-ascii: yes
log-queries: yes
interface: 0.0.0.0
port: 53
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
do-daemonize: yes
access-control: 192.168.0.0/24 allow
use-syslog: yes
root-hints: "/var/lib/unbound/root.hints"
# Durcissement
hide-identity: yes
hide-version: yes
harden-glue: yes
harden-below-nxdomain: yes
harden-dnssec-stripped: yes
harden-referral-path: yes
use-caps-for-id: yes
cache-min-ttl: 3600
cache-max-ttl: 86400
prefetch: yes
num-threads: 2
msg-cache-slabs: 8
rrset-cache-slabs: 8
infra-cache-slabs: 8
key-cache-slabs: 8
key-cache-size: 16m
rrset-cache-size: 8m
msg-cache-size: 4m
outgoing-range: 206
qname-minimisation: yes
so-rcvbuf: 1m
so-sndbuf: 1m
so-reuseport: yes
# Adresses privées non concernées par Unbound
private-address: 192.168.0.0/24
#private-domain: "mon-nom-de-domaine.fr"
unwanted-reply-threshold: 10000
do-not-query-localhost: no
val-clean-additional: yes
# Listes de adresses publicitaires/malveillantes
include: /etc/unbound/unbound.conf.d/ads-malware.conf
# Redirections vers des serveurs DNS externes (ici FDN
forward-zone:
name: "."
forward-addr: 80.67.169.12 # FDN
forward-addr: 80.67.169.40 # FDN
forward-addr: 84.200.69.80 # DNS WATCH
Créer le script qui met à jour la liste des domaines publicitaires/malveillants :
nano /opt/unbound-update.sh
#!/bin/sh
# Télécharge la liste des domaines publicitaires/malveillants et la rend compatible avec Unbound
wget https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -O /tmp/hosts
cat /tmp/hosts | grep '^0\.0\.0\.0' | awk '{print "local-zone: \""$2"\" redirect\nlocal-data: \""$2" A 0.0.0.0\""}' > /etc/unbound/unbound.conf.d/ads-malware.conf
rm /tmp/hosts
Rendre le script exécutable :
chmod +x /opt/unbound-update.sh
Créer des tâches planifiées pour mettre à jour la liste des serveurs racine et des domaines publicitaires/malveillants :
crontab -e
# Télécharge tous les 1er de chaque mois à 22h00 la liste des serveurs racine
0 22 1 * * /usr/bin/wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /var/lib/unbound/root.hints
# Télécharge tous les jours à 22h30 la liste des domaines publicitaires/malveillants
30 22 * * * /bin/bash /opt/unbound-update.sh
Arrêter/désactiver le résolveur interne de Ubuntu 18.04 et démarrer/activer Unbound :
systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service
systemctl enable unbound.service
systemctl start unbound.service
Redémarrer le serveur
reboot
Quelques commandes utiles
Mettre à jour un enregistrement :
unbound-control flush nom-de-domaine
Tester la validité du fichier de configuration :
unbound-checkconf /etc/unbound/unbound.conf
Recharger la configuration de Unbound :
unbound-control -c /etc/unbound/unbound.conf reload
Sources
https://memo-linux.com/debian-installer-le-serveur-dns-unbound/
https://nlnetlabs.nl/documentation/unbound/
https://carmagnole.ovh/le-resolveur-dns-unbound.htm/
https://www.it-wars.com/posts/trucs-et-astuces/dns-back-to-the-roots/