Supprimer les publicités avec pfBlockerNG

tbowan

8 Octobre 2018

Pour supprimer les publicité de manière globale, autant le faire à la source, via le pare-feu du réseau. Ça tombe bien, pfSense dispose d'un package qui le fait pour nous et on va vous montrer comment.

Chez les arsouyes, comme tout le monde, on n'apprécie pas les publicités. Elles gaspillent notre bande passante, polluent l'espace visuel voir auditif et nous interrompent carrément sans avertissement. Au moins, les crypto-mineurs ne font que grapiller silencieusement le processeur.

Et comme ces parasites sont partout, on a décidé de les filtrer à la source: via notre pare-feu. Comme ça, quel que soit l'équipement et quel que soit l'application, on pourra zoner tranquillement.

Contexte et Principe

Pour vous permettre de vous faire une idée de la configuration réseau, on va partir sur une configuration classique. En vrai, on utilise quelques VLANs, des connexions WIFI et autres joyeusetés possible avec des switchs manageables, mais comme ça ne change rien à la configuration qui suivra, autant rester simple.

Pour mettre en place le filtrage, il vous faut donc :

De base, on pourrait être tenté d'utiliser le proxy HTTP Squid en mode transparent. En interceptant le traffic à la volée, il pourrait alors filtrer le contenu autorisé ou non. Le problème c'est que ce n'est pas compatible avec les connexions TLS (à moins d'insérer notre propre PKI dans toutes les applications).

On a donc préféré descendre d'une couche et filtrer directement les requêtes DNS via pfBlockerNG. En résolvant les domaines des publicités vers une adresse IP inexistante, tout le traffic correspondant sera évité.

Configuration

Pour la configuration, on part du principe que votre pfSense est installé, configuré et que votre réseau fonctionne. Chaque fois que vous modifiez des paramètres, n'oubliez pas de cliquer sur save (ça paraît évident, mais s'est révélé utile).

Le DNS Resolver

Il faut ensuite activer le DNS Resolver. On le trouve dans le menu services / DNS Resolver. La plupart des champs sont laissés tels quels. Voici les valeurs qu'on a choisi chez nous:

Il faut aussi s'assurer que vos DHCP utilisent l'IP du pare-feu comme serveur DNS. Sur pfSense, rien de plus simple, il suffit de s'assurer que le champ DNS servers soit laissé vide.

Installation du package

Il faut d'abord lnstaller le package pfBlockerNG. Pour ça, c'est via le menu System / Package Manager. On clique sur Available Packages et on entre le nom du package dans la barre de recherche. Il suffit alors de cliquer sur le bouton +Install et d'attendre.

Avec notre version de pfSense, c'est la version 2.1.4_13 du package que nous avons installé. Suivant les versions, les menus sont parfois différents et nécessiteront quelques adaptations.

DNSBL

On peut maintenant configurer les listes DNS. Cette fois, c'est via le menu Firewall / pfBlockerNG / DNSBL.

Dans la configuration de base, seuls les trois champs suivants nécessite notre attention:

Sans oublier la section suivante sur les règles du pare-feu pour lui dire de bloquer ces domaines:

DNSBL Easy List

On passe ensuite à la récupération des listes de domaines à bloquer en commencant par celles pré-configurées.

On commence par le choix des listes:

Puis la configuration de leur contenu et leur mise à jour:

DNSBL Feeds

Si on veut, on peut toujours ajouter d'autres listes, pour être encore plus complet. Voici quelques liens que nous avons trouvés utiles.

http://someonewhocares.org/hosts/hosts
https://hosts-file.net/ad_servers.txt
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
https://adaway.org/hosts.txt
http://sysctl.org/cameleon/hosts

Garder le champ state à on et l'action à unbound pour pouvoir bloquer. Pour la fréquence de mise à jour, on a choisi toutes les deux heures.

Et tant que nous y étions, on a aussi rajouté quelques listes de domaines malicieux :

https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt
https://isc.sans.edu/feeds/suspiciousdomains_Low.txt
https://mirror1.malwaredomains.com/files/immortal_domains.txt

On se retrouve alors avec deux listes configurées :

Vérifier le tout

Plutôt qu'attendre la prochaine exécution automatique, on va s'assurer que la configuration est valide et bien en place. C'est via le menu Firewall / pfBlockerNG / Update. Pour l'option Force, on choisi Reload, et dans la nouvelle option de Reload, on choisi All. On clique sur le bouton Run.

Et pour vérifier côté client, rien de mieux que nslookup.

tbowan@io:~$ nslookup analytics.yahoo.com
Server:         192.168.1.1
Address:        192.168.1.1#53

Name:   analytics.yahoo.com
Address: 10.10.10.1

Et ensuite ?

Avec ce système, les zones de publicités sont maintenant vides et les applications qui contiennent des annonces sont enfin utilisables. On peut laisser un enfant avec une tablette sans s'inquiété des publicités qu'il rencontrera et sur lesquelles il pourrait cliquer.

Pour le web, et pour éviter que restent des zones vides disgracieuses dans les pages, on a rien trouvé mieux que uBlock Origin, une extension qui supprime les publicités pour Firefox, Chrome, Opera et Edge.

Pour les applications qui contournent ce système en faisant passer leurs publicités via leur propre connexions réseau (i.e. youtube), il ne reste qu'à trouver des versions épurées (i.e. youtube vanced et smart youtube TV).