Le fichier /etc/hosts contre les indésirables

Le contenu de l’article qu’on va lire est adapté aux systèmes UNIX et GNU/Linux. Pour autant, la même stratégie est applicable à d’autres systèmes propriétaires (Ah… comme je suis généreux, n’est-ce pas ?). Voir les explications sur le site Block Adverts (Qu’est-ce qu’il est gentil le monsieur !). Merci à louiz’ de m’avoir indiqué cette piste lumineuse. Cette méthode est plus radicale mais aussi plus générale que l’utilisation de l’extension Adblock Plus : elle s’applique à toute connexion sur le réseau, quels que soient l’utilisateur et le logiciel utilisé.

Qu’est-ce le fichier /etc/hosts/ ?

Tout ordinateur connecté à un réseau possède une adresse IP (Internet Protocol) qui lui permet de dialoguer avec un autre ordinateur. Une sorte d’adresse postale. Cet adressage IP est employé, par exemple, pour envoyer ou recevoir des mails (protocoles SMTP/POP), établir une connexion à distance (protocole Telnet) ou consulter un site Web (protocole HTTP).

Cette adresse IP sert de base à toute communication informatique. Elle est unique (pour ce qui est des adresses publiques). Elle est représentée, en décimal, par quatre nombres séparés par des points : 192.168.3.198 en est un exemple. Dans une communication entre deux ordinateurs, chacun doit connaître l’adresse IP de l’autre. Pour connaître votre adresse IP sous GNU/Linux : ifconfig.

Pour l’utilisateur, mémoriser les numéros IP des différents serveurs qu’il sollicite est fastidieux sinon impossible. C’est pourquoi, on traduit généralement chaque adresse IP en lui attribuant un nom (voir l’article “Résolution de noms“) : ainsi, www.hooseek.com est la traduction de la représentation décimale 91.121.135.22. Ces adresses nommées sont d’autant plus faciles à retenir qu’elles contiennent des indications sur l’organisation, le service (par exemple, www = World Wide Web) ou l’origine géographique (par exemple, fr = France).

ping -c 5 www.framasoft.net
PING node22.cur-archamps.fr (195.202.0.36) 56(84) bytes of data.
64 bytes from 195.202.0.36: icmp_seq=1 ttl=49 time=621 ms
64 bytes from node22.cur-archamps.fr (195.202.0.36): icmp_seq=2 ttl=49 time=626 ms
64 bytes from node22.cur-archamps.fr (195.202.0.36): icmp_seq=3 ttl=49 time=611 ms
64 bytes from node22.cur-archamps.fr (195.202.0.36): icmp_seq=4 ttl=49 time=645 ms
64 bytes from node22.cur-archamps.fr (195.202.0.36): icmp_seq=5 ttl=49 time=614 ms


--- node22.cur-archamps.fr ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 23684ms
rtt min/avg/max/mdev = 611.849/623.891/645.791/12.107 ms

Remarquez que l’adressage nommé n’aide en rien les ordinateurs qui n’utilisent que les numéros IP. De fait, une table de correspondance entre les noms et les adresses IP est alors nécessaire pour permettre à l’ordinateur initiant la communication de trouver le numéro de son correspondant à partir du nom renseigné. C’est précisément le rôle du fichier /etc/hosts dans les systèmes UNIX et GNU/Linux. Chaque ligne de ce fichier donne la correspondance entre un numéro IP et une adresse nommée. Les lignes commençant par le caractère # sont des commentaires ; elles ne comptent pas.

Attention ! La première ligne, indépendamment des commentaires, est toujours l’adresse privée de l’ordinateur. Cette adresse est toujours la même. Chaque ordinateur la possède. Pour plus d’explications sur le contenu /etc/hosts (avant les modifications proposées dans la suite), reportez-vous à l’article “Localhost“.

##### Extrait de mon fichier /etc/hosts #####
# Cette ligne, comme la précédente, ne compte pas !
127.0.0.1 localhost # Ne pas changer cette ligne !

# Normalement, votre fichier doit aussi contenir cette ligne :

127.0.1.1 nom_de_votre_machine # Ne pas changer cette ligne !

# Si votre fichier contient d’autres lignes, n’y touchez pas !
# Contentez-vous de coller la liste des sites bloqués à la suite,
# précédée éventuellement d’un commentaire personnel.

C’est le protocole DNS (Domain Name Service) qui est en charge d’établir la correspondance entre un nom et son adresse IP, quel que soit l’endroit où se trouve la machine (cours technique très complet sur le DNS ; celui de sebsauvage.net est beaucoup plus accessible au débutant).

Le filtrage des indésirables

Le fichier /etc/hosts permet de filtrer l’accès à certains sites indésirables. La méthode est très simple : en attribuant à un site (distant) une adresse locale (127.0.0.1) voire aucune adresse (0.0.0.0, ou tout simplement, 0), l’adresse nommée est tout bonnement bloquée, l’accès au site impossible.

Par exemple, pour bloquer le service d’analyses statistiques de Google (extrêmement gourmand), google-analytics.com, il suffit d’ajouter, dans le fichier /etc/hosts, l’une des deux lignes suivantes :

