DNS : Blocage du contenu à grande échelle

Cet article a été rédigé sur la base d'une conférence donnée par Andrey Meshkov, directeur technique et cofondateur d'Adguard, lors de l'Ad Blocker Dev Summit 2021. Vous pouvez donc regarder la vidéo ou lire ce texte pour apprendre plus sur le blocage de contenu à grande échelle.

De nos jours, tout est connecté à l'internet, de la télévision aux ampoules intelligentes, des appareils mobiles aux voitures intelligentes. Étant donné que les publicités et les traqueurs de publicités sont partout sur Internet, un bloqueur de publicités basé sur un navigateur semble ne pas être suffisant. Il n'offre qu'une toute petite fenêtre sur le "meilleur Internet", sans bannières agressives et intrusives qui se disputent votre attention. Mais que faire si vous voulez élargir cette "fenêtre" et tout avoir ?

Alors attachez votre ceinture et préparez-vous à un voyage fascinant dans le passé, le présent et l'avenir du filtrage DNS. Pourquoi ? Parce que le DNS est la réponse !

What is DNS-level blocking

Pour vous rafraîchir la mémoire, DNS est l'abréviation de "Domain name system" (système de nom de domaine). Son objectif est de reformuler les noms des sites web en quelque chose que les navigateurs peuvent comprendre, à savoir des adresses IP. Vous pouvez considérer le DNS comme le "carnet d'adresses" de l'internet. Ainsi, chaque fois que vous visitez un site web, votre navigateur envoie une requête DNS à un serveur DNS (qui est généralement fourni par votre fournisseur d'accès à Internet) afin de déterminer l'adresse IP du site web. Un résolveur DNS ordinaire renvoie simplement l'adresse IP du domaine demandé.

Votre appareil utilise toujours un serveur DNS ou un autre pour obtenir les adresses IP du nom de domaine vers lequel les applications souhaitent naviguer.

Il existe également des serveurs DNS qui assurent le blocage au niveau du DNS. Habituellement, cela se fait en utilisant la technique du DNS Sinkholing, qui consiste à distribuer des adresses non routables pour les domaines bloqués. Lorsque votre appareil envoie une "mauvaise" requête, qu'il s'agisse d'une publicité ou d'un tracker, un serveur DNS répond avec l'adresse IP 0.0.0.0 d'un domaine bloqué. Ainsi, l'application ne peut tout simplement pas se connecter à cette adresse et nous obtenons le résultat souhaité - la connexion est interdite.

Voici un exemple d'utilisation d'un serveur DNS pour bloquer l'accès à un domaine

