Aller au contenu

[TUTO] Filtrage DNS


Fenrir

Messages recommandés

Préambule

L'objectif de ce mini tutoriel est de vous aider à mettre en place un système de filtrage de contenu très léger (ne consommant presque pas de ressources, en tout cas nettement moins qu'un proxy). Pour cela on va mettre en place un DNS menteur avec dnsmasq afin de bloquer une partie des contenus indésirables (malwares, spywares et autres joyeusetés comme les publicités agressives ou encore les sites adultes).

Dit autrement, ça fait à peu près la même chose qu'un bloqueur de publicité à quelques différences près :

  • vous n'avez rien à installer sur vos équipements
  • donc ça fonctionnera pour tous vos équipements (TV incluse)
  • mais ça ne fonctionnera pas aussi bien qu'un plugin dans le navigateur ou qu'un proxy (qui peuvent modifier le contenu des pages ou filtrer les URL, pas uniquement des domaines)
  • et ça ne vous laissera pas faire d'exception (autoriser temporairement un site par exemple ne sera pas possible, c'est tout ou rien)

Avant d'aller plus loin, merci de lire ces quelques points :

  • faire un filtrage DNS n'est pas une pratique louable : lorsqu’un état le fait les gens manifestent et ils ont raison
  • il s'agit même d'une pratique dangereuse dans certains cas : si vous ne faites pas attention aux listes de filtrage, un pirate pourra vous rediriger où il veut
  • ça peut également créer des problèmes pour vos équipements : si par exemple vous filtrez le domaine de mise à jour de votre ordinateur ou d'un logiciel (par exemple, votre antivirus ou encore votre navigateur), ce dernier ne pourra peut être pas se mettre à jour
  • beaucoup de sites vivent des revenus publicitaires : bloquer ces contenus peut être préjudiciable pour la survie de ces sites (certains abusent des publicités, mais ce n'est pas la majorité)

nb : c'est le principe de fonctionnement des serveurs d'OpenDNS, ils passent leur vie à vous mentir afin de filtrer une partie d'Internet (et de temps en temps ils vous affichent des pages qui ne sont pas celles que vous avez demandés ...)

Alors pourquoi est-ce tout de même un système à envisager ?

  • Si le filtrage se limite à votre domicile, dans un usage strictement privé et éclairé, c'est votre choix, vous le faites en connaissances de causes.

Je ne vais pas détailler les étapes, il y en a très peu, mais si vous avez des questions, les commentaires sont là pour ça.

Comme je souhaites éviter les dérives, je considère que vous avez l'autorité nécessaire pour mettre de type de filtrage en place. En conséquence, voici la méthode permettant de contourner ce filtrage si jamais vous en êtes la victime, elle est très simple :

  • configurez un autre serveurs DNS sur vos postes (par exemple ceux de FDN)

######################################################################################

Notes de lecture

  • /volume1/test/dnsmasq : le nom d'un partage/dossier à adapter en fonction de votre organisation
  • ad_list_url1 : pour l'exemple j'ai pris la première liste que j'ai trouvé sur le net, à vous d'adapter pour y mettre des listes pertinentes (vous pouvez prendre celles de squidguard par exemple)
  • ad_list_url2 : une autre liste d'exemple (celle de @PiwiLAbruti), par contre attention, sa taille peut fortement ralentir la résolution DNS et donc votre surf (au moins le temps que le cache se remplisse)

######################################################################################

Configuration

Commencez par créer un dossier quelque part sur votre NAS, dans un partage accessible à vous seul, par exemple : /test/dnsmasq

Créez ensuite le fichier suivant en UTF-8 avec sauts des lignes Unix : /test/dnsmasq/dnsmasq.update :

#!/bin/bash
#
dnsmasqconfdir='/volume1/test/dnsmasq'
server1='80.67.169.12'
server2='80.67.169.40'

pixelserv_ip='0.0.0.0'

ad_list_url1='http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsmasq&showintro=0&mimetype=plaintext'
ad_list_url2='http://winhelp2002.mvps.org/hosts.txt'
#ad_list_url3='http://une autre liste de domaines à filtrer'
#...
#ad_list_file1='/volume1/test/liste.txt'

dnsmasq_listen='127.0.0.53'
dnsmasq_port='53'
################################
ad_file="$dnsmasqconfdir/dnsmasq.d/dnsmasq.adlist.conf"
temp_ad_file="/tmp/dnsmasq.adlist.conf.tmp"

mkdir -p $dnsmasqconfdir/dnsmasq.d

cat <<EOT > $dnsmasqconfdir/dnsmasq.conf
#
cache-size=5000
server=$server1
server=$server2
neg-ttl=300
#dnssec
#check anchor on https://data.iana.org/root-anchors/root-anchors.xml
#trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
#dnssec-check-unsigned
no-resolv
EOT

/bin/curl -s $ad_list_url1 | sed "s/127\.0\.0\.1/$pixelserv_ip/" > $temp_ad_file
/bin/curl -s $ad_list_url2 | tr -d '\r' | grep -v '#' | awk '{print "address=/"$2"/127.0.0.1"}' | sed "s/127\.0\.0\.1/$pixelserv_ip/" >> $temp_ad_file
#/bin/curl -s $ad_list_url3 | sed "s/127\.0\.0\.1/$pixelserv_ip/" >> ad_list_file1
#...
#ad_list_file1 >> ad_list_file1
#...

if [ -f "$temp_ad_file" ]
then
        sort -uf $temp_ad_file > $ad_file
        #sed -i -e '/www\.favoritesite\.com/d' $ad_file
else
        echo "Error building the ad list, please try again."
        exit 1
fi

/bin/kill `/bin/pidof dnsmasq`
/bin/dnsmasq --listen-address=$dnsmasq_listen --port=$dnsmasq_port --bind-interfaces --conf-file=$dnsmasqconfdir/dnsmasq.conf --conf-dir=$dnsmasqconfdir/dnsmasq.d
exit 0

nb : vous devez adapter le script à votre configuration

Enfin, dans le planificateur de tâches de DSM, créez une nouvelle tâche de type script en root : sh /volume1/test/dnsmasq/dnsmasq.update

######################################################################################

Mise en place

La dernière étape consiste à configurez vos machines pour utiliser votre NAS comme serveur DNS.

Je vous passe le suspens, Synology ne vous permet pas de faire les choses normalement, tel que le serveur DNS et les normes le permettent !

Il faut donc changer 1 paramètre dans le script (en pratique c'est déjà fait) :

  • dnsmasq_listen=127.0.0.53

Puis modifier l'adresse du premier Redirecteur de cette capture :

01.png

Sauf qu'il faut aller le faire directement dans le fichier de configuration : /volume1/@appstore/DNSServer/etc/synodns.conf

forwarders=127.0.0.53;80.67.169.40

Enfin on relance le paquet DNSServer :

synoservice --restart pkgctl-DNSServer

40.png

nb : il ne faudra plus modifier cet écran avec l'interface graphique car votre NAS ne vous laissera pas enregistrer une telle configuration

Modifié par Fenrir
ajout dnssec en commentaire (non géré par la version de synology) et liste de piwi
Lien vers le commentaire
Partager sur d’autres sites

Rien que pour nuire volontairement aux revenus publicitaires de certains sociétés, ça vaut le coup. :mrgreen: Sinon j'utilise une autre source pour bloquer les publicités, je l'enrichis manuellement lorsque je trouve de la publicité sur un site.

Tout ça mériterait un .spk pour démocratiser la dépollution du contenu visuel sur la navigation web. Je vais voir s'il y a moyen d'agréger plusieurs listes dans une seule et de fournir une URL unique regroupant plusieurs sources. En tout cas le trio Serveur DNS (local) + dnsmasq (filtrage) + FDN (public) me paraît plutôt séduisant.

Juste une question concernant les adresses d'écoute : Est-ce que l'adresse d'écoute du Serveur DNS (que je suppose être 0.0.0.0:53) peut poser souci car elle recouvre celle de dnsmasq (127.0.0.53:53) ? C'est-à-dire qu'en interrogeant 127.0.0.53:53, le paquet Serveur DNS s'interrogerait lui-même récursivement (0.0.0.0:53) au lieu d'interroger 127.0.0.53:53 ?

Lien vers le commentaire
Partager sur d’autres sites

Pour l'aspect de la page, c'est très variable. Si c'est un script ou un truc du genre, on ne voit rien, si c'est une image direct (pas appelée par un script), parfois un a un cadre blanc à la place de l'image et pour les frames/iframes, on a la page d'erreur du navigateur (mais juste dans la frame) ou rien.

Mais perso je ne l'utilise pas pour les pubs (enfin pas principalement), c'est plus un filtrage pour les malware &co et les contenu indésirables (facebook, linkedin ...)

Pour la fusion de différentes sources, ce n'est pas un souci si elles sont correctement formatés, un petit coup de sed + concaténation + sort -u ça devrait le faire.

Modifié par Fenrir
Lien vers le commentaire
Partager sur d’autres sites

Tu peux combiner les deux sans souci, voir les 3 (avec un plugin navigateur).

Un des gros avantages du filtrage DNS (en plus de fonctionner pour tous les appareils), c'est la raison pour laquelle les contenus ne sont pas affichés : ils ne sont tout simplement même plus demandés => 0 octet de bande passante

Donc même ton proxy en profiterait.

De plus, comme c'est du DNS, c'est léger, ça fonctionne donc à distance sans avoir un gros Upload.

Sinon voici un exemple de rendu :

Perso je ne trouve pas ça gênant.

edit : pour les cadres blancs, c'est facile de les supprimer, il suffit d'avoir un serveur zeropixel (un serveur web qui renvoi toujours une image de zero pixel, quelque soit la requête).

Modifié par Fenrir
Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...

Bonjour Fenrir,

 

Merci pour ton petit tuto. Je vais essayer de le mettre en place en lieu et place de Pi-Hole qui lui est sur mon NAS afin de tout rassembler sur mon routeur.

1. Cependant, je ne vois pas comment je dois créer ce fichier en UTF-8 avec sauts des lignes Unix. Quand je cherche sur internet, ça me renvoi vers des utilisateurs Linux mais je n'ai pas de pc sous Linux ou alors pour des développeurs en PHP.

2. Si je créer un dossier à partir de WinSCP ça fonctionnerait aussi ? Je demande ça car je ne veux pas (sauf si j'ai pas le choix) installer File Station sur mon routeur.

 

Merci par avance pour ton aide.

Modifié par InfoYANN
Lien vers le commentaire
Partager sur d’autres sites

  1. notepad++
  2. oui mais attention aux droits, tu peux aussi créer le dossier via les partages réseau

nb : pi-hole va plus loin, ce tuto utilise la même technique, c'est une "base de travail" que vous pouvez étoffer

Modifié par Fenrir
Lien vers le commentaire
Partager sur d’autres sites

J'ai bien Notepad ++ mais à part la conversion vers UTF-8, je n'ai pas d'option pour vérifier les sauts de ligne Unix.

Pour le partage réseau, là je suis euhhh perdu.

Petite rectification par contre. Il n'y a pas de File Station à proprement parler sur le routeur. Mais il y a de base la possibilité d'y mettre un dossier partagé si comme moi, il y a un élément de stockage de branché. Ce qui est mon cas pour les journaux qui se stockent sur une clé USB. Je vais donc passé par ce moyen. Il faut juste que je me connecte à WinSCP car je ne pense pas que ce soit Volume1 dans l'arborescence.

 

Tu parles aussi de "192.168.0.2 : à remplacer par l'adresse IP privée de votre nas" Cependant, nulle part dans la suite de ton tuto on ne voit cette adresse locale. C'est en faite l'adresse 127.0.0.53 qu'il faut modifier stp ?

Lien vers le commentaire
Partager sur d’autres sites

à l’instant, InfoYANN a dit :

je n'ai pas d'option pour vérifier les sauts de ligne Unix.

Tu as mal cherché : Edition->Convertir les sauts de ligne

il y a 1 minute, InfoYANN a dit :

sur le routeur

attention, je n'ai testé que sur des NAS, il y a surement des différences sur le RT

il y a 3 minutes, InfoYANN a dit :

Tu parles aussi de "192.168.0.2 : à remplacer par l'adresse IP privée de votre nas"

Cette remarque n'a pas d'importance, ignore la (et non, aucun rapport avec 127.0.0.53) => je supprime la remarque

Lien vers le commentaire
Partager sur d’autres sites

Ok merci pour ces précisions.

Effectivement, je n'avais pas vu cette option. C'est maintenant converti mais ça n'a rien changé. Comme quoi, ton texte de base devait être déjà en forme ;)

Pour le dossier, pas possible de faire comme je le souhaitais... En faite, je me suis rendu dans WinSCP en root et le dossier partagé se trouve dans ce style d'arborescence :

/volumeUSB1/usbshare1-1/@sharebin/dnsmasq

Je vais donc essayer en créant moi même le dossier via WinSCP :

/volumeUSB1/usbshare1-1/dnsmasq

 

J'ai bien un volume1 mais je ne pense pas que ça puisse passer car la mémoire doit être faible puisque c'est la mémoire intégrée du routeur par Synology.

Lien vers le commentaire
Partager sur d’autres sites

Bon et bien gros retour en arrière, je me vois obligé de désinstaller mon Serveur DNS du routeur et l'installer sur le NAS car Synology n'a pas fini le software du routeur. On a pas la possibilité de créer des tâches, pas de Proxy serveur etc...

Il y a certaines choses que je trouve vraiment pas mal dans leur RSM pour routeur mais d'autres qui sont moyennes voir manquantes. Nouvelle suggestion à faire à Synology.

Lien vers le commentaire
Partager sur d’autres sites

Bah en gros, voilà ce que je pensais faire :

NAS :

- Installer DNS Serveur et reprendre la configuration de mon routeur.

- Installer VPN Serveur comme ton tuto

- Supprimer Pi-hole

- Installer dnsmasq qui n'a pas besoin de docker pour fonctionner...

- Voir installer un Proxy Serveur

Routeur :

- désinstaller Serveur DNS

- Dans les options du routeur, mettre comme DNS mon serveur DNS avec l'adresse locale du NAS.

 

Tu penses que c'est bon ça comme orientation Fenrir stp ?

Lien vers le commentaire
Partager sur d’autres sites

Tu te souviens m'avoir expliqué qu'il fallait que je laisse mon routeur gérer les ip fixes de mes appareils en les attribuant directement dans ce dernier ?

Dans ce cas, je procède comment puisqu'il faut que j'indique le serveur DNS à tous mes appareils ? Forcément, je dois aussi attribuer une ip fixe.

Je sais que sous Windows par exemple, on ne peut que régler le DNS. Mais sur une Box Android TV part exemple, je n'ai pas ce choix et je dois tout modifier (ip fixe, dns, gateway etc...)

Lien vers le commentaire
Partager sur d’autres sites

Il n'y a pas de lien entre le fait d'utiliser des ip fixées par le dhcp ou les options dns envoyées aux clients. Il ne faut pas, ou le moins possible, fixer manuellement une adresse IP sur un périphérique, il est presque toujours préférable de laisser le client en DHCP. Si tu souhaites que tes clients aient toujours la même adresse, réserve leur une adresse dans la configuration du serveur DHCP.

=>rien à configurer sur les clients

=>il faut bien régler le serveur DHCP pour qu'il donne les bonnes adresses DNS aux clients (peu importe que ces clients aient une adresse réservée ou non)

=>si demain tu décides de changer de serveur DNS, tu n'auras qu'à modifier la conf du DHCP, sans devoir repasser à la main sur chacun des clients (au pire il faudra les rebooter pour qu'ils refassent un demande au DHCP, mais généralement il suffira d'attendre l'expiration des baux).

Lien vers le commentaire
Partager sur d’autres sites

Donc en gros, une fois que j'aurai mit ça en place (ce que j'ai écrit plus haut), j'indique au routeur le serveur DNS de mon NAS avec l'IP locale et lui se chargera de dire à mes appareils connectés de passer par ce serveur DNS et pas celui de Free (mon FAI) par exemple. C'est bien ça ?

Lien vers le commentaire
Partager sur d’autres sites

La formulation est maladroite, du coup je ne sais pas si tu as bien compris ou non.

Il faut indiquer au "logiciel qui fait serveur DHCP" de donner configurer les bons DNS sur les clients. Généralement le serveur DHCP est installé sur le routeur (c'est ton cas) mais il pourrait tout aussi bien être sur une autre machine (ton nas par exemple). Le routeur lui même peut utiliser les mêmes serveurs DNS ou non, ça ne devrait pas avoir d'impact pour les clients.

Citation

Configurer des services DHCP
En tant que serveur DHCP (Dynamic Host Configuration Protocol), le Synology Router peut attribuer des
adresses IP dynamiques à des clients DHCP (par ex., des périphériques réseau) sur votre réseau local.

Pour rechercher une liste de clients DHCP et leur configuration réseau (par ex., des adresses MAC et IP),
accédez à Centre réseau > Réseau local > Clients DHCP.

Pour réserver des adresses IP attribuées à des clients, accédez à Centre réseau > Réseau local > Réservation
DHCP
.

(page 21 de la doc)

Lien vers le commentaire
Partager sur d’autres sites

Oui oui, on s'était bien compris donc. Je dois indiquer à mon routeur les serveurs DNS par défaut et ce dernier ensuite se chargera de propager l'information via DHCP  aux appareils sur le réseau pour qu'il sache vers quel serveur DNS se tourner.

 

Ex:

Serveur DNS préféré: 192.168.1.70 (NAS ou se trouve DNS Serveur)

Serveur DNS de remplacement : 80.67.169.12 (FDN)

 

Et si je comprend bien. Si un jour, il y a un soucis avec le DNS 1 (NAS éteint par exemple), alors le DNS 2 dit "de remplacement" prendra le relais le temps de retrouver le serveur DNS 1.

Lien vers le commentaire
Partager sur d’autres sites

il y a 3 minutes, InfoYANN a dit :

Oui oui, on s'était bien compris donc.

ou pas (ta formulation est encore ambiguë)

il y a 3 minutes, InfoYANN a dit :

Je dois indiquer à dans la partie serveur DHCP de mon routeur les serveurs DNS par défaut à donner aux clients et ce dernier ensuite ...

Dans Centre réseau > Réseau local

Pas dans Centre réseau > Internet

Lien vers le commentaire
Partager sur d’autres sites

il y a 18 minutes, InfoYANN a dit :

Mais dans ce cas, à quoi sert l'option dans Internet si on ne les rentre pas ici ?

Elle sert au routeur lui même (pour trouver l'adresse des serveurs de mise à jour par exemple).

il y a 18 minutes, InfoYANN a dit :

Donc voilà comment j'ai réglé. On est d'accord cette fois ?

Trop long à expliquer, donc fais moi confiance :

Première capture :

  • Serveur DNS préféré : un de ceux de FDN
  • Serveur DNS de remplacement : un de ceux de FREE

Seconde capture :

  • DNS principal : l'ip du nas
  • DNS secondaire : l'ip du routeur (même si tu n'installes pas le rôle serveur DNS sur le routeur)
  • désactive l'upnp
  • dans l'onglet Réservation DHCP, réserve l'ip du nas (même s'il est en ip fixe)
Modifié par Fenrir
Lien vers le commentaire
Partager sur d’autres sites

Ok pour te faire confiance. Et je comprend ce que tu me fais faire.

Sur la première capture, il n'y a rien à part en automatique le DNS de Free. Normal...

Je vais donc remedier à cela comme tu le dis ci-dessus.

Sur la capture secondaire : pareil. Pour l'ip sur NAS, c'était déjà fait quand tu étais avec moi via TeamViewer ;)

 

C'est justement là que tu m'avais expliquer qu'il fallait que je laisse tout en auto sur mes appareils et que je laisse le routeur gérer tous ces appareils en leur attribuant une ip fixe ce que j'ai fait pour certains appareils.

Les autres comme les smartphones peuvent rester en automatique et changer d'ip, c'est pas grave.

 

Merci beaucoup pour ton aide. Je tente tout ça tout à l'heure.

Modifié par InfoYANN
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.