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