[Mémo] Maîtrisez la puissance du fichier hosts sous Windows

Mission_accomplished.1920x1200

En ce moment je suis en train de mettre en place différents services web en auto-hébergement chez moi et j’ai décidé de créer des sous-domaines de guilaume-leduc.fr pour y accéder (cloud.guillaume-leduc.fr par exemple pour mon instance personnelle ownCloud). Oui mais voilà, ces services sont hébergés chez moi, sur mon serveur, et lorsque je tente d’y accéder via mon réseau local, je tombe sur la page d’accueil de ma neufbox, qui est incapable de gérer le loopback…

Plutôt que de m’embêter à paramétrer des entrées DNS sur ma box, j’ai préféré personnaliser un fichier très important et très puissant sous Windows : le fichier hosts. L’occasion donc, d’en faire un petit mémo.

Le fichier hosts, qu’est ce que c’est ?

C’est un fichier situé dans C:\Windows\System32\drivers\etc (ou %windir%\system32\drivers\etc\hosts pour les intimes), et qui ressemble fortement aux pages jaunes, sauf qu’à la place d’avoir des combinaisons numéro de téléphone > personne, nous avons des combinaisons adresses IP > noms de domaine.

Voici à quoi ressemble ce fichier, par défaut :

# Copyright (c) 1993-1999 Microsoft Corp.
#
# Ceci est un exemple de fichier HOSTS utilisé par Microsoft TCP/IP
# pour Windows.
#
# Ce fichier contient les correspondances des adresses IP aux noms d'hôtes.
# Chaque entrée doit être sur une ligne propre. L'adresse IP doit être placée
# dans la première colonne, suivie par le nom d'hôte correspondant. L'adresse
# IP et le nom d'hôte doivent être séparés par au moins un espace.
#
# De plus, des commentaires (tels que celui-ci) peuvent être insérés sur des
# lignes propres ou après le nom d'ordinateur. Ils sont indiqué par le
# symbole '#'.
#
# Par exemple :
#
# 102.54.94.97 rhino.acme.com # serveur source
# 38.25.63.10 x.acme.com # hôte client x

127.0.0.1 localhost
127.0.0.1 untrue.com

Vous l’aurez compris le fichier hosts se comporte comme un DNS vis à vis de Windows, qui l’utilisera par ailleurs en priorité par rapport à un serveur DNS. Ainsi, il devient très simple de personnaliser des entrées à travers ce fichier afin, par exemple, de bloquer une liste de sites potentiellement dangereux en redirigeant leur nom vers notre machine.

Exemple

Imaginez que j’ajoute cette ligne à la fin de mon fichier :

127.0.0.1 guillaume-leduc.fr

A chaque fois que je taperai « guillaume-leduc.fr » dans mon navigateur préféré, Windows interrogera en premier lieu ce fichier hosts pour savoir s’il est déjà enregistré et, comme c’est le cas, me redirigera vers l’IP 127.0.0.1, qui correspond à la machine locale.

L’intérêt de hosts sur un réseau local

Sur un réseau local comme celui de mon domicile (qui contient au plus 5 ou 6 périphériques réseau), le fichier hosts devient très pratique par rapport à un service DNS. Dans mon cas, je souhaitais pouvoir accéder à mes services web (hébergés chez moi) depuis chez moi sans avoir à passer par le net (car la neufbox ne gère pas le loopback). J’ai donc attribué une adresse ip fixe à mon serveur et complété le fichier hosts comme ceci :

# IP du serveur      Sous-domaine
  192.168.1.10       cloud.guillaume-leduc.fr
  192.168.1.10       home.guillaume-leduc.fr

# etc...

Du coup, je tombe directement sur mon serveur lorsque j’accède à home.guillaume-leduc.fr ! Mais cela pourrait très bien marcher pour accéder aux autres ordinateurs de ma maison.

La puissance de hosts en matière de sécurité…

Mais là ou ce fichier devient très puissant, c’est en matière de sécurité. En effet, un site malveillant peut être très facilement bloqué grâce à hosts en le complétant, par exemple, de cette manière :

# Mon IP locale   Sites dangereux
  127.0.0.1       www.sitedangereux.com

Je serai automatiquement redirigé vers 127.0.0.1 (moi-même) à chaque tentative d’accès à www.sitedangereux.com. Pas besoin de pare-feu ou d’antivirus lourd pour se protéger efficacement… Des utilitaires très simple existent pour alimenter automatiquement ce fichier et bloquer les sites potentiellement dangereux.

Mon fichier hosts est géré par Spybot Search & Destroy et fait près de 15300 lignes !

A contrario des logiciel malveillant pourraient tenter de modifier ce fichier pour nous rediriger vers de sites dangereux. www.facebook.com pourrait être redirigé vers une copie ou, pensant vous authentifier sur le service, vous fourniriez sans le savoir votre couple identifiant / mot de passe à des personnes mal intentionnées…

… et sur un réseau lent

Et oui, comme Windows consulte hosts avant de consulter un serveur DNS, nous pouvons très bien ajouter les correspondances IP / nom des sites que nous visitons le plus afin de gagner quelques précieuses millisecondes sur un réseau un peu lent !

Les bonnes pratiques pour modifier hosts manuellement

Comme c’est un fichier sensible, hosts nécessite quelques précautions si l’on souhaite le modifier à la main. Je vous propose un exemple pratique : je vais bloquer l’accès à www.google.fr.

Premièrement, je dois être connecté en tant qu’administrateur afin d’autoriser l’accès en écriture sur le fichier (qui est en lecture seulement par défaut).

Décochez la case "Lecture seule"

Décochez la case « Lecture seule »

Pour être édité, le fichier nécessite que l’éditeur utilisé dispose aussi des droits administrateur. Je fais donc Démarrer, je recherche le Bloc-notes. Je l’ouvre avec Clic droit > Exécutez en tant qu’administrateur. Une fois le Bloc-notes lancé, Je peux ouvrir le fichier hosts (Ctrl + O, puis C:\Windows\System32\drivers\etc\hosts) et ajouter la ligne suivante :

127.0.0.1 www.google.fr

J’enregistre (Ctrl + S) et je coche à nouveau la petite case « Lecture seule ». En effet, il est bon de n’autoriser que la lecture sur ce fichier afin d’empêcher que les logiciels malveillant évoqués plus haut ne puissent l’éditer ! Maintenant, si je tente d’accéder à www.google.fr, j’obtiens ceci :

Je ne peux plus atteindre le serveur qui héberge www.google.fr car je suis redirigé vers moi-même, par le fichier hosts !

Je ne peux plus atteindre le serveur qui héberge www.google.fr car je suis redirigé vers moi-même, par le fichier hosts !

Pour terminer, n’oubliez pas ceci lorsque vous réalisez des manips :

  1. Évitez d’effacer la ligne 127.0.0.1 localhost
  2. Séparez TOUJOURS l’adresse IP du nom de domaine par au moins un espace
  3. Laissez une ligne vide à la fin du fichier, sinon votre dernière adresse ne sera pas prise en compte

Ah et j’oubliais pour les amateurs d’interface graphique, Hosts Interface vous permet de réaliser tout ceci via une petite interface. Il permet aussi de restaurer le fichier par défaut en cas d’erreur, ce qui peut être pratique !

Source de l’image : wlppr.com, screenshots sous licence CC BY-NC 3.0

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email