Blocage de sites indésirables avec Unbound

Mise à jour : Debian Buster/sid

Le principe est d'utiliser la résolution d'adresses par unbound pour asssocier à l'URL de sites indésirables une adresse IP arbitraire (généralement 0.0.0.0). La liste des URLs des sites indésirables est téléchargée depuis le site de StevenBlack. L'installation du serveur unbound est décrite par ailleurs.

Références :

Sommaire

1 - Installation

1.1 - Préparation de la liste des sites indésirables

$ wget https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -O /tmp/hosts
$ head /tmp/hosts
# This hosts file is a merged collection of hosts from reputable sources,
# with a dash of crowd sourcing via Github
#
# Date: 25 April 2019 20:45:43 (UTC)
# Number of unique domains: 37,674
#
# Fetch the latest version of this file: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
# Project home page: https://github.com/StevenBlack/hosts
# Project releases: https://github.com/StevenBlack/hosts/releases
#
$ grep /tmp/adblock hosts
0.0.0.0 adblock.fr
0.0.0.0 adblockanalytics.com
0.0.0.0 adblockdetect.xyz
0.0.0.0 adblockerkillswebsites.pw
0.0.0.0 the-adblocker.website
0.0.0.0 www.adblockanalytics.com
0.0.0.0 yt-adblocker.com
0.0.0.0 blockadblock.com
0.0.0.0 adblock-listefr.com
# http://adblock.gjtech.net/?format=hostfile

Le fichier comprend environ 35000 noms de domaine de ce type :

$ grep "^0.0.0.0" /tmp/hosts |wc -l
37675
$ cat /etc/unbound/unbound.d/stevenblack.conf
server:
local-zone: "<domain>" redirect
local-data: "<domain> A 0.0.0.0"
etc....

avec

$ echo "server:" > /tmp/stevenblack.conf
$ cat /tmp/hosts | grep '^0\.0\.0\.0' | awk '{print "local-zone: \""$2"\" redirect\nlocal-data: \""$2" A 0.0.0.0\""}' >> /tmp/stevenblack.conf

Vérification :

$ head /tmp/stevenblack.conf 
server:
local-zone: "0.0.0.0" redirect
local-data: "0.0.0.0 A 0.0.0.0"
local-zone: "1493361689.rsc.cdn77.org" redirect
local-data: "1493361689.rsc.cdn77.org A 0.0.0.0"
local-zone: "30-day-change.com" redirect
local-data: "30-day-change.com A 0.0.0.0"
local-zone: "2468.go2cloud.org" redirect
local-data: "2468.go2cloud.org A 0.0.0.0"
local-zone: "adservice.google.nl" redirect

1.2 - Configuration de unbound

$ sudo mv /tmp/stevenblack.conf /etc/unbound/unbound.conf.d/
$ sudo unbound-checkconf
[1556373246] unbound-checkconf[28156:0] warning: duplicate local-zone 0.0.0.0.
unbound-checkconf: no errors in /etc/unbound/unbound.conf
$ sudo systemctl restart unbound.service

2 - Tests

$ grep googleads.g.doubleclick.net /etc/unbound/unbound.conf.d/stevenblack.conf
local-zone: "googleads.g.doubleclick.net" redirect
local-data: "googleads.g.doubleclick.net A 0.0.0.0"

On peut vérifier que l'accès au site est désormais redirigé vers l'adresse 0.0.0.0

$ grep adblock.fr /etc/unbound/unbound.conf.d/stevenblack.conf 
local-zone: "adblock.fr" redirect
local-data: "adblock.fr A 0.0.0.0"
http://www.commentcamarche.net/
http://www.01net.com/
http://www.allocine.fr/

3 - Ajout de sites indésirables

Si un bandeau publicitaire est toujours présent et que l'on parvienne à identifier le site responsable, il est possible de l'ajouter à la liste des sites à bloquer.

Sans filtrage


....
<div id="dds_clic" onclick="window.open('http://goutee.top/clickcmd/i87269/c0/p1236/po7/pl80497/r6651168??.....
......
# nano /etc/unbound/unbound.conf.d/autres_pubs.conf
# Origine allocine.fr
local-zone: "goutee.top" redirect
local-data: "goutee.top A 0.0.0.0"
# unbound-checkconf 
unbound-checkconf: no errors in /etc/unbound/unbound.conf
# systemctl restart unbound

Avec filtrage des publicités