Le fichier hosts de Windows : c’est quoi ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons partir à la découverte du fichier hosts de Windows ! À quoi sert-il ? Pourquoi et comment le modifier ? Est-il nécessaire de le protéger ? Nous allons répondre à ces différentes questions !
II. Le fichier hosts, c'est quoi ?
Sous Windows et Windows Server, le fichier "hosts" est un fichier texte en clair stocké au milieu d'autres fichiers système de Windows. Il agit comme un résolveur DNS local, ce qui signifie que l'on peut utiliser ce fichier pour remplacer ou personnaliser la résolution DNS pour un nom de domaine spécifique, et ce uniquement sur la machine locale.
Dans le même esprit qu'un fichier de zone DNS, même si sa syntaxe est plus simple, le fichier hosts va contenir des enregistrements (un par ligne) afin de déclarer des noms d'hôtes à des adresses IP.
Ce fichier est stocké à l'emplacement suivant :
C:\Windows\System32\drivers\etc\hosts
Par défaut, que ce soit sur un serveur ou un poste de travail, on peut considérer qu'il est vide, car il contient uniquement des commentaires (lignes précédées par un #). Voici un exemple :
Pour ajouter une ligne dans ce fichier, il convient de respecter la syntaxe suivante :
<Adresse IPv4 ou IPv6> <nom d'hôte>
Par exemple pour associer le nom de domaine "exemple.fr" à l'adresse IP "192.168.1.50", on utilisera cette syntaxe :
192.168.1.50 exemple.fr
Grâce à cette modification, ma machine associera l'adresse IP "192.168.1.50" au domaine "exemple.fr" alors que mon serveur DNS m'aurait surement attribué une autre adresse IP (que ce soit le DNS de Google 8.8.8.8, celui de Cloudflare 1.1.1.1, ou encore celui d'un FAI). Mais, pourquoi effectuer une telle modification ? Et surtout comment modifier ce fichier ?
Note : sous Linux, il y a un fichier similaire que vous pouvez retrouver à l'emplacement "/etc/hosts" sur les différentes distributions. Sous macOS, c'est le même fichier que sous Linux.
III. Pourquoi et comment modifier le fichier hosts ?
Il peut s'avérer utile de modifier le fichier hosts de sa machine pour "simuler" un changement DNS, sans altérer l'enregistrement DNS en production. C'est utile en phase de migration. Par exemple, vous souhaitez migrer le site Web "exemple.fr" d'un serveur A vers un serveur B, où chaque serveur à son adresse IP publique. Si vous voulez tester le site Web "exemple.fr" sur le serveur B sans modifier l'enregistrement DNS de la zone "exemple.fr", vous pouvez modifier le fichier hosts de votre machine.
Ainsi, votre machine, et uniquement elle, pointera vers le serveur B alors que les visiteurs habituels continueront d'accéder au serveur A. Ceci vous permet de faire vos tests en conditions réelles. Si tout est OK, vous pouvez supprimer l'enregistrement de votre fichier hosts et mettre à jour l'enregistrement A ou AAAA dans la zone DNS. Ceci est un exemple, mais on peut imaginer d'autres scénarios.
Note : vous pouvez modifier le fichier hosts pour bloquer un site Web. Dans ce cas, associez le nom de domaine à l'adresse "127.0.0.1".
- OK, mais comment éditer le fichier hosts ?
Afin d'éditer le fichier hosts de votre machine Windows, vous devez disposer des droits Administrateur !
Ceci est faisable à partir de diverses applications, notamment le Bloc-notes. Effectuez un clic droit sur l'icône du Bloc-notes et choisissez puis "Exécuter en tant qu'Administrateur" afin de pouvoir ouvrir le fichier hosts en lecture et écriture. Sinon, le fichier sera ouvert uniquement en lecture seule. Une fois le Bloc-notes ouvert, cliquez sur "Fichier" puis "Ouvrir" puis allez chercher le fichier hosts en naviguant dans votre disque C.
Ensuite, il convient d'ajouter la ou les lignes de son choix. Si l'on reprend l'exemple évoqué précédemment, cela donne :
Si l'on effectue simplement un ping vers "exemple.fr", on peut voir que ce nom d'hôte résout bien vers l'adresse IP "192.168.1.150", ce qui montre bien que le résolveur DNS local représenté par le fichier hosts, prend le pas sur le serveur DNS configuré sur mon interface réseau.
Pour être certain que la machine utilise la nouvelle information, il convient de purger le cache DNS.
Pour purger le cache DNS de Windows, il convient d'effectuer la commande suivante :
ipconfig /flushdns
Vous pouvez aussi les PowerToys de Windows grâce à l'outil nommé "Editeur de fichiers hôtes" qui permet d'éditer le contenu du fichier hosts en mode graphique. Voici un aperçu de cet outil :
IV. Comment protéger le fichier hosts ?
Sur une machine Windows, le fichier hosts est un fichier sensible qui est surveillé de près par certaines solutions de sécurité. En effet, une personne malintentionnée pourrait modifier le fichier pour mettre au point une attaque de type DNS Hijacking (détournement DNS).
Imaginez qu'une entrée soit créée dans le fichier hosts pour détourner le trafic à destination du site de votre banque, par exemple "creditmutuel.fr". Plutôt que de vous connecter sur le site de votre banque, vous pourriez être redirigé, sans le savoir, vers une copie du site hébergé sur le serveur d'un cybercriminel. Ceci lui offre l'opportunité de voler vos identifiants de connexion, par exemple.
Pour limiter les actions possibles sur le fichier hosts, et bien que ce soit déjà limité aux administrateurs, vous pouvez activer l'attribut "Lecture seule" dans les propriétés du fichier hosts (via un clic droit). Ainsi, il ne peut pas être modifié même en tant qu'administrateur. Pour le modifier, il faudra d'abord supprimer cet attribut.
C'est probablement contournable mais c'est tout de même une première barrière.
Les navigateurs Web, que ce soit Google Chrome, Microsoft Edge ou Mozilla Firefox, intègrent un résolveur DNS qui peut perturber ce que vous déclarez dans le fichier hosts du système d'exploitation. Si vous constatez que le navigateur ne prend pas en compte votre fichier hosts, c'est surement à cause d'une fonctionnalité activée dans ses paramètres.
Avec Microsoft Edge et Google Chrome, vous pouvez vider le cache du navigateur ou effectuer la résolution d'un nom d'hôte en accédant à ces adresses :
# Pour Edge : edge://net-internals/#dns # Pour Chrome : chrome://net-internals/#dns
Ceci permet de faire un test assez rapidement.
Sinon, la fonctionnalité "Utiliser un DNS sécurisé" (nommée ainsi dans Chrome) correspondante à l'utilisation d'un DNS-over-HTTPS (DoH) peut aussi être la cause de la non prise en charge du fichier hosts.
VI. Conclusion
Suite à la lecture de cet article, vous en savez plus sur le fichier hosts de Windows ! Sur les systèmes Linux et macOS, le fichier hosts fonctionne de la même façon et adopte la même syntaxe. C'est un fichier à connaître et qui peut s'avérer très utile dans certains cas, comme je l'évoquais dans cet article.
Bonjour Florian,
merci Florian pour cet article.
Sur mon smartphone à une époque j’avais une appli de blocage de pub qui modifiait le fichier host.
Si tu pouvais nous expliquer comme ça fonctionne, ça serait intéressant !