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 :
Dépôt git de la liste StevenBlack : https://github.com/StevenBlack/hosts
Sommaire
Télécharger le fichier hosts de stevenblack contenant 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
Créer à partir du fichier ci-dessus un fichier au format unbound de la forme :
$ 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
Placer le fichier obtenu à l'étape précédente dans le répertoire /etc/unbound/unbound.conf.d :
$ sudo mv /tmp/stevenblack.conf /etc/unbound/unbound.conf.d/
Vérifier sa conformité :
$ 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
Redémarrer unbound :
$ sudo systemctl restart unbound.service
L'URL adblock.fr est un site indésirable :
$ 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"
L'efficacité du blocage peut-être vérifié directement sur des sites réputés "pollués", par exemple
http://www.commentcamarche.net/
http://www.01net.com/
http://www.allocine.fr/
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.
L'exemple ci-après est réalisé à partir du site : www.allocine.fr Un bandeau publicitaire est toujours présent malgré le blocage de la liste de stevenblack :
Cliquer sur le bandeau que l'on souhaite faire disparaître et choisir l'option "Inspecter l'élément". Le code responsable de l'affichage du bandeau s'affiche en surbrillance dans le code de la page : rechercher le site responsable de l'ouverture de la fenêtre, ici http://goutee.top :
....
<div id="dds_clic" onclick="window.open('http://goutee.top/clickcmd/i87269/c0/p1236/po7/pl80497/r6651168??.....
......
Créer un fichier pour l'ajout des sites supplémentaires à bloquer et y placer goutee.top selon le format unbound :
# 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"
Vérifier le fichier de configuration et redémarrer unbound
# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf
# systemctl restart unbound
Vérifier la disparition de la publicité sur le site et la cohérence de l'affichage :