24/04/2010

DNS menteur, une autre méthode anti-curieux

DNS menteur

Geekfault en pinnochioDans notre réseau, le DNS est donné automatiquement aux terminaux par DHCP. Dans le scenario qui suit le DNS interne ne sera pas un modèle de franchise. Dans certains cas il refusera d’interroger un DNS externe et affirmera que certains noms de domaine, pourtant externes à notre réseau, ont une adresse IP locale que l’on appellera blackhole. Le DNS ment !

Pour éviter d’avoir des messages d’erreurs dans les navigateurs, il y a un serveur HTTP en écoute sur blackhole.

Scénario

Nous sommes toujours dans notre scénario d’une visite de courtoisie sur Geekfault.

  1. La première étape pour afficher la page d’accueil de Geekfault est la résolution du nom de domaine en adresse IP par un DNS externe (configuration par défaut des navigateurs et des proxies communs) :
  2. Une connexion directe sur la machine par HTTP permet de récupérer le fichier index (typiquement index.php) :
  3. Le navigateur lit cette page pour établir la liste des fichiers à télécharger en plus (js,png,css, …) et la liste des éléments externes au site (dont ceux des web-espions). Les éléments externes doivent d’abord être recherchés par leur adresse IP toujours avec un DNS externe :
  4. Le navigateur télécharge et traite les fichiers présents sur le serveur de Geekfault :
  5. En même temps que l’étape 4, le navigateur tente de télécharger les éléments tiers. Mais les requêtes initialement destinées aux web-espions échoueront sur blackhole .

Qu’en conclure ?

La protection par DNS menteur est très économe en terme de puissance : le mécanisme se limite à quelques requêtes DNS que le client cachera et une requête HTTP sur un fichier vide qui contient par exemple ceci :

<html></html>

Le filtrage par DNS est en tout-ou-rien. Ou le domaine est bloqué ou tout passe, nous sommes bien loin de la souplesse apportée par les expressions régulières du chapitre précédent. En revanche cette méthode permet de filtrer ce qui n’est pas HTTP.
Passons maintenant à la pratique avec deux systèmes d’exploitation et deux serveurs HTTP distincts.

  1. | #1

    Bel article ! Petite question, où as tu trouver ces jolies clipart, qui semble être vectoriel ? Ils sont magnifiques, ça produit d’excellent schéma !

  2. ckg
    | #2

    Merci 😉

    Ces illustrations ont été réalisées avec Cacoo, un flow-chart en ligne basé sur flash.

    Ce que l’on perd en souplesse par rapport à un Dia est compensé par la richesse des ‘cliparts’ (qui n’en sont pas en fait) et par la disponibilité d’un outil ‘in the cloud’. A tester sur un petit projet pour se faire un avis.

    La galerie originale est ici https://cacoo.com/diagrams/Z1pvc3fomB1cMnoi

  3. Grunt
    | #3

    Il manque juste un petit quelque chose: l’ajout des nouveaux domaines espions ou publicitaires, à la volée, par les utilisateurs.

    Comme ce que permet Ad-Block: hop ça me plait pas, hop je vire. Sauf que je ne vois pas comment on pourrait faire ça de façon pratique sur tous les navigateurs..

  4. ckg
    | #4

    Effectivement c’est encore une autre limite d’un système tel que décrit dans l’article.

    Mon petit doigt me dit que le prochain article traitera de l’import conditionnel de règles adblock 😉

  5. | #5

    bonjour.
    je tiens a préciser que le fichiers hosts existe également sur un windows !!!
    il est même ici : %windir%\system32\drivers\etc\hosts

    (remarquez l’extrême similitude entre le /etc/hosts d’un Linux et le \etc\hosts d’un Windows ^_^…même les commentaires sont quasi identiques…)

    (pas testé sur win7, désolé…)

  6. | #6

    jbdzdd

  7. | #7

    pmopp7

  1. | #1
  2. | #2