De l'efficacité du fichier hosts.

Posté par  (site web personnel) . Modéré par j.
Étiquettes :
3
29
août
2010
Sécurité
Comprendre et bien utiliser le fichier hosts, quel que soit votre système d'exploitation.

Le fichier hosts ?
Presque un gros mot pour la plupart des utilisateurs lambda, mais qui a le mérite d'être facile à comprendre et puissant dans son utilisation.

Dans cet article, il n'y aura pas grand-chose de très technique.

1. Descriptif

Le fichier hosts est un simple fichier texte qui est d'office présent dans votre système, que vous utilisiez Microsoft Windows, GNU/Linux, Mac ou Unix. Il contient les correspondances entre adresses IP et un ou plusieurs nom(s) de domaine (comprendre par là un lien Internet comme wikipedia.fr par exemple).

Étant donné qu'il s'agit d'un fichier universel, il est pris en compte quel que soit le navigateur que vous utilisez (Mozilla Firefox et ses dérivés, Internet Explorer, Google Chrome, Safari, Opera, Midori, etc.) et la compatibilité de son contenu est totale.


2. Fonctionnement

Voici une ligne du fichier hosts : 127.0.0.1 www.google.fr.

Cette ligne veut dire que n'importe quel programme ou outil (votre navigateur, commande ping, et caetera) qui tentera d'accéder à www.google.fr sera redirigé à l'adresse du serveur ayant pour IP 127.0.0.1. Simple comme bonjour.


2.1. Généralités
Dans mon navigateur préféré, j'entre l'adresse www.google.fr : que se passe t-il ? Eh bien, le navigateur regarde dans le fichier hosts si www.google.fr est attribué à une adresse IP.

Si oui, alors www.google.fr vous amènera au serveur qui a l'adresse IP définie telle que dans ce dernier.

Si non, le navigateur interrogera divers serveurs spécialisés (serveurs DNS) afin de résoudre l'adresse IP de www.google.fr ; ce qu'on peut traduire par trouver, tout simplement.

Puis le navigateur affiche la page d'accueil de www.google.fr.

(Voir 3. Pour aller plus loin pour des détails plus techniques)


2.2 Avantage sur les logiciels tiers

Il existe quelques outils spécialisés qui permettent de bloquer un nom de domaine ou une adresse IP. C'est le cas de beaucoup de bloqueurs de publicités (anti-pub).

L'utilisation d'un fichier hosts modifié est différent dans l'approche mais identique dans le processus. Je m'explique : ces logiciels (ou modules pour votre navigateur) contiennent des bases de données des adresses IP et noms de domaine "mauvais" (serveurs espions, axés sur la pornographie, le piratage (warez), ou tout autres sujets qui ont une réputation dite mauvaise pour les éditeurs de ces logiciels ou modules).

Lorsque ces outils se rendent comptent que votre navigateur fait une requête à un de ces serveurs, ils bloquent leur affichage. Simple, net et sans bavure (ou presque*).

L'avantage premier du fichier hosts sur certains de ces outils est qu'il y a moins de requêtes ; c'est-à-dire qu'avec un fichier hosts bien configuré, mon navigateur n'essayera même pas d'envoyer une requête au serveur "mauvais", mais plutôt au serveur local (votre machine). Du coup, il ne s'agit plus là de bloquer l'affichage de la publicité puisqu'on ne l'a pas du tout téléchargée.

D'autres avantages sous forme de liste :


  • aucun besoin de logiciel (ou module) tiers ;

  • petit fichier texte -> pas de surcharge de votre machine ;

  • facilité de modification ;

  • utilisation transparente, ni logo ni icône nulle part ;

  • navigation sur Internet nettement plus rapide, saine et agréable ;

  • et j'en oublie certainement...



* Même si vous ne voyez pas la publicité, votre navigateur a parfois téléchargé et gardé en mémoire divers scripts et images.


2.3. Mise à jour

Bien entendu, un fichier hosts dépassé ne sert pas à grand-chose. C'est là qu'AdZHosts tombe à pic !

