22
0
Fork 0

Bloquer des domaines indésirables

This commit is contained in:
jdubois 2020-09-22 10:31:13 +02:00
parent ea9f29e201
commit fe92817d7d
1 changed files with 75 additions and 0 deletions

View File

@ -159,6 +159,81 @@ statistics-interval: 300
Voir [HowtoBind#dnstop]()
## Bloquer des domaines indésirables
Unbound peut être utilisé pour renvoyer une réponse `NXDOMAIN` pour des domaines spécifiques.
Le script [unbound-adblock](https://www.geoghegan.ca/unbound-adblock.html) est un script personnalisable, qui se lance périodiquement, et qui permet de bloquer les publicités et autres domaines indésirables à partir de sources URL de fichiers `hosts`, que le script parse et rend compatible au format d'unbound.
### Installation de unbound-adblock
Sous Debian ou OpenBSD :
* Avoir unbound configuré et fonctionnel en tant que serveur DNS récursif local
* Télécharger le script : `wget https://geoghegan.ca/pub/unbound-adblock/0.4/unbound-adblock.sh`
* Créer un utilisateur "_adblock" : `useradd -s /sbin/nologin _adblock`
* Installer le script avec les permissions appropriées : `install -m 755 -o root -g bin unbound-adblock.sh /usr/local/bin/unbound-adblock.sh`
* Créer le fichier "/etc/unbound/adblock.conf" :
* Sous Debian : `install -m 640 -o _adblock /dev/null /etc/unbound/adblock.conf`
* Sous OpenBSD : `install -m 640 -o _adblock -g wheel /dev/null /var/unbound/etc/adblock.conf`
* Donner les permissions nécessaires à l'utilisateur "_adblock" :
* Sous Debian avec `visudo` : `_adblock ALL=(root) NOPASSWD: /bin/systemctl restart unbound`
* Sous OpenBSD en éditant `/etc/doas.conf` : `permit nopass _adblock cmd rcctl args reload unbound`
* Ajouter l'inclusion de la configuration dans "unbound.conf" (**avant** la section de forward s'il en existe une) : `include: /etc/unbound/adblock.conf`
* Éditer la crontab de l'utilisateur "_adblock" pour lancer quotidiennement le script, avec `crontab -u _adblock -e` :
* Sous Debian : `@midnight /bin/sh /usr/local/bin/unbound-adblock.sh -linux`
* Sous OpenBSD : `@midnight /bin/sh /usr/local/bin/unbound-adblock.sh`
* Lancer une première fois le script manuellement :
* Sous Debian : `sudo -u _adblock sh /usr/local/bin/unbound-adblock.sh -linux`
* Sous OpenBSD : `doas -u _adblock sh /usr/local/bin/unbound-adblock.sh`
### Configuration supplémentaire optionnelle sous OpenBSD
Google impose l'utilisation de ses propres serveurs DNS dans de nombreuses applications et services. De nombreux appareils utilisent également des DNS Google codés en dur et qui ne peuvent pas être modifiés.
Il est possible de contourner ça avec [HowtoOpenBSD/PacketFilter]() en rajoutant la règle suivante dans `/etc/pf.conf` pour forcer l'utilisation de notre résolveur DNS :
~
# Remplacer $adblock_server par l'adresse IP de la machine qui heberge le service unbound
pass in quick to {8.8.8.8, 8.8.4.4} rdr-to $adblock_server
# Ou, de façon plus globale
pass in quick proto {tcp udp} to port 53 rdr-to $adblock_server
~
Puis recharger la configuration : `# pfctl -f /etc/pf.conf`.
### Liste de sources de fichiers hosts
Les listes doivent obligatoirement être dans un format de fichier `hosts` pour fonctionner.
Par défaut, l'URL <https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts> est fournie comme seule source.
Des versions plus complètes provenant du même projet peuvent être trouvées sur le README du github (bloquant par exemple tous les réseaux sociaux, les sites de fake news, …) : <https://github.com/StevenBlack/hosts>.
L'URL <https://raw.githubusercontent.com/jerryn70/GoodbyeAds/master/Hosts/GoodbyeAds.txt> peut être rajoutée comme seconde source, plus complète et plus agressive.
### Whitelister des domaines bloqués
Si un domaine présent dans une des listes a besoin d'être autorisé, il peut être whitelisté. Pour cela, il faut éditer le script, et ajouter dans la fonction whitelist(), à l'intérieur du grep, le domaine en question :
~
whitelist() {
grep -E -v 'example\.com|example\.org'
}
~
Attention : Il ne faut pas ajouter une commande grep mais bien ajouter le domaine à la liste actuelle. Une nouvelle commande grep ne sera pas prise en compte.
### Bloquer des domaines personnalisés
Il est tout à fait possible de bloquer n'importe quel domaine souhaité sans forcément utiliser le script ci-dessus, ou même en complément du script.
Pour cela, il suffit d'ajouter un autre fichier de configuration à inclure à `unbound.conf`, et d'y ajouter manuellement les entrées à bloquer souhaitées, en respectant ce format, avec un domaine par ligne :
~
local-zone: "example.com" always_nxdomain
~
## FAQ
### Vider le cache pour un domaine particulier