127.0.0.1 google-analytics.com
0.0.0.0 google-analytics.com

Voici ce que contient mon fichier /etc/hosts pour Google Inc. :

# Google Inc
127.0.0.1 #gdata.youtube.com
127.0.0.1 #gmodules.com
127.0.0.1 ad.directaclick.com
127.0.0.1 adservices.google.com
127.0.0.1 adwords.google.com
127.0.0.1 csi.gstatic.com
127.0.0.1 desktop.google.com
127.0.0.1 domains.googlesyndication.com
127.0.0.1 feedads.googleadservices.com
127.0.0.1 gacollector.l.google.com
127.0.0.1 gadgetads.googlecode.com
127.0.0.1 google-analytics.com
127.0.0.1 googlesyndication.com
127.0.0.1 imageads.googleadservices.com
127.0.0.1 imageads1.googleadservices.com
127.0.0.1 imageads2.googleadservices.com
127.0.0.1 imageads3.googleadservices.com
127.0.0.1 imageads4.googleadservices.com
127.0.0.1 imageads5.googleadservices.com
127.0.0.1 imageads6.googleadservices.com
127.0.0.1 imageads7.googleadservices.com
127.0.0.1 imageads8.googleadservices.com
127.0.0.1 imageads9.googleadservices.com
127.0.0.1 pagead.googlesyndication.com
127.0.0.1 pagead2.googlesyndication.com
127.0.0.1 partner.googleadservices.com
127.0.0.1 servedby.adxpower.com
127.0.0.1 service.urchin.com
127.0.0.1 ssl.google-analytics.com
127.0.0.1 toolbarqueries.google.co.uk
127.0.0.1 toolbarqueries.google.com
127.0.0.1 toolbarqueries.google.com
127.0.0.1 toolbarqueries.google.com
127.0.0.1 toolbarqueries.google.com
127.0.0.1 toolbarqueries.google.de
127.0.0.1 toolbarqueries.google.es
127.0.0.1 toolbarqueries.google.fr
127.0.0.1 toolbarqueries.l.google.com
127.0.0.1 video-stats.l.google.com
127.0.0.1 video-stats.video.google.com
127.0.0.1 webaccelerator.google.com
127.0.0.1 www.adwords.google.com
127.0.0.1 www.appliedsemantics.com
127.0.0.1 www.google-analytics.com
127.0.0.1 www.googleadservices.com
127.0.0.1 www.googleimageads.com

Grâce à ce fichier /etc/hosts, ce sont près de 90 000 sites indésirables qui se trouvent bloqués : les google, ads, porn, risk, spam, track…

Mise en place du nouveau fichier /etc/hosts

Commençons par une sauvegarde du fichier /etc/hosts. Dans un terminal administrateur, tapez :

cp /etc/hosts /etc/hosts.bak

En cas de problème, pour remettre en place le fichier original, il suffit de passer la même commande en inversant les arguments :

cp /etc/hosts.bak /etc/hosts

Ensuite, téléchargez l’archive contenant le fichier hosts : hosts.tar.bz2. Décompressez-la, par exemple, sur votre bureau (Desktop).

Éditez votre fichier /etc/hosts depuis un terminal administrateur :

gedit /etc/hosts

Éditez le fichier hosts que vous avez téléchargé puis copiez/collez la très longue liste d’adresses bloquées dans votre fichier /etc/hosts. Enregistrez. Fermez le /etc/hosts. C’est tout.

Rappelez-vous que vous utilisez sur un système d’exploitation moderne : nul besoin de redémarrer votre machine. Normalement, les modifications seront prises en compte sans relancer votre navigateur Internet.

À propos du fichier /etc/hosts disponible ici

Depuis que j’ai modifié mon propre fichier /etc/hosts, je peux naviguer sans lourdeur sur le site de Philippe Scoffoni ;-) par exemple.

Par contre, et je n’avais pas fait le lien avec cette modification jusqu’à ce que Jean-Claude (merci l’ami) me renvoie le résultat de son ping, je ne parvenais plus à me connecter sur Framasoft… Je ne comprenais pas le problème. J’ai même envoyé un mail à aKa pour lui demander si Framasoft n’avait pas un souci. Mail qu’il a superbement ignoré. Merci.

En même temps, comme j’ai honteusement profité d’une discussion (liste Éducation de l’AFUL) sur Fesse2bouc, sujet sur lequel nous n’étions clairement pas du même avis [comment peut-on défendre le Libre et inciter les gens à utiliser un service avec une licence pareille ?], je peux comprendre qu’il n’ait daigné me répondre. D’autant que le souci venait de chez moi… Mille excuses.

En fait, c’est un peu plus subtile… Un petit malin a glissé l’adresse du site Framasoft dans le fichier Hosts téléchargeable sur Hostsfile.mine.nu !

Le fichier hosts contenu dans l’archive téléchargeable ici a donc été modifié de manière à rendre sa respectabilité à Framasoft, entre autres.

PS : Le voilà Stéphane le tuto que tu me réclamais à corps et à cris !


À propos de cet article