Rendez-vous sur Arrakiss
Table des matières

    Zerohosts : filtrer les pubs sans addon

    Sur les ordinateurs, le fichier /etc/hosts peut contenir une liste pré-remplie par l’administrateur associant un nom de domaine à son adresse IP. Cela permet de ne pas avoir besoin d’un résolveur de nom de domaine qui indiquera à votre ordinateur d’aller à l’IP 91.198.174.92 lorsque vous entrez l’adresse de wikipedia dans votre navigateur. C’est souvent votre FAI qui se charge de ça. (Cela permet aussi de ne pas avoir à installer de résolveur de noms si on n’en n’a pas envie dans un réseau local.)

    Pourquoi voudrait-on résoudre le nom de domaine des publicités et autres nuisances alors qu’on ne veut même pas les afficher ?

    On va donc pré-remplir le fichier /etc/hosts avec des noms de domaines connus pour être nuisibles et les associer à une fausse adresse IP de laquelle on ne récupérera aucune donnée (0.0.0.0 pour l’IPv4 et :: pour l’IPv6).

    Cela comporte plusieurs avantages :

    J’ai rassemblé plusieurs listes de domaines malveillants pour plus d’efficacité. Le script zerohosts disponible en téléchargement ici permet de créer un fichier /etc/hosts à partir des listes suivantes :

    https://adaway.org/hosts.txt
    https://someonewhocares.org/hosts/zero/hosts
    https://hosts-file.net/ad_servers.txt
    https://www.malwaredomainlist.com/hostslist/hosts.txt
    http://winhelp2002.mvps.org/hosts.txt
    https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
    https://mirror.cedia.org.ec/malwaredomains/justdomains
    https://mirror.cedia.org.ec/malwaredomains/immortal_domains.txt
    https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt
    https://zeustracker.abuse.ch/blocklist.php?download=baddomains
    

    À l’heure où j’écris ces lignes, cela consiste en 259137 domaines malveillants.

    Ce script ne mettra à jour les listes seulement si elle est plus vieille que 7 jours par défaut. Si cela ne vous convient pas, modifiez la variable “DAYS” dans le script.

    Ajoutez vos propres règles ou résolutions de domaine si vous le souhaitez en passant en argument le chemin vers un fichier texte avec le contenu à intégrer dans votre fichier /etc/hosts. Exemple :

    zerohosts /var/myhosts.include
    

    Mise à jour automatique des listes

    Sous OpenBSD (ou debian), je me sers du fichier /etc/rc.local qui permet d’exécuter un script à chaque démarrage. Il suffit d’appeler le script zerohosts ainsi :

    $ cat /etc/rc.local 
    /usr/local/sbin/zerohosts &
    

    Le “&” final est important : il permet au script de ne pas bloquer le processus de démarrage.

    Autres ressources

    BUGS

    J’ai bien conscience que certains éléments du scripts peuvent être améliorés, notamment à cause de la diversité des listes d’IP récupérées. Si vous trouver des solutions plus efficaces, notamment au niveau du code, s’il vous plaît, faîtes m’en part via la page de contact ;).