====== Utiliser unbound pour cacher et bloquer des requêtes DNS ======
J'ai cet objectif mais à cause d'un arret du programm unbound-checkconf à cause du manque de mémoire sur la machine (il met en mémoire toutes les adrresses et vérifie qu'il n'y a pas de ligne en double...), cet outil ne m'a donc pas convenu. Je suis du coup passé avec [[wiki:install-dnsmasq-cache-block|dnsmasq]].
===== Installation =====
Nous aurons donc besoin du paquet correspondant :
apt install unbound
===== Caching =====
===== Sécurité =====
include: "/etc/unbound/unbound.conf.d/*.conf"
use-syslog: yes
logfile: /var/log/unbound.log
cache-min-ttl: 3600
cache-max-ttl: 86400
hide-identity: yes
hide-version: yes
000tristanprod.free.fr
===== Blocking ====
Cette partie concerne le paquet Debian dont la version d'Unbound est supérieure à 1.6.0.
Voici le script qui va permettre de récupérer les domaines que l'on ne souhaite pas résoudre :
nano /etc/unbound/get_dns_blacklists.sh
#!/bin/sh
TMPFILE=$( mktemp get_dns_blacklists-XXXXXXXXX )
trap 'rm -f $TMPFILE; exit 1' EXIT KILL INT QUIT TERM
(
curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | grep ^0.0.0.0 | awk '{ print $2 }'
curl -s http://mirror1.malwaredomains.com/files/justdomains
curl -s http://sysctl.org/cameleon/hosts | grep ^127.0.0.1 | awk '{ print $2 }'
curl -s https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
curl -s https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
curl -s https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
curl -s https://hosts-file.net/ad_servers.txt | grep ^127.0.0.1 | awk '{ print $2 }'
curl -s https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt | awk '{ print $1 }'
) | tr -d "\r" | tr 'A-Z' 'a-z' | sed -e 's/\.$//' |
grep -v -e '^#' | grep '\.' | sort -u |
while read domain; do
echo local-zone: \"$domain\" redirect
echo local-data: \"$domain. A 0.0.0.0\"
done > $TMPFILE
mv $TMPFILE /etc/unbound/unbound.conf.d/ad-blacklist.conf
/etc/init.d/unbound restart
chmod u+x /etc/unbound/get_dns_blacklists.sh
Ainsi lorsqu'une requête sera adressé au serveur, celui-ci répondra par l'IP 0.0.0.0 soit une absence de résolution.
Automatisons la regénération du fichier de blockage dans une table cron :
crontab -e
* * */7 * * /bin/bash /etc/unbound/get_dns_blacklists.sh
Ainsi le serveur écoute sur le port 53 et prêt à répondre au client.