Les autres options sont de répondre par NXDOMAIN (ce qui signifie que le domaine n'existe pas) ou REFUSED (ce qui signifie que le serveur a refusé de traiter la requête). C'est possible que vous ne remarquiez pas la différence entre les deux, mais certains anciens appareils peuvent mal interpréter REFUSED et essayer d'utiliser un serveur DNS de repli.

Le prédécesseur de DNS — fichier HOSTS

Étonnamment, le blocage au niveau du DNS est la plus ancienne méthode connue du blocage des publicités. Comment cela est-il possible ?

À l'époque où l'Internet était encore jeune et s'appelait ARPANET, un système de dénomination a été conçu pour associer l'adresse IP d'un ordinateur à un identifiant unique basé sur l'ASCII. Avec seulement quelques ordinateurs connectés à ARPANET, le Centre d'information sur les réseaux du ministère de la Défense des États-Unis a maintenu un fichier appelé HOSTS.TXT - c'était la liste générale contenant l'adresse de chaque ordinateur et son nom d'hôte. Les administrateurs du système téléchargeaient hosts.txt périodiquement. Si vous connaissiez le nom d'un ordinateur ARPANET, il vous suffisait de rechercher son adresse IP dans le fichier HOSTS.

This is how the ARPANET HOSTS.TXT file looked like

Mais il est vite devenu évident que l'explosion du nombre d'hôtes imposait une charge trop importante à l'ordinateur NIC. Tout le monde voulait que son ordinateur soit sur ARPANET, mais il fallait attendre que le NIC mette à jour HOSTS.TXT. Une autre solution était nécessaire. Ainsi, à la fin de l'année 1987, Paul Mockapetris a esquissé le système de noms de domaine.
Mais le fichier HOSTS n'était pas oublié. Peu après l'apparition des premières publicités sur Internet, les gens ont découvert que le fichier HOSTS.TXT pouvait être utilisé comme liste de blocage pour empêcher le téléchargement des publicités en utilisant à peu près la même méthode de sinkholing DNS.

Une fois cette découverte faite, certaines personnes ont consacré leur temps à maintenir les premières listes de blocage et à les partager avec tout le monde. Il existe quelques exemples notables de listes de blocage qui ont plus de 20 ans d'histoire et qui sont encore activement développées à ce jour, comme les Listes de blocage de Peter Lowe, Listes de blocage de Steven Black ou Hôtes de Dan Pollock.

Extrait de la liste de blocage de Peter Lowe

Lorsque la première version d'Adblock pour Firefox est apparue, certaines personnes ne pouvaient tout simplement pas en comprendre le but. Ils étaient simplement satisfaits de ce que le fichier HOSTS faisait pour eux.

Extrait de discussion sur un forum

Cependant, il y a quelques problèmes avec le fichier HOSTS qui ne sont pas faciles à résoudre.

  • Il n'y a pas de bon moyen de distribuer une mise à jour du fichier HOSTS aux utilisateurs. Vous devez soit avoir un logiciel qui le fait pour vous, soit être très patient et le faire périodiquement à la main.
  • Les fichiers HOSTS ont tendance à être ÉNORMES puisque vous ne pouvez pas utiliser de caractères génériques et que vous devez y répertorier tous les domaines. La syntaxe du fichier HOSTS n'est tout simplement pas censée être utilisée de cette façon. Il suffit de regarder l'image ci-dessous où figure l'une des plus grandes listes de blocage - Energized Unified -. Comme vous pouvez le constater, elle contient plus de 700 000 domaines et pèse environ 21 mégaoctets. Distribuer quotidiennement un fichier de 21 Mo à des millions d'utilisateurs est déjà un sérieux problème en soi-même.

Liste de blocage Energized Unified

Les serveurs DNS publics qui bloquent les publicités sont apparus comme une alternative acceptable à l'utilisation d'un fichier HOSTS. Il suffisait de configurer l'appareil pour utiliser un tel serveur et les utilisateurs n'avaient plus besoin de s'occuper des mises à jour des fichiers HOSTS. L'un des premiers serveurs DNS publics s'appelait Alternate DNS et est apparu en 2015. Il était maintenu par une seule personne. Plus tard en 2016, nous avons lancé AdGuard DNS.

Une nouvelle vie pour les bloqueurs DNS

Avant ces deux dernières années, le DNS en tant que norme était presque gelé avec seulement de légers changements. Mais ensuite, tout a explosé avec de nouvelles normes. Et le grand sujet est le cryptage DNS : DNS-over-TLS, DNS-over-HTTPS, DNS-over-QUIC, qui sont tous devenus courants et ont eu un impact important sur le blocage de contenu !

Avant la montée en popularité du cryptage DNS, les options étaient trop complexes pour un utilisateur occasionnel :

  • Utiliser le fichier HOSTS et recevoir d'une manière ou d'une autre les mises à jour de celui-ci.
  • Utiliser un serveur DNS ordinaire et accepter ses limites, comme l'impossibilité de le configurer pour un réseau mobile. Ou la nécessité de configurer chaque adaptateur réseau sur les ordinateurs de bureau et de plonger dans des paramètres de bas niveau pour le faire.
  • Utiliser un logiciel VPN (ou un VPN local).

Après la démocratisation du cryptage DNS, certains obstacles techniques ont tout simplement disparu. Il est désormais beaucoup plus facile de configurer un serveur DNS et celui-ci peut être utilisé sur n'importe quel réseau. Certes, il faut toujours se lancer dans les paramètres de l'appareil, mais pas aussi profondément qu'avant. Le cryptage DNS est pris en charge de manière native par Android 9+ (DoT, DoH à venir), iOS 14+ et macOS 15+ (DoT, DoH), Windows 11 (la prise en charge est toutefois assez limitée). Ce seul fait a donné un énorme coup de pouce à la popularité des solutions de blocage DNS.

En outre, le développement du cryptage DNS a permis aux serveurs DNS publics de fournir aux utilisateurs des options de personnalisation, en d'autres termes, chacun a la possibilité de choisir ce qu'il faut bloquer et ce qu'il ne faut pas. Précédemment, l'application de règles personnalisées basées sur le nom de domaine du serveur DNS n'était possible qu'en " associant " l'adresse IP de l'utilisateur, ce qui peut difficilement être considéré comme une bonne solution.

Les DNS pour le blocage de contenu : avantages et inconvénients

L'utilisation du DNS pour le blocage de contenu présente certains avantages, mais aussi des défauts évidents. Nous allons donc les détailler ci-dessous :

Avantages

  • Ne nécessite pas l'installation de logiciels supplémentaires.
  • Ne dépend pas du navigateur ou du fournisseur de système d'exploitation.
  • Pas de coût de prestation.
  • L'exécution d'un serveur DNS public vous permet d'observer l'ensemble de l'Internet. Ceci est très utile si vous maintenez une liste de blocage. Vous pouvez vous débarrasser des règles inutilisées et découvrir rapidement les nouvelles menaces. Le DNS n'a pas d'angle mort puisqu'il observe tous les appareils entièrement
  • Une solution centralisée permet de mieux traiter certains problèmes.

Par exemple, examinons le camouflage CNAME, une tactique employée par certains trackers pour se cacher des bloqueurs. Au moyen d'un enregistrement DNS CNAME, ils dissimulaient le nom de domaine réel de la tierce partie en le déguisant en domaine de première partie. Avec AdGuard DNS, nous avons pu trouver tous ces domaines déguisés et en publier une liste afin que même les bloqueurs de contenu n'ayant pas accès aux DNS puissent s'y opposer.

Un autre exemple est l'utilisation de proxys pour masquer les trackers. En gros, vous pouvez utiliser CloudFlare ou CloudFront pour configurer un proxy sans serveur qui masquerait le domaine original du tiers. Le DNS en général ne peut pas vous aider dans ce domaine, mais il peut être un bon point de départ pour détecter ce type de proxy.

Incvonvénients

  • Impossible de traiter les publicités de première partie. Par exemple, vous ne pouvez pas bloquer les publicités des vidéos YouTube parce qu'elles sont hébergées sur le même domaine que les vidéos légitimes.
  • Pas de filtrage cosmétique. Avec le blocage DNS seul, vous ne voyez peut-être plus la plupart des publicités, mais vous avez des pages web plutôt laides avec des cadres cassés et des espaces blancs.
  • Risque plus élevé de pannes. Par exemple, certaines applications ou certains sites Web peuvent ne pas fonctionner à cause du blocage de Google Analytics, et vous ne pouvez rien y faire.
  • Plus facile à contourner. Une application peut simplement choisir d'utiliser un autre serveur DNS.

Ce qui peut être amélioré

Le filtrage DNS comporte certaines failles qui pourraient être corrigées ou du moins atténuées.

Page d'erreur "Accès refusé"

Actuellement, si le domaine est bloqué au niveau du DNS, une page d'erreur lamentable s'affiche. Cela perturbe l'expérience de l'utilisateur. Par exemple, ils pourraient vouloir le débloquer temporairement et il n'y a tout simplement aucun moyen de le faire.

Heureusement, il existe un projet de RFC (un document de demande de commentaires) à ce sujet : "DNS Access Denied Error Page" qui permettra d'afficher une belle page d'erreur à l'utilisateur sans avoir recours à des solutions hideuses (comme demander à l'utilisateur d'installer un certificat HTTPS).

Mécanismes de découverte des DNS cryptés

Maintenant, vous devez configurer le DNS sur chaque appareil. Ne serait-ce pas mieux si vous pouviez simplement l'installer dans votre routeur ? Certains nouveaux routeurs prennent déjà en charge le cryptage DNS en mode natif. Cependant, de nombreux routeurs anciens n'acceptent encore que les serveurs DNS ordinaires. Le groupe de travail Adaptive DNS Discovery s'est engagé à améliorer cette situation.

Les projets de RFC les plus importants sont:

  1. " Découverte de résolveurs désignés " qui permet de découvrir des serveurs DNS cryptés via un enregistrement DNS spécial. Voici comment cela est censé fonctionner. Vous configurez un serveur DNS ordinaire, puis votre système d'exploitation lui envoie une requête DNS spéciale lui demandant s'il existe un serveur DNS crypté qu'il peut utiliser.
  2. Le deuxième RFC notable concerne une nouvelle option DHCP pour les serveurs DNS cryptés. Cette option permettrait à un routeur de propager des paramètres DNS cryptés aux ordinateurs connectés à ce routeur.

Détection des applications

Enfin, une dernière chose peut être améliorée. Nous devons être capables de détecter quelle application effectue telle ou telle requête DNS. Pourtant, il n'y a pas de RFC qui pourrait nous aider. Mais nous pouvons essayer de le faire nous-mêmes, de créer une sorte d'"empreintes DNS", au moins pour les applications les plus populaires.

Si nous savions quelle application effectue une requête DNS, nous pourrions être plus flexibles quant à ce qui est bloqué et ce qui ne l'est pas.

  1. Par exemple, nous voulons bloquer le suivi de Facebook, mais le bloquer va globalement casser toutes les applications Facebook, donc nous voudrions le faire dans les applications non-Facebook seulement.
  2. Un autre problème concret est que le blocage d'AppsFlyer (un système d'analyse mobile) interrompt certaines applications plutôt populaires. Nous préférons l'autoriser de manière sélective (uniquement pour les applications concernées) et le bloquer dans le cas contraire.

