Table de Matieres
I. Présentation
Dans ce tutoriel, nous allons voir comment utiliser Cloudflare DNS afin de limiter l’accès aux contenus adultes sur le web, sur un poste de travail sous Windows.
Il faut d’abord préciser qu’un précédent article sur la question a été rédigé par Florian Burnel, il y a quelques années. Vous pouvez le relire ici : 1-1-1-1-le-dns-plus-rapide-et-plus-securisé. Nous irons plus en profondeur dans ce nouveau tutoriel. La méthode évoquée dans ce tutoriel fonctionne sur les différentes versions de Windows, y compris Windows 10 et Windows 11.
Après quelques rappels théoriques, nous aborderons plusieurs méthodes à appliquer en fonction de vos besoins, mais aussi de vos compétences. Ces méthodes sont avant tout utiles sur les environnements personnels ou constitués de peu d’ordinateurs.
II. Rappel sur le blocage de sites web
Il existe plusieurs façons de bloquer l’accès en ligne à des contenus jugés indésirables pour une raison ou pour une autre (protection des mineurs, besoin de concentration au travail, protection contre les malwares, etc.).
En fonction de l’étendue et (ou) de l’objectif visé(es), on peut le faire en Network-based, c’est-à-dire depuis un périphérique d’interconnexion réseau central (routeur, box, firewall, etc.) ou en Host-Based, c’est-à-dire directement sur un terminal précis (PC, tablette, smartphone, etc.). Pour la première catégorie, nous pouvons citer, par exemple, les solutions AdGuard Home et PiHole, ainsi que des proxys.
L’une des techniques utilisées à cet effet est la redirection DNS. Habituellement, lorsqu’un lorsqu’une entité (client ou serveur) tente de joindre un site web via un nom de domaine (www.it-connect.fr, par exemple), elle essaye d’abord de le résoudre en adresse IP via le service DNS (les ordinateurs ne fonctionnant qu’avec des nombres) comme sur l’image ci-dessous.
Cette redirection consiste simplement à indiquer explicitement au client vers qui se tourner afin de résoudre un nom de domaine en adresse IP. Ceci est vrai que ce destinataire soit physique, virtuel, réel ou même fictif, dans le cas où il ne la connait pas, ignorant au passage le schéma habituel (cache DNS – Serveur Racine – TLD – Serveur faisant autorité – Résolveur récursif).
Il y a une méthode classique pour cela, mais qui est contraignante. Nous pouvons éditer le fichier « hosts » sous Windows, accessible par le chemin d’accès « C:\Windows\System32\drivers\etc ». L’idée étant d’ajouter une ou plusieurs lignes faisant le lien entre une adresse IPv4 (ou IPv6) et le nom domaine qu’on veut bloquer (par exemple, rediriger « www.it-connect.fr » vers l’adresse de loopback 127.0.0.1).
Cette méthode marche effectivement et renverra les requêtes vers www.it-connect.fr à l’adresse 127.0.0.1, ainsi le PC va « croire » que l’hôte correspondant à ce domaine est celui spécifié dans le fichier hosts. Ce n’est pas le cas, donc le paquet se détruira au bout d’une certaine période et renverra un message de type « NS_ERROR_CONNECTION_REFUSED » (NS pour Name Server ou Serveur de Nom).
Mais, si on utilise un alias à www.it-connect.fr (au cas où ça existe), cela risque d’aboutir à un résultat positif, car ce dernier n’a pas été déclaré dans le fichier hosts. Ce qui devient encore plus fastidieux pour un particulier si le site web à bloquer possède plusieurs alias (m.youtube.com et es.youtube.com pour www.youtube.com). La tâche se complexifie davantage si l’on veut bloquer plusieurs sites web à la fois. Vous voyez bien la limite de la méthode.
De grands fournisseurs de services DNS comme Cloudflare peuvent justement faciliter cette tâche, et c’est à la portée de tous. Pour cela, ils proposent des serveurs DNS permettant de restreindre l’accès en nombre important à certaines catégories de sites web, notamment ceux fournissant des contenus pour adultes (pornographie).
On verra justement ici comment se servir de ces services dans ce sens-là, surtout si les autorités de votre zone géographique ne l’ont pas encore fait en amont, comme c’est le cas des pays comme l’Indonésie, l’Iran, etc.
Les tests seront réalisés avec l’adresse d’un des sites pour adultes les plus visités au monde selon Wikipédia : www(.)xvideos(.)com.
III. Le filtrage des sites par DNS
A. Cloudflare DNS : qu’est-ce que c’est ?
Cloudflare est une société américaine fournissant plusieurs services informatiques tels que la protection DDoS (contre les attaques par déni de service distribué), des pare-feux pour la protection des applications sur le web, des services DNS, etc. Cloudflare est aussi ce que l’on appelle un CDN.
Celui faisant l’objet de ce tutoriel est justement le service « Cloudflare DNS for families« . Ce service, disponible depuis quelques années déjà, permet de bloquer l’accès à des contenus pour adultes ainsi qu’à des malwares depuis le net. Tout en protégeant également la vie privée des utilisateurs et en accélérant les requêtes web à l’aide d’un proxy (mandataire).
Lorsqu’on fait une requête vers un site quelconque, et que cela passe par un des serveurs DNS de Clouflare, voici ce qui se passe :
- Si la requête est directement effectuée en rentrant un nom de domaine dans la barre d’adresse d’un navigateur et que ce nom de domaine pointe vers une adresse IP relative à un site web fournissant du contenu classé « inapproprié », cette adresse IP n’est tout simplement pas renvoyée au client et la requête n’aboutira pas. Le navigateur renverra alors une erreur ou il nous demandera de contacter notre administrateur ou toute autre chose différente du résultat escompté.
- Si on fait de la recherche depuis un des moteurs de recherches les plus connus et moins « austère » comme celui de Google, par exemple, la fonctionnalité « Safe Search » consistant à filtrer du contenu afin d’y appliquer des restrictions au niveau de la pertinence des résultats (floutage des médias à caractères sexuels ou blocage pur et simple) est automatiquement activée. La levée de ce filtre ne pouvant être faite par personne d’autre en dehors de l’administrateur du poste de travail.
Sans plus tarder, on se lance dans la configuration du blocage des contenus pour adultes depuis le web avec Cloudflare DNS for families. On le fera de deux manières :
- Manuellement en configurant, nous-mêmes, les différentes cartes réseaux à partir desquelles on a accès à internet.
- Automatiquement à l’aide d’un script PowerShell qu’on placera dans le Planificateur de tâches de Windows et qui devra lancer la configuration automatique des cartes réseau du système à l’ouverture de session pour tous les utilisateurs.
Il ne sera pas exhaustif de rappeler ici qu’on aura besoin d’un compte administrateur protégé par mot de passe pour le faire et de le séparer des comptes utilisateurs standard afin qu’ils ne puissent pas lever les différentes restrictions mises en place par ce dernier.
B. Le service européen DNS0
Le service européen DNS0, associé au site « dns0.eu », est une association française à but non lucratif fondée en 2022 par Romain Cointepas et Olivier Poitrey, co-fondateurs de NextDNS. Ce service représente une alternative à la solution américaine Cloudflare pour le filtrage du contenu à l’aide du DNS.
Si vous préférez utiliser ce service plutôt que celui de Cloudflare, utilisez les deux adresses IP suivantes dans la suite du tutoriel :
Concernant la dernière partie et la configuration d’un DNS sécurité (via le principe du DNS-over-HTTPS), utilisez cette adresse :
IV. Configuration manuelle Cloudflare DNS for families.
Cette méthode consiste simplement à configurer la ou les carte(s) réseaux à partir desquelles on souhaite avoir accès en indiquant les serveurs DNS de Cloudflare comme DNS primaire et secondaire en IPv4 et IPv6.
Mais, avant d’engager la configuration, on se rassure d’abord qu’on a effectivement accès au site www(.)xvideos(.)com depuis un navigateur. C’est bien sûr une étape facultative.
On peut ensuite se rendre dans le panneau de configuration de Windows, puis sur « Réseau et internet », ensuite sur « Centre de réseau et de partage ». De là on sélectionne directement la ou les cartes concernée(s), ici « Ethernet ».
On introduit enfin les différentes adresses des serveurs « Cloudflare DNS for families » en IPv4 et en IPv6 comme sur les captures d’écran ci-dessous. Il s’agit des adresses officielles présentes dans la documentation de Cloudflare.
Pour les plus aguerris, sachez que les commandes PowerShell suivantes auraient permis de réaliser la même tâche sur l’ensemble des cartes réseaux (physiques ou virtuelles) du poste, à la fois en IPv4 et en IPv6 :
# DNS IPv4
Set-DnsClientServerAddress -InterfaceAlias * -ServerAddresses 1.1.1.3,1.0.0.3
# DNS IPv6
Set-DnsClientServerAddress -InterfaceAlias * -ServerAddresses 2606:4700:4700::1111,2606:4700:4700::1001
Cette méthode fonctionnera en principe. Elle bloquera l’accès aux sites pour adultes pour tous les utilisateurs du poste. Cependant, la configuration DNS resterait en place pour l’ensemble des cartes réseaux du poste. Ceci est vrai pour les cartes réseaux filaires et sans-fil.
V. Configuration automatique Cloudflare DNS for families
Dans certains cas, et bien que cela ne semble pas être un comportement normal, si un ordinateur Windows se connecte sur un nouveau réseau Wi-Fi, les DNS statiques configurés sur la carte réseau Wi-Fi seront effacés. Cela signifie que la restriction DNS basée sur le service Cloudflare sera automatiquement levée.
Ce défaut peut être corrigé à l’aide d’un script PowerShell automatisé depuis le planificateur de tâches de Windows. C’est ce qu’on verra dans la suite de ce tutoriel. Sachez aussi que le choix des options dans le planificateur de tâches dépend de tout un chacun en fonction de l’objectif visé. Celle utilisée ici est juste à titre illustratif.
Pour ce faire, on reprend simplement les commandes PowerShell utilisées plus haut et on les place dans un fichier qu’on enregistre ensuite avec l’extension « .ps1 », bien évidemment vous pouvez le nommer comme bon vous semble. Pour ce tutoriel, on l’appellera « SetDns.ps1 ».
Une fois fait, on crée une nouvelle tâche dans le planificateur de tâches en la configurant comme suit :
Dans l’onglet « Général », on nomme la tâche, on choisit son exécutant (ici l’administrateur du poste). On coche les options « Exécuter même si l’utilisateur n’est pas connecté », « Ne pas enregistrer le mot de passe. La tâche n’accède qu’aux ressources locales » et « Exécuter avec les autorisations maximales ». Enfin, on coche la case « Masquer ».
Puis, on va sur l’onglet « Déclencheurs » et on choisit le moment d’exécution de la tâche, ici « A l’ouverture de session » et on choisit « Tout utilisateur » en paramètres. On choisit ensuite la fréquence de répétition de la tâche (ici toutes les 5 minutes pendant 15 minutes) et enfin, on l’active.
Enfin, on va sur l’onglet « Actions », puis sur « Nouveau ». Une fenêtre « Nouvelle action » s’ouvre. Et dans cette dernière, on laisse l’option « Démarrer un programme » au niveau de « Action ».
En paramètres, on va chercher l’exécutable de PowerShell (ou on spécifie simplement « 1.1.1.1 ») et en argument, on spécifie « -F » suivi du chemin d’accès au script à exécuter, ici « C:\temp\SetDns1\ » et on valide le tout.
On peut bien évidemment tester la tâche pour être certains qu’elle s’exécutera automatiquement au moment planifié en allant dans la bibliothèque du planificateur de tâches.
Si tout a été bien configuré, on peut vérifier cela sous une session PowerShell avec les commandes « ipconfig/all » ou « Get-NetIpConfiguration » (ou son alias « gip » comme sur cette capture d’écran). On doit pouvoir retrouver des informations telles que le mode de connexion (filaire, Wi-Fi, etc.), le nom de la carte réseau, le nom du réseau auquel on est connecté, la configuration IP et surtout les serveurs DNS choisis par l’utilisateur.
Si on teste de nouveau l’accès à « www(.)xvideos(.)com », on ne devrait plus du tout y avoir accès en temps normal.
Il peut aussi arriver que des navigateurs quelconques continuent de donner accès au contenus interdits malgré la restriction mise en place, comme cela est souvent observé avec Microsoft Edge ou tout autre navigateur. Pour définitivement résoudre ce problème, on peut forcer l’utilisation du protocole DNS over HTTPS (DoH) dans les paramètres du navigateur à utiliser. Vous pouvez consulter le lien ci-dessous pour en savoir plus sur le DNS over HTTPS.
Dans le cas de Edge, on procède comme suit :
On lance le navigateur et on se rend dans les paramètres en haut à droite.
Ensuite, on clique sur l’option « Confidentialité, recherche et services » (en saisissant « edge://settings/privacy » dans la barre d’adresse du navigateur, on parvient au même résultat plus rapidement).
On défile vers le bas et on localise le paramètre « Utiliser un DNS sécurisé pour spécifier comment consulter l’adresse du réseau pour les sites web ». Il est désactivé par défaut. On l’active en déplaçant le point noir vers la droite, on coche l’option « Choisissez votre fournisseur de services » et on insère l’URL suivante dans la case qui apparaît juste en bas : « https://family.cloudflare-dns.com/dns-query » et on redémarre le navigateur.
Pour savoir comment appliquer la même configuration sur d’autres navigateurs, ouvrez le lien ci-dessous.
VII. Conclusion
On vient de voir comment procéder pour bloquer l’accès à du contenu pour adultes à un poste de travail allant sur internet. Ces méthodes peuvent être très utiles surtout pour la protection des mineurs notamment dans le cadre du contrôle parental. N’hésitez pas à tester cela chez vous et à nous dire ce qu’il en est en commentaire. En outre, si vous avez d’autres méthodes, vous pouvez toujours les mentionner en commentaires ici.
Une autre méthode que nous aurions pu évoquer, et qui s’adresse plus aux professionnels, c’est la personnalisation du serveur DHCP. Ainsi, le DNS de Cloudflare peut être distribué par ce biais, mais dans ce cas la restriction ne s’appliquera que sur le réseau de l’organisation.