Dans ce billet, nous allons configurer un serveur DNS sous linux
J’utiliserais Debian 8 mais cela fonctionne également sur une version supérieur/inférieur ou une autre distribution
La configuration sera à adapter selon votre réseau/nom
GoodLuck !
Installer le paquet Unbound
apt-get update && apt-get install unbound
Téléchargez le fichiers des DNS Root puis attribuez lui les droit pour unbound
wget https://www.internic.net/domain/named.cache -O /var/lib/unbound/root.hints
chown root:unbound /var/lib/unbound/root.hints
chmod 750 /var/lib/unbound/root.hints
Éditez /etc/unbound/unbound.conf
vi /etc/unbound/unbound.conf
server: port: 53 #Port du service
interface: 0.0.0.0 #Interface d'écoute
root-hints: "/var/lib/unbound/root.hints" #DNS Racines
access-control: 172.20.1.0/24 allow #Autoriser Reseau Local
access-control: 127.0.0.1/8 allow #Autoriser Boucle local
private-address: 172.20.1.0/24 #Cache le segment LAN
private-address: 127.0.0.1/8
harden-glue: yes #Limiter le spoof DNS
hide-identity: yes #Cacher l'identitée
hide-version: yes #Cacher la version
harden-dnssec-stripped: yes #Requérir les infos DNSSEC pour les zones de confiance
prefetch: yes #Garde en cache les bon résultat
cache-min-ttl: 3600 #TTL min du cache
cache-max-ttl: 36000 #TTL max du cache
use-caps-for-id: yes #Resoud GOOGLE.FR et Google.fr pareil
unwanted-reply-threshold: 100000 #Evite l'empoisonnement DNS (si 100000 requetes le cache est vidé)
logfile: /var/log/unbound.log #Fichier de log
verbosity: 2 #Verbosité du log
include: "/etc/unbound/unbound.conf.d/*" #Inclure la conf blacklist, zonelocal et les clef DNSSEC
Créez un fichier contenant les domaines à bloquer (Ils seront redirigés sur la boucle local)
Vous pouvez aussi download une blacklist complète -> /content/images/blacklist.conf
$vi /etc/unbound/unbound.conf.d/blacklist.conf
local-zone: "doubleclick.net"
redirect local-data: "doubleclick.net A 127.0.0.1"
local-zone: "googlesyndication.com"
redirect local-data: "googlesyndication.com A 127.0.0.1"
local-zone: "googleadservices.com"
redirect local-data: "googleadservices.com A 127.0.0.1"
local-zone: "google-analytics.com"
redirect local-data: "google-analytics.com A 127.0.0.1"
local-zone: "ads.youtube.com"
redirect local-data: "ads.youtube.com A 127.0.0.1"
local-zone: "adserver.yahoo.com"
redirect local-data: "adserver.yahoo.com A 127.0.0.1"
local-zone: "ask.com" redirect local-data: "ask.com A 127.0.0.1"
Créez un fichier de votre zone local
$nano /etc/unbound/unbound.conf.d/zonelocal.conf
private-domain: "my.domain" local-zone: "my.domain." static
local-data: "Server1.my.domain. IN A 172.20.1.100"
local-data-ptr: "172.20.1.100 Server1.my.domain"
local-data: "Server2.my.domain. IN A 172.20.1.110"
local-data-ptr: "172.20.1.110 Server2.my.domain"
local-data: "Server3.my.domain. IN A 172.20.1.5"
local-data-ptr: "172.20.1.5 Server3.my.domain"
....
Créez le fichier de log du service DNS
touch /var/log/unbound.log
chown unbound:unbound /var/log/unbound.log
chmod 740 /var/log/unbound.log
Donnez les droits à unbound de lire les fichiers de configuration supplémentaires
chown unbound:unbound /etc/unbound/unbound.conf.d/*
Redémarrez le service
systemctl restart unbound
J'ai fais un script pour déployer un service DNS Bind rapidos (pour les réseaux en 255.255.255.0)