La création de ces empreintes DNS nécessite l'analyse du comportement réseau de chaque application populaire et nous travaillons sur une solution qui permettra de le faire.

Qu'est ce que c'est que AdGuard DNS

Si vous voulez avoir accès à un "meilleur Internet", vous devez absolument utiliser le DNS en même temps qu'un VPN et un bloqueur de publicité. Et nous vous suggérons de considérer AdGuard DNS.

Alors, qu'est-ce que AdGuard DNS ? C'est l'un des services DNS les plus respectueux de la vie privée que vous pouvez choisir. Il prend en charge des protocoles de cryptage fiables tels que DNS-over-HTTPS, DNS-over-TLS et DNS-over-QUIC. Il peut identifier les demandes adressées à un domaine publicitaire, de suivi et/ou pour adultes (facultatif) et répond par une réponse vide. AdGuard dispose de sa propre base de noms de domaines qui servent des publicités, des trackers et des fraudes, et elle est régulièrement mise à jour. De plus, il y a une grande opportunité d'ajouter vos règles personnalisées aux listes de blocage.

Pour vous donner une vue plus large de ce qu'est AdGuard DNS, je vais mentionner quelques points supplémentaires :

  • Il se compose de plusieurs serveurs situés dans 14 endroits.
  • Tous ces serveurs "annoncent" les mêmes adresses IP via BGP (Border Gateway Protocol).
  • Sa charge actuelle est d'environ trois cent mille requêtes DNS par seconde.
  • AdGuard DNS est écrit en Golang.
  • Environ 75% du trafic DNS est crypté. C'est en fait ce qui différencie les serveurs DNS de blocage de contenu des autres. Si vous regardez les statistiques de CloudFlare ou Quad9, vous verrez que les DNS cryptés ne représentent qu'une petite partie de toutes les requêtes. Pour AdGuard DNS c'est très différent, la plupart du trafic est cryptée.

