notsocomplicated | scratch your head

Vérifions un fichier /etc/hosts

AdZHosts distribue un fichier hosts de plus de 8000 lignes, contenant plus de 70000 URL douteuses ou inutiles, dont des régies publicitaires, des sites de statistiques, etc.

C’est très pratique à l’usage, car contrairement à une extension du genre Adblock, le contenu indésirable n’est pas chargé, puisqu’on redirige la requête vers la machine locale. Il y a un seul inconvénient, c’est que la personne qui fabrique et distribue ce fichier hosts peut être malveillante. En l’occurrence, en ce qui concerne AdZHosts, ça n’a pas l’air d’être le cas, mais restons vigilants (: Il est tout à fait possible qu’une personne malveillante glisse une ligne de ce genre au beau milieu du fichier :

12.34.56.78 www.ma-banque.fr

Que se passe-t’il alors ? Lorsque j’essaie de me connecter à www.ma-banque.fr, je me connecte en fait à l’IP 12.34.56.78, laquelle peut héberger un site identique à celui que j’ai demandé, mais qui en fait me vole mes identifiants. Cela s’appelle du phishing.

Nous allons vérifier qu’aucune vilaine ligne n’est présente. La vérification est très simple à faire :

~$ grep -nv '^127.0.0.1' /etc/hosts

Cette commande ne doit pas retourner de lignes inconnues de vous. Elle parcourt le fichier /etc/hosts, et renvoie toutes les lignes qui ne commencent pas par 127.0.0.1, potentiellement dangereuses, précédées de leur numéro de ligne. Chez moi, cela donne :

2:127.0.1.1    mamachine
3:
4:# The following lines are desirable for IPv6 capable hosts
5:::1     localhost ip6-localhost ip6-loopback
6:fe00::0 ip6-localnet
7:ff00::0 ip6-mcastprefix
8:ff02::1 ip6-allnodes
9:ff02::2 ip6-allrouters
10:ff02::3 ip6-allhosts
11:
12:#
13:# AdZHosts v0045
14:

Quelques lignes vides, des commentaires, des adresses de loopback : tout va bien. On remarque tout de même que la commande a trouvé ::1, qui est l’équivalent de 127.0.0.1 en IPv6.

On peut raffiner un poil cette commande, pour qu’elle prenne en compte les adresses en IPv6, qu’elle exclue les lignes vides et les commentaires :

~$ egrep -nv '^127.0.0.1|^::1|^$|^#|' /etc/hosts

Ce qui retourne maintenant :

2:127.0.1.1    mamachine
6:fe00::0 ip6-localnet
7:ff00::0 ip6-mcastprefix
8:ff02::1 ip6-allnodes
9:ff02::2 ip6-allrouters
10:ff02::3 ip6-allhosts

Voilà ! À partir de maintenant, si j’utilise un fichier hosts provenant d’une source non-sûre (c’est-à-dire pas moi), elle passera à la moulinette de cette commande.

Cet article part d’une question formulée sur ce forum, et la commande qui en résulte a été améliorée à partir des scripts présents sur cette même page.

Ecrire un commentaire

*

XHTML: Vous pouvez utiliser ces balises: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

:~#