AdZHosts est maintenu par Alden MagiX et n'est ni plus ni moins qu'un ficher hosts optimisé et régulièrement mis à jour. Vous pouvez le trouver sur le site officiel [http://www.adzhosts.fr] et pour toute question/suggestion, il y a un forum où vous pourrez poster.

Pour les utilisateurs de GNU/Linux, Unix et certainement Mac, j'ai écrit un script Perl pour automatiser la mise à jour et "purifier" ce que notre ami Alden MagiX nous a concocté (par mesure de sécurité, non pas que je ne lui fasse pas confiance). Ce script se nomme adzhosts.sh (version anglaise) ou adzhosts-fr.sh (version française) et se trouve ici :

Il est simple d'utilisation et explique tout ce qui se passe, rien n'est caché à l'utilisateur.

Bon à savoir,l'emplacement de ce fameux fichier hosts :
GNU/Linux et Unix        : /etc/hosts

Mac OS(X) : /etc/hosts
Windows 95/98 : c:\windows\ **
Windows NT/2000 : c:\winnt\system32\drivers\etc\
Windows XP : c:\windows\system32\drivers\etc\
Windows 2008/Vista/Seven : c:\windows\system32\drivers\etc\hosts
OS/2 : boot\mptn\etc\hosts


** Le fichier n'existe peut être pas par défaut, un fichier HOST.SAM peut être présent, vous pourrez l'utiliser comme base de départ sans oublier de le renommer HOST sans aucune extension.



3. Pour aller plus loin

Cette partie est un peu plus technique.
Grâce à l'excellent strace, voyons comment procède la commande ping.

Commande effectuée : ping www.google.fr
Réponse :

PING www.google.fr (66.249.92.104) 56(84) bytes of data.

64 bytes from 66.249.92.104: icmp_req=1 ttl=59 time=22.6 ms
64 bytes from 66.249.92.104: icmp_req=2 ttl=59 time=32.3 ms
64 bytes from 66.249.92.104: icmp_req=3 ttl=59 time=20.7 ms
64 bytes from 66.249.92.104: icmp_req=4 ttl=59 time=21.4 ms
64 bytes from 66.249.92.104: icmp_req=5 ttl=59 time=101 ms
^C64 bytes from 66.249.92.104: icmp_req=6 ttl=59 time=31.9 ms

--- www.google.fr ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5005ms
rtt min/avg/max/mdev = 20.784/38.485/101.656/28.646 ms

Nous savons qu'une des adresses IP de Google est 66.249.92.104.

Maintenant voyons ceci plus en détails à l'aide de strace.

Commande effectuée : strace ping www.google.fr
Réponse :
execve("/bin/ping", ["ping", "www.google.fr"], [/* 38 vars */]) = 0

(...)
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
(...)
read(3, "# AdZHosts v0061\n127.0.0.1 local"..., 4096) = 4096
read(3, ".com 08.185.87.19.liveadvert.com"..., 4096) = 4096
read(3, "com 101com.com\n127.0.0.1 101h.co"..., 4096) = 4096
read(3, "194.dynamic.dol.ru 160.6.87.194."..., 4096) = 4096
read(3, "r.ru 1up.us.intellitxt.com 1-upd"..., 4096) = 4096
(...)

On voit bien que ping va voir ce qui se trouve dans le fichier hosts.

Dans /etc/hosts j'ajoute la ligne : 127.0.0.1 www.google.fr
Lorque je relance la commande sans strace, voici le résultat :
PING www.google.fr (127.0.0.1) 56(84) bytes of data.

64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.015 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.013 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.014 ms
64 bytes from localhost (127.0.0.1): icmp_req=4 ttl=64 time=0.015 ms
64 bytes from localhost (127.0.0.1): icmp_req=5 ttl=64 time=0.014 ms
^C
--- www.google.fr ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3997ms
rtt min/avg/max/mdev = 0.013/0.014/0.015/0.002 ms

Voyez, l'adresse IP de www.google.fr est devenue 127.0.0.1.

C'est un exemple parmi tant d'autres, le fonctionnement est identique lorsque vous utilisez votre navigateur.

De part cette manipulation du fichier hosts, on soulève une faille de sécurité : si une personne mal intentionnée a accès à votre fichier hosts et qu'il a les droits suffisants pour le modifier, il pourrait aisément dérouter le site de votre banque ou votre compte courriel afin que www.ma-banque.fr vous amène ailleurs que sur le réel serveur de votre banque ; sur un serveur pirate, par exemple...


4. Conclusion
Le fichier hosts est une redoutable arme contre les sites à mauvaise réputation, il est simple et rapide de le modifier et les effets entrent directement en compte. C'est un moyen efficace dont tout le monde devrait avoir connaissance, que vous soyez administrateur système ou simple utilisateur.


5. Références

Par ordre alphabétique :


Aller plus loin

  • # Ayez confiance…

    Posté par  (site web personnel) . Évalué à 10.

    Merci pour le tuto, mais faut quand même avoir une confiance aveugle envers AdZHosts.

    Comment être sûr qu'un site sain ne sera pas redirigé vers un mauvais serveur si on laisse le soin à un tiers de gérer le contenu de son fichiers hosts?

    blog.rom1v.com

    • [^] # Re: Ayez confiance…

      Posté par  . Évalué à 5.

      Normalement, AdZhosts n'ajoute des entrées que pour l'adresse IP 127.0.0.1 : si on veut utiliser le fichier sans faire une confiance aveugle au mainteneur (cet qui semble normal), il suffit de filtre le fichier livrés en ne prenant que les lignes commençant par 127.0.0.1.

      Je me demande quand même ce que ça donne, en terme de performance lors de la résolution de nom, quand on a un fichier hosts avec près de 70000 entrées.

      Et puis, il faut aussi gérer de façon satisfaisante le cas où l'on a un serveur HTTP sur sa propre machine.
      • [^] # Re: Ayez confiance…

        Posté par  . Évalué à 8.

        Je me demande quand même ce que ça donne, en terme de performance lors de la résolution de nom, quand on a un fichier hosts avec près de 70000 entrées.

        Ça rame :) je l'ai découvert il y'a plusieurs années sous windows avec un utilitaire de protection dont la technique était justement de bourrer le fichier /etc/hosts d'entrées non sécurisées.

        Ce fichier est loin d'avoir été prévu pour la masse tentaculaire d'adresses disponibles sur la toile. À moins d'aimer faire des accès disques et ralentir son ordinateur, je le déconseille...

        Mieux vaut donc laisser ce fichier tranquille (hormis pour la configuration de sites locaux pour le développement avec des sites en *.local par exemple)
    • [^] # Re: Ayez confiance…

      Posté par  . Évalué à 9.

      Justement, perso je trouve que le site/forum d'AdZHosts fait très amateur (autant dans la présentation que pour les fautes de français), et ensuite à propos des "mises à jour régulières", ben la dernière date de 3 mois 1/2... Donc effectivement j'ai pas trop confiance.

      Quelques autres sources qui semblent + connues et + à jour :
      http://www.mvps.org/winhelp2002/hosts.htm
      http://someonewhocares.org/hosts/ (+ http://someonewhocares.org/hosts/zero/ en alternative à 127.0.0.1)
      http://www.hosts-file.net/?s=policy

      PS: moi je combine avec http://accs-net.com/hosts/eDexter.html (exe/Windows et java/Linux)
    • [^] # Re: Ayez confiance…

      Posté par  (site web personnel) . Évalué à 2.

      C'est pour cela que dans le script adzhosts(-fr).sh, je purge le contenu tel que :

      cat HOSTS.txt | egrep "^127.0.0.1" >> /etc/hosts
      cat HOSTS.txt | egrep "^255.255.255.255" >> /etc/hosts

      Comme ça on ne craint rien ;)
    • [^] # Re: Ayez confiance…

      Posté par  (site web personnel) . Évalué à 3.


      link="http://kosvocore.free.fr/AdZHosts/HOSTS.txt"
      echo "[+] Downloading the latest AdZHosts archive ..."
      wget -qq -U firefox -c ${link}


      Fabuleux, "yapluka" dnsspoofer kosvocore.free.fr sur l'accès sans fil de la gare/resto/freewifi, attendre qu'un laptop passe par là et mette à jour sont /etc/hosts à coup de Cron, et hop, on peut commencer le MITM.
      Même quand la pauvre victime se sent en sécurité dans son salon ça continue \o/.

      Le concept me (dé)?plait fortement.
      • [^] # Re: Ayez confiance…

        Posté par  (site web personnel) . Évalué à 1.

        Si tu as peur du mitm le mieux reste quand même l'https…
        • [^] # Re: Ayez confiance…

          Posté par  (site web personnel) . Évalué à 2.

          Le problème étant que la grande majorité des sites marchands proposent leur vitrine en HTTP pur et dur (Amazon, Ebay, LDLC, et j'en passe; désolé pour la pub). Donc en gros, il faudrait que l'utilisateur vérifie bien qu'il va faire un POST sur du HTTPS, et ce *avant* de cliquer sur "Se connecter". Permets moi de douter grandement.

          À côté de ça, il n'y a pas que le Web, combien d'ulisateurs ont leur compte mail de FAI qui est automatiquement relevé en POP/IMAP... pas une majorité, mais une bonne collection tout de même. À partir de là, il suffirait encore une fois de spoofer les adresses des serveurs mails des principaux FAI. Ensuite il est facile de se connecter sur pratiquement tous les applicatifs web auquel est inscrit cet utilisateur avec les classiques "rappel de mon mot de passe".

          Même remarque pour la messagerie instantanée, leurs profils de réseaux sociaux et j'en passe.
  • # Pub

    Posté par  . Évalué à 4.

    Article intéressant, j'ai été surpris d'apprendre l'existence d'un tel fichier sur Windows.

    Dommage que comme souvent google est utilisé comme site de référence. C'est juste de la publicité gratuite.
    perdu.com par exempe n'est il pas plus neutre dans ces cas là ?
    • [^] # Re: Pub

      Posté par  (site web personnel) . Évalué à 10.

      Sinon il y a "example.com", "example.net","example.org" ou "example.edu" qui servent à ça... http://www.rfc-editor.org/rfc/rfc2606.txt
    • [^] # Re: Pub

      Posté par  . Évalué à 5.

      example.com est bien plus adapté s'il faut une url de référence.
      • [^] # Re: Pub

        Posté par  . Évalué à 2.

        Vous avez tous deux raison, si l'on cherche la neutralité example.com est plus adapté mais perdu.com est le premier site qui m'est venu à l'esprit.
    • [^] # Re: Pub

      Posté par  . Évalué à 1.

      j'ai été surpris d'apprendre l'existence d'un tel fichier sur Windows.

      Plus surprenant, son en-tête :
      # Copyright (c) 1993-1999 Microsoft Corp.
      #
      # Ceci est un exemple de fichier HOSTS utilisé par Microsoft TCP/IP
      # pour Windows
      #

      À quand un brevet ?
      • [^] # Re: Pub

        Posté par  . Évalué à 1.

        C'est gentil de se moquer, quand on voit qu'on peut trouver dans une distribution linux plusieurs scripts dont l'en-tête de licence est plus grande que le contenu utile du fichier.

        Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

    • [^] # Re: Pub

      Posté par  (site web personnel) . Évalué à 1.

      Je modifierai les documents afin de prendre www.example.org, je n'avais pas fait attention à ce genre de détail, tu n'as pas tord ;)
    • [^] # Re: Pub

      Posté par  (site web personnel) . Évalué à 1.

      Il y a pas très longtemps, je suis passé chez un pote windowsien dont l'"internet ne marchait plus". J'ai vite détecté un problème de résolution de nom, mais même en mettant des adresses de serveur DNS à la main, ça déconnait.
      Finalement, c'était le truc de la folie: il avait un windows pirate (évidemment) avec un fichier hosts qui codait en dur une adresse IP obsolète pour google.com (Dieu sait pourquoi). Et comme bien sûr c'était sa page d'accueil, le drame...
      • [^] # Re: Pub

        Posté par  . Évalué à 4.

        Finalement, c'était le truc de la folie: il avait un windows pirate (évidemment) avec un fichier hosts qui codait en dur une adresse IP obsolète pour google.com (Dieu sait pourquoi).

        Tu as regardé si l'adresse appartenait bien à Google? Vu que c'est un windows pirate, c'était peut-être une tentative de phising ou d'espionnage.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Pub

      Posté par  (site web personnel) . Évalué à 2.

      >> Article intéressant, j'ai été surpris d'apprendre l'existence d'un tel fichier sur Windows.

      Pourquoi ?
  • # remarques

    Posté par  (site web personnel, Mastodon) . Évalué à 7.

    2 remarques :
    - l'ordre de la résolution des noms est déterminée par le fichier /etc/host.conf. Par défaut celui-ci regarde en premier dans /etc/hosts mais ce n'est pas forcément le cas tout le temps.
    - si un serveur web (qui écoute la boucle locale, le cas par défaut également, c'est quand même bien pratique) tourne sur la bécane sur laquelle on aura renseigné le fichier /etc/hosts selon adzhosts.fr comme suggéré dans l'article, celui-ci va mouliner inutilement, ralentissant le chargement de la page d'autant, voire renvoyant des erreurs dans le cas d'iframes ou autre, ce qui pour le coup est contre-productif.
    • [^] # Re: remarques

      Posté par  (site web personnel) . Évalué à 2.

      $ grep hosts /etc/nsswitch.conf
      hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

      (donc ici /etc/hosts en premier, puis DNS)
      • [^] # Re: remarques

        Posté par  (site web personnel) . Évalué à -1.

        Alors moi aussi je pensais ca, mais dernierement sur ubuntu, je suis tombé sur un cas ou il ne regarde pas le fichier :

        strace -f -e open host google.ie
        open("/etc/ld.so.cache", O_RDONLY) = 3
        open("/usr/lib/liblwres.so.60", O_RDONLY) = 3
        open("/usr/lib/libdns.so.64", O_RDONLY) = 3
        open("/usr/lib/libgssapi_krb5.so.2", O_RDONLY) = 3
        open("/lib/i686/cmov/libcrypto.so.0.9.8", O_RDONLY) = 3
        open("/usr/lib/libbind9.so.60", O_RDONLY) = 3
        open("/usr/lib/libisccfg.so.60", O_RDONLY) = 3
        open("/usr/lib/libisc.so.60", O_RDONLY) = 3
        open("/lib/libcap.so.2", O_RDONLY) = 3
        open("/lib/tls/i686/cmov/libpthread.so.0", O_RDONLY) = 3
        open("/usr/lib/libxml2.so.2", O_RDONLY) = 3
        open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
        open("/usr/lib/libGeoIP.so.1", O_RDONLY) = 3
        open("/usr/lib/libkrb5.so.3", O_RDONLY) = 3
        open("/usr/lib/libk5crypto.so.3", O_RDONLY) = 3
        open("/lib/libcom_err.so.2", O_RDONLY) = 3
        open("/usr/lib/libkrb5support.so.0", O_RDONLY) = 3
        open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3
        open("/lib/libkeyutils.so.1", O_RDONLY) = 3
        open("/lib/tls/i686/cmov/libresolv.so.2", O_RDONLY) = 3
        open("/lib/libz.so.1", O_RDONLY) = 3
        open("/usr/lib/libisccc.so.60", O_RDONLY) = 3
        open("/lib/libattr.so.1", O_RDONLY) = 3
        open("/lib/tls/i686/cmov/libm.so.6", O_RDONLY) = 3
        Process 5575 attached
        Process 5576 attached
        Process 5577 attached
        [pid 5574] open("/usr/share/locale/en_IE.UTF-8/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en_IE.UTF-8/LC_MESSAGES/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en/LC_MESSAGES/libdst.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en_IE.UTF-8/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en_IE.UTF-8/LC_MESSAGES/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en/LC_MESSAGES/libisc.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/lib/ssl/openssl.cnf", O_RDONLY|O_LARGEFILE) = 6
        [pid 5574] open("/usr/share/locale/en_IE.UTF-8/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en_IE.UTF-8/LC_MESSAGES/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/usr/share/locale/en/LC_MESSAGES/libdns.cat", O_RDONLY) = -1 ENOENT (No such file or directory)
        [pid 5574] open("/etc/resolv.conf", O_RDONLY|O_LARGEFILE) = 6
        google.ie has address 173.194.37.104
        google.ie has IPv6 address 2a00:1450:8006::63
        google.ie mail is handled by 10 google.com.s9b1.psmtp.com.
        google.ie mail is handled by 10 google.com.s9b2.psmtp.com.
        google.ie mail is handled by 10 google.com.s9a2.psmtp.com.
        google.ie mail is handled by 10 google.com.s9a1.psmtp.com.
        [pid 5574] --- SIGTERM (Terminated) @ 0 (0) ---
        Process 5575 detached
        Process 5577 detached
        Process 5576 detached

        Mon nsswitch.conf juste pour reference :

        passwd: compat
        group: compat
        shadow: compat

        hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
        networks: files

        protocols: db files
        services: db files
        ethers: db files
        rpc: db files
        • [^] # Re: remarques

          Posté par  (site web personnel) . Évalué à 6.

          C'est pas parce que host est juste un client DNS ? Et donc qu'il ne fait que des requêtes en causant aux serveurs DNS, sans se soucier des autres systèmes de résolution de noms présents sur la machine (fichier host, avahi/zeroconf, etc).
        • [^] # Re: remarques

          Posté par  . Évalué à 5.

          La commande host n'a aucun rapport avec /etc/host.conf (même si son nom peut prêter à confusion).

          /etc/host.conf est utilisé par les fonctions gethostbyname et gethostbyaddr de la libc.

          La commande host a pour but de tester spécifiquement la résolution DNS. D'après sa page man:
          "host is a simple utility for performing DNS lookups."; il est donc normal qu'elle ignore les autres méthodes de conversion.

          C'est comme ça depuis que la commande host existe (bien avant la naissance de Linux), rien de spécifique à Ubuntu.
          • [^] # Re: remarques

            Posté par  (site web personnel) . Évalué à 4.

            >La commande host a pour but de tester spécifiquement la résolution DNS.
            Il existe getent pour utiliser directement nss dans le shell


            >>host www.linuxfr.org
            www.linuxfr.org is an alias for prout.linuxfr.org.
            prout.linuxfr.org has address 88.191.250.104

            >>getent hosts www.linuxfr.org
            127.0.0.1 www.linuxfr.org
    • [^] # Re: remarques

      Posté par  . Évalué à -1.

      Ce ne serait pas plutôt /etc/resolv.conf dans la première remarque ?
      • [^] # Re: remarques

        Posté par  . Évalué à 1.

        oula je suis fatigué pour sortir une bêtise pareil moi, je crois que je vais aller me coucher ^^
    • [^] # Re: remarques

      Posté par  . Évalué à 3.

      Le lien vers AdZHosts donné n'existe pas [http://www.adzhosts.fr]. Ne serait-ce pas http://adzhosts.free.fr/ ?

      Et même question que plus haut, si on possède un serveur local, cela ne risque t-il pas de surcharger ce dernier (et de pourrir les logs) ? Peut-on envisager de rediriger les sites indésirables vers l'adresse 0.0.0.0 ?

      Est-il possible d'avoir plusieurs fichiers hosts lus par ordre de préférence ? Ainsi, on a un fichier que l'on garde propre et un fichier ou plusieurs fichiers ayant une fonction bien précise.
      • [^] # Re: remarques

        Posté par  . Évalué à 7.

        http://adzhosts.free.fr/ c'est génial : "Ce site est compatible uniquement avec Internet Explorer et Netscape Communicator" (librement traduit de l'anglais, je suis sous Konqueror) en alerte javascript, page blanche ensuite.
      • [^] # Re: remarques

        Posté par  (site web personnel) . Évalué à 0.

        Le lien est [www.adzhosts.com], pardon pour l'erreur.
      • [^] # Re: remarques

        Posté par  . Évalué à 2.

        Bind ton serveur web sur ton @ip. (ip publique si en direct, ip LAN si sur un LAN).
    • [^] # Re: remarques

      Posté par  . Évalué à 4.

      si un serveur web (qui écoute la boucle locale, le cas par défaut également, c'est quand même bien pratique) tourne sur la bécane sur laquelle on aura renseigné le fichier /etc/hosts selon adzhosts.fr comme suggéré dans l'article, celui-ci va mouliner inutilement, ralentissant le chargement de la page d'autant, voire renvoyant des erreurs dans le cas d'iframes ou autre, ce qui pour le coup est contre-productif.
      Effectivement. Il serait peut-être plus intéressant qu'adzhosts renvoie vers 127.0.0.2 par exemple. Ou plustôt vers 127.254.254.254. Ou même que ce soit paramétrable :-)
      • [^] # Re: remarques

        Posté par  (site web personnel) . Évalué à 1.

        Par défaut, il serait donc plus acceptable de mettre 127.254.254.254 ?
        Je modifierai le script pour prendre cette IP par défaut, et ajouterai une variable pour ceux qui souhaitent en mettre une autre.
        • [^] # Re: remarques

          Posté par  . Évalué à 0.

          Ça risque de faire du trafic inutile sur le réseau.

          Envoyé depuis mon lapin.

          • [^] # Re: remarques

            Posté par  . Évalué à 2.

            … j'ai confondu 127.254.254.254 et 192.254.254.254

            Envoyé depuis mon lapin.

        • [^] # Re: remarques

          Posté par  . Évalué à 2.

          Pas forcément plus acceptable.
          127.x.y.z est réservé par la norme pour être la "boucle locale". En gros l'interface réseau virtuelle qui pointe vers la machine elle-même.

          La plupart du temps, tout le monde utilise 127.0.0.1 lorsqu'il y a besoin de passer par l'interface locale. Mais rien n'interdit d'utiliser n'importe quelle autre adresse. C'est ce que je fais généralement. Je prends 127.0.1.1 127.0.1.2 ect

          Alors autre chose que 127.0.0.1 est probablement une bonne idée.
          127.254.254.254 me semble tranquille :-)
          • [^] # Re: remarques

            Posté par  (site web personnel) . Évalué à 1.

            Sinon, 0.0.0.0 ne serait-il pas préférable ?
            • [^] # Re: remarques

              Posté par  . Évalué à 3.

              En théorie ... non. C'est non-défini, donc ça peut aller ou ça veut. Y compris là ou tu ne veut pas ;)

              En pratique, sous linux, 0.0.0.0 représente une de tes adresses locales : 127.0.0.1 ou une autre. donc entre 0.0.0.0 et 127.0.0.1, c'est kifkif.
              • [^] # Re: remarques

                Posté par  . Évalué à 2.

                C'est normalement pas tout à fait vrai, d'après la RFC 3330. 127.0.0.0/8, c'est ta boucle locale, alors que 0.0.0.0, c'est ton réseau local, quelqu'il soit.
      • [^] # Re: remarques

        Posté par  . Évalué à 0.

        Hormis pour la du dev, je vois pas l'intérêt de binder ton apache sur *:80. Et si tu fais du dev, ben tu déclare proprement ton vhost en 127.0.0.1:80 avec les logs qui vont acces/error qui faut, comme ça tu pourrit pas le reste de tes sites. Sinon, tu le bind sur l'ip qui répondra aux client qui se présente. Un petit effort de conf n'a jamais fais de mal à personne.

        Pour moi 127.0.0.1 est fait pour ça. Aucun intérêt de mettre autre chose, si ce n'est se compliquer la vie inutilement.
    • [^] # Re: remarques

      Posté par  . Évalué à 3.

      J'ajouterais que l'article site les avantages mais aucun inconvénient à ce système.
      Le premier est que contrairement à un système de filtrage centralisé, c'est beaucoup plus compliqué à maintenir. Il faut déployer la mise à jour sur chaque ordinateur. Si l'un d'eux n'est pas à jour, il y a un trou.

      Ensuite concernant le filtrage de sites bannis (cul), si l'utilisateur à la main dessus (certains utilisateurs on besoin d'être admin de leur machines) ça ne sert un peu à rien. Certes Mme Michu ne sait pas ce qu'est le fichier host mais M. Grospervers lui sait probablement.
      • [^] # Re: remarques

        Posté par  (Mastodon) . Évalué à 2.

        >(certains utilisateurs on besoin d'être admin de leur machines) ça ne sert un peu à rien.
        Cela ne veux pas dire qu'ils vont pouvoir, avoir droit pour, écrire dans host*
      • [^] # Re: remarques

        Posté par  (site web personnel) . Évalué à 1.

        En fait l'article n'est pas prévu pour décrire les avantages/inconvénients du fichier hosts pour un parc informatique.
        À la base, il est destiné aux utilisateurs lambda, donc 2 machines tout au plus.
        • [^] # Re: remarques

          Posté par  . Évalué à 4.

          Est-ce qu'il y a tant d'utilisateur lambda sur dlfp ? je veux dire au point de pas connaitre /etc/hosts ?

          Même si cet article est relativement bien écrit et didactique, j'ai du mal a voir pour qui il est destiné. dslé
        • [^] # Re: remarques

          Posté par  . Évalué à 1.

          ... et puis en cas de proxy d'entreprise, le fichier host n'est même pas utilisé par le navigateur, si celui-ci est configuré pour utiliser le proxy.
          • [^] # Re: remarques

            Posté par  . Évalué à 1.

            T'es sur de ça ? Au boulot j'ai déjà eu à ajouter des lignes dans mon host, afin qu'un AGL fonctionne correctement (paramétré pour discuter avec le serveur machin, qui n'était pas déclaré dans un DNS).
          • [^] # Re: remarques

            Posté par  . Évalué à 1.

            Si dans ta configuration de proxy tu indiques des exceptions, pour lesquelles il ne faut pas l'utiliser, sous forme d'adresses IP, ton navigateur est obligé de faire des résolutions de noms.
  • # oups

    Posté par  . Évalué à 1.

    euh... techniquement, et contrairement à ce que l'article peut laisser penser, ce n'est pas l'application qui fait la résolution de nom. Elle se contente d'utiliser un appel système qui va, éventuellement et selon la configuration du système, aller vérifier dans le fichiers hosts comment se résout une adresse IP ou un nom d'hôte.
    • [^] # Re: oups

      Posté par  (site web personnel) . Évalué à 10.

      Non, il n'existe pas d'appel système pour faire de la résolution de noms. Les applications font généralement appel à la libc pour ça, mais dans certains cas assez rares, l'application fait elle-même la résolution de nom à sa sauce (en ignorant alors les fichiers /etc/hosts et /etc/resolv.conf).
      • [^] # Re: oups

        Posté par  (site web personnel, Mastodon) . Évalué à -3.

        man gethostbyname

        C'est un appel POSIX, on peut donc l'assimiler au système. Et ça ne fait pas partie de la libc. La libc c'est la norme ANSI, pas POSIX.

        Ceci dit, l'application ne devrait pas faire la résolution de nom à sa sauce, mais toujours demander au système une correspondance. Dans le cas contraire, on va commencer à s'arracher les cheveux sur des conflits de configuration.
        • [^] # Re: oups

          Posté par  . Évalué à 10.

          C'est un appel POSIX, on peut donc l'assimiler au système. Et ça ne fait pas partie de la libc. La libc c'est la norme ANSI, pas POSIX.
          Mais bien sur, http://www.gnu.org/software/libc/ :
          The history of Unix and various standards determine much of the interface of the C library. In general the GNU C library supports the ISO C and POSIX standards.

          Et puis man gethostbyname est dans la section 3 (Appels de bibliothèque) pas dans la section 2 (système). cf man man.
        • [^] # Re: oups

          Posté par  (site web personnel) . Évalué à 6.

          C'est un appel POSIX, on peut donc l'assimiler au système.

          Un appel système, c'est utilisé pour passer de l'espace utilisateur à l'espace noyau, je ne pense pas que ce soit le noyau qui implémente la résolution de nom.

          La libc c'est la norme ANSI, pas POSIX.

          Extrait de Glibc : « En plus de fournir toutes les fonctionnalités requises par Unix98, Single UNIX Specification, POSIX (1c, 1d, et 1j) […] ».
    • [^] # Re: oups

      Posté par  (site web personnel) . Évalué à 1.

      Ah oui, bien vu !
      Petite erreur de ma part, merci.
  • # Et si possible

    Posté par  . Évalué à 7.

    Faire le filtrage dns contre les pubs directement sur la passerelle avec dnsmasq par exemple. Comme ça pas besoin d'extensions/de configuration sur les navigateurs, et les petits malins auront plus de mal à passer au travers.
  • # démarche presque similaire

    Posté par  . Évalué à 3.

    Dans pas mal de cas, on peut faire reposer le filtrage par un serveur DNS : babioles wifi sans fichiers hosts, déploiement, mise à jour, grand parc domestique, mécanisme de wildcards ( *.intellitxt.com ).

    Pour les listes à jour j'utilise 3 sources:
    Adserver de pgl.yoyo.org
    les listes adblockplus qui ont le bon goût d'être adaptées à un public localisé
    un petit script sans prétention qui cherche des patterns particuliers dans les noms de domaine non résolus en interne - donc transmises au dns du dessus.

    Le fichier hosts à pour mérite d'être instantanément opérationnel mais réserve son lot de surprises parfois.
  • # Développement

    Posté par  (site web personnel) . Évalué à 7.

    Je me sers du fichier hosts pour développer.

    Dans hosts :
    127.0.0.1 www.monsite-dev.fr

    Et un virtualhost apache (ou nginx ou...) qui va bien :
    Virtualhost 127.0.0.1:80 {
    ServerName www.monsite-dev.fr
    ...
    }

    Et c'est parti comme en prod.

    Pq développer et afficher dans un sous répertoire genre http://localhost/monsite/ c'est pas glorieux, ça fout en l'air la réécriture d'url, les cookies et j'en passe...
  • # Fausse bonne idée

    Posté par  . Évalué à 10.

    J'ai cru un moment que c'était une blague mais non.
    Cela devrait pourtant sauter aux yeux que le combat est perdu d'avance, que le remède est pire que le mal : c'est tout simplement impossible à maintenir !
    D'ailleurs la preuve, j'ai pris plusieurs adresses dans chacunes des listes et la majorité ne sont plus à jour : hosts down, domaines rachetés, redirigés, contenu changé, etc.
    Cela prouve que le net bouge très rapidement, et aussi qu'un certain niveau de nettoyage s'opère aussi.
    Bref l'intérêt d'une telle protection est très très limitée et plutôt source d'ennui.

    En plus, j'ai un doute sur les performances, j'imagine que certains clients un peu poussifs pourraient mettre beaucoup de temps à parser le fichier, plus qu'à faire une requête DNS en tous cas.

    Et puis Adblock remplit très bien son rôle en se focalisant sur la pub, peut se mettre à jour et se configurer facilement...
    • [^] # Re: Fausse bonne idée

      Posté par  . Évalué à 9.

      En plus, j'ai un doute sur les performances, j'imagine que certains clients un peu poussifs pourraient mettre beaucoup de temps à parser le fichier, plus qu'à faire une requête DNS en tous cas.
      Je confirme que la lecture de ce fichier, à partir d'un nombre conséquent d'entrées (plus d'un million), devient proprement calamiteuse. C'est ce qui m'a fait abandonner ce système.
      De plus, rediriger vers 127.0.0.1 fait que si vous utilisez pour du développement un serveur Web, vous aurez droit à un certain nombre de "blagues" sous forme de requêtes inutiles qui apparaîtront...
      Perso, je redirige certains vrais gêneurs vers ::dead, sinon le reste est filtré par noscript + adblock... J'ai notamment la ligne suivante :

      ::dead facebook.com fbcdn.net www.facebook.com graph.facebook.com

      Mais un fichier hosts de plusieurs centaines milliers de lignes, faut pas déconner, c'est mauvais pour certaines applis (à l'époque, je ne sais plus quel client jabber c'était qui ne supportait vraiment pas ça)
      • [^] # Re: Fausse bonne idée

        Posté par  . Évalué à 5.

        Je plussois (pardon orthographe et grammaire) les deux derniers commentaires,

        C'est également un retour en arrière depuis la RFC 1034 (novembre 1987 ça ne rajeunira personne...)...

        Imaginer que l'utilisation d'une base centralisée sera plus performant qu'une base décentralisée ! J'aimerais mesurer la taille du bond que ferait Benjamin Bayard devant cette idée présenté comme une "solution d'avenir"...

        "Hé les gars j'ai un super projet, pour filtrer tout les spams YAKA faire un seul serveur SMTP par lequel passerait tout les mails et dedans YAKA mettre toute les règles de filtrage!"
        C'est du même ordre...

        "Ceux qui sont près à perdre un peu de liberté pour gagner un peu de sécurité, ne mérite ni l'une ni l'autre, et finiront par perdre les deux." Benjamin Franklin, père fondateur de nation et observateur attentif de serpents.

        "Gentoo" is an ancient african word, meaning "Read the F*ckin' Manual". "Gentoo" also means "I am what I am because you all are freaky n3rdz"

    • [^] # Re: Fausse bonne idée

      Posté par  . Évalué à 10.

      J'ai eu un peu le même sentiment : "c'est une blague".
      On dirait un article de quelqu'un qui découvre l'utilisation du fichier hosts, qui trouve ça formidable et qui se dit qui devrait partager sa découverte avec tout le monde en partageant son énorme fichier hosts.

      Ce n'est ni bon pour le particulier, ni pour un entreprise (si petite soit elle) pour toute les raisons déjà relevée.

      Comment une dépêche comme ça a pu passer, sérieusement ?
      • [^] # Re: Fausse bonne idée

        Posté par  (site web personnel) . Évalué à 1.

        pareil, moi aussi.

        et je me suis dit après avoir cliquer sur le lien du pdf qu'il s'agissait en fait d'un pdf vérolé et que je m'étais fait "hacké"...

        parec que ça semble vraiement trop neuneu pour être vrai c't histoire
        • [^] # Re: Fausse bonne idée

          Posté par  . Évalué à 4.

          Heureusement que maître Postel n'est plus, parce qu'il s'étoufferait avec son martini... Le fichier host, comment dire.... Avantageusement remplacé par DNS pour éviter tous les problèmes de duplication, de gestion par FTP, de non centralisation.

          Honnêtement, mis à part pour certains cas de cluster avec de la très haute disponibilité, ne pouvant pas s'appuyer sur une architecture autre ou alors dans le cadre de systèmes propriétaires, sinon, ça doit bien faire vingt ans que tous les manuels scolaires doivent déconseiller l'emploi de ce fichier, si ce n'est dans un but pédagogique, de facilité ou d'emploi spécifique.

          C'est une bonne entrée en matière pour expliquer à quoi sert le fichier host, mais maintenant, il faut aller se coltiner les RFCs 1034 et 1035 pour aller un poil plus loin.

          Courage, DNSsec n'est plus très loin :)
          • [^] # Re: Fausse bonne idée

            Posté par  (Mastodon) . Évalué à 2.

            Le fichier host, comment dire....

            Pour filtrer les vingt serveurs de publicité fournissant les trente sites que tu consultes régulièrement, c'est quand même la meilleure solution.
    • [^] # Re: Fausse bonne idée

      Posté par  (site web personnel) . Évalué à -2.

      Hm je prends une paire de claques là.

      Peut être n'ai-je pas pris assez de recul avant d'écrire cet article, dépassé le fichier hosts ?
      Pour vous certainement, moi ça me convient parfaitement...
      • [^] # Re: Fausse bonne idée

        Posté par  . Évalué à 4.

        dépassé le fichier hosts ? Pour vous certainement, moi ça me convient parfaitement
        Voilà qui résume parfaitement :-)
        Tout comme Ubuntu sainul, utilisez Debian. Chacun fait comme ça lui chante.

        Reste qu'un bon cache DNS des familles (avec serveur DNS inclus histoire de mettre les sites bloqués dedans), y compris en local, y'a que ça de vrai. Mais c'est _un_peu_ plus compliqué (pas tant que ça en fait).
        • [^] # Re: Fausse bonne idée

          Posté par  . Évalué à 2.

          >Mais c'est _un_peu_ plus compliqué (pas tant que ça en fait).

          Ce qui est surtout impressionnant, c'est que c'est pas graphique avec dnsmasq, le cache dns que j'utilise. Mais sinon, niveau intellectuel, j'ai réussi à m'en sortir quand même :) Je trouve ce logiciel très bien conçu et simple à configurer pour l'usage que j'en ai.
      • [^] # Re: Fausse bonne idée

        Posté par  . Évalué à 0.

        Le minimum c'est de connaître l'histoire du fichier Host, l'apparition du DNS qui remonte à 1987 (oui oui goldorak, récré A2, toussa...), l'amélioration qu'apporte TOUJOURS la décentralisation au fonctionnement du réseau, et deux trois choses sur TCP/IP (toujours bon de savoir de quoi on parle).

        Quand tu auras pris connaissance de tout cela tu pourras parler de recul (piiip! piiip! piiip!).

        "Gentoo" is an ancient african word, meaning "Read the F*ckin' Manual". "Gentoo" also means "I am what I am because you all are freaky n3rdz"

        • [^] # Re: Fausse bonne idée

          Posté par  . Évalué à 4.

          l'apparition du DNS qui remonte à 1987 (oui oui goldorak, récré A2, toussa...)

          Heu, goldorak dans récréA2, c'est pas 1987, mais plutôt 1978...
          • [^] # Re: Fausse bonne idée

            Posté par  . Évalué à 1.

            Hé non 1978 c'était l'île aux enfants il a fallu attendre les années 80 pour avoir récréA2...

            "Gentoo" is an ancient african word, meaning "Read the F*ckin' Manual". "Gentoo" also means "I am what I am because you all are freaky n3rdz"

  • # Attention aux effets de bords !

    Posté par  (site web personnel) . Évalué à 3.

    Un ami a un jour installé un tel fichier /etc/hosts, d'une taille d'environ 70Ko. Quelques moins plus tard, il me contacte pour me dire que son pidgin (client XMPP) ne marche pas, et qu'il crashait à chaque démarrage.

    A grand coup de "strace", j'ai analysé ce que faisait son pidgin, en comparant au même soft installé sur ma machine (nos deux machines avaient la même distribution, et le même niveau de mise à jour).

    Finalement, il s'est avéré que pidgin plantait à cause de ce fichier /etc/hosts trop gros. En le remplaçant par un fichier plus simple (1 ligne), les crash ont disparus.

    Bref, pour moi les conséquences sur les applis de l'utilisation d'une telle méthode de filtrage ne sont pas forcément anodines.
    • [^] # Re: Attention aux effets de bords !

      Posté par  . Évalué à 10.

      En même temps, un logiciel qui crash à cause d'un fichier host trop gros, ça ne me semble pas normal non plus.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: Attention aux effets de bords !

        Posté par  (site web personnel) . Évalué à 4.

        Bien d'accord avec toi....
        Olivier as tu payé ton report de bug ?

        Fuse : j'en Use et Abuse !

        • [^] # Re: Attention aux effets de bords !

          Posté par  (site web personnel) . Évalué à 2.

          Je ne suis pas sûr de comprendre la question.

          Si c'est de savoir si j'ai écris un rapport de bug, non je ne m'en suis pas donné la peine. C'était en 2006 cette histoire-là...

          Je viens de refaire le test sur ma Debian Squeeze/Testing, avec le fichier host de l'époque, et le problème n'apparaît plus. Je suppose que cela a été réglé à un moment ou un autre.
      • [^] # Re: Attention aux effets de bords !

        Posté par  (site web personnel) . Évalué à 3.

        Bien d'accord avec toi.

        Mais comme les softs ne vont généralement pas interroger directement le /etc/hosts, mais passent par des librairies communes pour le faire (libc ?), si crash il y a, c'est la responsabilité de ces librairies-là.

        Après, il est possible que Pidgin crashait suite à un code d'erreur que la librairie lui remontait, et qu'il ne comprenait pas (parce que, par exemple, non codé dans le soft).
  • # Article complet sur le filtrage de pub.

    Posté par  . Évalué à 2.

    http://geekfault.org/2010/04/24/dns-menteur/

    THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

  • # indispensable

    Posté par  . Évalué à -8.

    Quel plaisir ce "petit" fichier Hosts !
    Quel bonheur de pouvoir enfin surfer sur le web sans croiser une seule publicité !
    Forcément, la navigation est plus rapide, plus fluide, plus mieux !
    Ce petit programme est incroyablement bien fichu, clair, et pratique.
    J'adore ! Félicitation aux concepteurs qui ont entrés un gros paquet d'url a bloquer ! (plus de 7500 lignes, chaque ligne comprenant plusieurs url )
    Un sacré boulot de fait, je tire mon béret.

    Testez-le d'urgence, le programme demande votre accord pour télécharger le nouveau fichier hosts, et le glisse d'abord dans votre dossier personnel avant de vous demander si oui ou non vous le voulez en lieu et place du hosts original. Ce qui vous permet de contrôler les entrées contenues, le temps de vérifier qu'il n'y a pas d'embrouille.

    INDISPENSABLE !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.