La syntaxe des règles de filtrage DNS

Les listes de blocage d'AdGuard DNS sont composées en utilisant une syntaxe de filtrage DNS spéciale . Nous n'étions pas satisfaits des limitations des listes de blocage de type fichiers HOSTS, donc pour AdGuard DNS nous avons utilisé la syntaxe familière de style adblock. Elle a ensuite été progressivement étendue avec des modificateurs spécifiques aux DNS.

Exemples de règles de filtrage DNS. La spécification complète est disponible sur Github..

Juste pour démontrer la différence. À gauche vous voyez les statistiques du filtre DNS AdGuard (celui que nous utilisons par défaut). Il est relativement court, mais il bloque en fait environ 900 000 domaines. À droite, nous avons une liste de blocage différente - Energized Ultimate qui est un fichier HOSTS avec 500 000 domaines. Et voici ce qu'il bloque : 500 000 domaines.

Statistiques selon les données AdGuard DNS

Noeud de serveur DNS AdGuard

Chaque nœud de serveur DNS AdGuard se compose de plusieurs parties. En amont, nous avons un transitaire DNS (écrit en Golang) qui implémente toute la logique, c'est-à-dire le filtrage DNS, la mise en cache, etc.

En arrière-plan, nous avons une instance de serveur non liée qui fournit une récursion DNS. La charge d'un seul nœud de serveur est de 5 000 à 40 000 réponses selon l'emplacement du nœud (certains emplacements sont plus populaires que d'autres).

Mise en œuvre des moteurs de filtrage DNS

Les implémentations du moteur de filtrage DNS sont open source et disponibles sur Github. Il y en a deux. Le premier est appelé urlfilter et c'est une bibliothèque Golang que nous utilisons dans AdGuard DNS et AdGuard Home. Elle offre des performances relativement élevées et une faible empreinte mémoire. La deuxième est AdGuard DNSLibs, qui est une bibliothèque C++ que nous utilisons dans nos applications client. En plus du filtrage DNS, elle fournit également des implémentations de cryptage DNS.

Si vous voulez vous protéger des publicités et des trackers avec l'aide d'AdGuard DNS, suivez simplement ce guide d'installation.

Un coup d'œil sur l'avenir

Les bloqueurs de contenu basés sur les navigateurs sont peut-être les plus populaires parmi les utilisateurs occasionnels, mais pas parmi les responsables des listes de filtres. Il y a beaucoup plus de fichiers d'hôtes et de listes de domaines gérés par des bénévoles que de listes de filtres pour les bloqueurs basés sur les navigateurs. C'est le signe qu'ils ont de grandes perspectives.

Statistiques selon filterlists.com

Quelles sont donc les perspectives du blocage de contenu DNS ? Tout d'abord, la croissance du blocage de contenu DNS va s'accélérer. Windows 11 apporte la prise en charge du cryptage DNS, les nouveaux routeurs prennent également en charge le cryptage DNS, tout cela facilitera la mise en place et l'utilisation du blocage par les utilisateurs.

Les taux de contournement du blocage de contenu DNS vont augmenter, mais ils resteront marginaux. Il faut beaucoup d'efforts de la part de différentes parties pour le contourner et pour que cela commence à se produire, le blocage de contenu DNS devrait être aussi populaire que les bloqueurs de navigateur. Et cela n'arrivera probablement pas, malgré le taux de croissance.

Le DNS ne remplacera pas les bloqueurs de navigateur pour des raisons évidentes, la qualité n'est tout simplement pas assez bonne. Mais il est là pour rester.

Anna Martynova sur AdGuard Actualités Savoir tout
26 novembre 2021
En téléchargeant les commentaires, vous conformez aux termes et politiques
Black Friday 2021 chez AdGuard : ça commence !
En novembre, quand les jours sont tout courts et il fait un temps de chien, ça devient plus difficile que jamais de conserver votre bonne humeur. Nous allons donc essayer de vous remonter un peu le moral avec notre promo Black Friday !
Un adblocker qui vous sert des pubs, M. Zuckerberg qui supprime votre visage... lisez tout dans notre digest.
Plusieurs conseils pour éviter les publicités - dans notre digest, ainsi que quelques informations importantes ou intéressantes de ce mois (presque) passé.
Début du téléchargement de AdGuard Cliquez le bouton indiqué par la flèche pour déclencher l'installation. Sélectionnez « Ouvrir » et cliquez sur « OK », puis attendez que le fichier soit téléchargé. Dans la fenêtre ouverte, faites glisser l'icône AdGuard dans le dossier « Applications ». Merci d'avoir choisi AdGuard! Sélectionnez « Ouvrir » et cliquez sur « OK », puis attendez que le fichier soit téléchargé. Dans la fenêtre ouverte, cliquez sur « Installer ». Merci d'avoir choisi AdGuard! Installer également AdGuard pour les appareils mobiles :