Ceci est une ancienne révision du document !
Le fichier Hosts
Le fichier hosts est utilisé sous tous les systèmes d'exploitations lors de l'accès à Internet, ce fichier est consulté avant l'accès au serveur DNS. C'est un simple fichier qui contient sur la même ligne une adresse IP et parfois le nom de domaine.
Ce fichier permet de bloquer l'accès à un site Internet, de le rediriger, de bloquer les pubs et d'améliorer l'accès à des sites en fonction de la configuration de celui-ci. Il peut être utile pour protéger votre ordinateur, empêcher un enfant (par exemple) d'accéder à un site particulier ; de peer to peer, crack, jeux, msn, etc.
Le fichier hosts est l'ancêtre des DNS utilisé dans ARPANET - servant à adresser les adresses des réseaux.
- Voir également Moblock, pour bloquer à partir de liste peerguardian.
Trouver et modifier le fichier Hosts
Le fichier hosts se trouve dans /etc/hosts :
gksudo gedit /etc/hosts
D'autres fichiers hosts
Dans tous les cas dans une perspective de sécurité l'utilisation d'un firewall est préférable.
conseillé
Il bloque pas mal de site, c'est même un peu trop!
pas testé.
Pour windows il y a spywareblaster - (gratuit, licence ?) et Spybot S & D (libre…) qui ont des listes à leur disposition. ( il serait utile de les récupérer et de faire partager).
Il est théoriquement possible de convertir des listes peerguardian pour mettre à jour hosts - mais autant utiliser Moblock qui fait déjà cela automatiquement.
Pré-requis
savoir utiliser les commandes de bases.
Penser à sauvegarder le précédent avec :
cd /etc/
cp hosts hosts.backup
Installation
Les deux méthodes sur cette précédemment dans cette page étaient complètement obsolètes.
Je vous propose une une méthode simple de mise à jour automatique mensuel du fichier host.
Dans une console :
sudo gedit /etc/cron.weekly/hosts
je colle le code ci-dessous (ubuntu à changer par le nom de votre machine)
#!/bin/bash wget --directory-prefix=/tmp http://winhelp2002.mvps.org/hosts.txt ||exit mv /tmp/hosts.txt /etc/hosts echo "127.0.1.1 ubuntu" >> /etc/hosts echo "::1 ip6-localhost ip6-loopback" >> /etc/hosts echo "fe00::0 ip6-localnet" >> /etc/hosts echo "ff00::0 ip6-mcastprefix" >> /etc/hosts echo "ff02::1 ip6-allnodes" >> /etc/hosts echo "ff02::2 ip6-alllrouters" >> /etc/hosts
je ferme gedit puis j'execute :
sudo chmod +x /etc/cron.weekly/hosts
et voilà la mise à jour est automatique !
Remarque :
- ce script ne modifie rien si il n'arrive pas à télécharger
- ce script s'adapte en ajoutant les lignes par défaut du fichier de Ubuntu
- est exécuté automatiquement tout les mois sans intervention de l'utilisateur
- il est possible de l’exécuter n'importe quand avec "sudo /etc/cron.weekly/hosts"
Désinstallation
Il faut tout simplement supprimer le fichier hosts qui a été remplacé et remettre l'original précieusement sauvegardé :)
Site en rapport
- Autre lien pour script automatique : http://fl4t.blogspot.com/2009/05/script-pour-linuxien-adzhosts.html
- Le fil de discussion http://forum.ubuntu-fr.org/viewtopic.php?pid=2575813#p2575813
- Le site du fichier hosts http://adzhosts.com/
- Introduction et personalisation de l'hosts http://kerio.probb.fr/securiser-un-peu-plus-son-ordinateur-f9/le-fichier-hosts-securiser-et-ameliorer-t473.htm
Remplacer les messages d'erreurs "Impossible de charger l'URL" lors de la navigation
Vous l'aurez certainement remarqué, le fait de blacklister un site dans le fichier HOST provoque des erreurs d'affichage assez désagréables lors de la navigation.
En effet, le fichier HOST redirige l'adresse du site indésirable vers l'adresse 127.0.0.1, c'est-à-dire votre ordinateur. Votre ordinateur n'est donc pas capable de répondre à la requête, car aucun serveur HTTP n'est actif ou dans le cas contraire, votre serveur HTTP ne peu servir l'URL demandée car elle n'existe pas sur votre ordinateur.
La méthode de contournement consiste à lancer un serveur HTTP bidon qui va répondre à toute les requêtes en envoyant comme réponse un code HTML défini par l'utilisateur.
Installation
- Installer les dépendances
sudo apt-get install libcurl4-gnutls-dev
- Télécharger et decompresser l'archive
wget http://fab.homelinux.org/nullsrvd/nullsrvd.tar.gz tar xzvf nullsrvd.tar.gz
- Compiler
cd nullsrvd make
- Installer
sudo make install
Utilisation
Le serveur nullsrvd est un démon, c'est-à-dire que celui-ci se lance tout seul dès le démarrage de la machine
Arrêt / Démarrage
sudo service nullsrvd start|stop
Consultation de la log
cat /var/log/nullsrvd/nullsrvd.log
Changer le code HTML renvoyé par nullsrvd
Editer le fichier /etc/nullsrvd/response.html
Changer le chemin d'accès du fichier HTML renvoyé par nullsrvd
Editer le fichier /etc/default/nullsrvd
Rajouter des entrées hosts utilisateur
Si vous souhaitez que nullsrvd rajoute des entrées au fichier hosts après l'installation d'un nouveau fichier issu d'AdzHosts, éditer le fichier /etc/nullsrvd/user.hosts
Désinstallation
Penser à arrêter nullsrvd avant sa désinstallation.
sudo make uninstall
Problèmes / Remarques
S'adresser à darunia
Héberger simultanément un site local et une page spéciale de blocage
Si vous hébergez un site sur votre ordinateur, il sera accessible à l'adresse 127.0.0.1, mais vous ne voulez pas forcément que ce soit ce site qui s'affiche pour une url bloquée par le fichier hosts.
La première chose à faire est une page en php qui va analyser l'adresse et rediriger vers votre site si l'adresse appartient à une liste définie (localhost, votre ip locale, le nom de la machine…) et rediriger vers une page bloquant l'accès au site pour toutes les autres adresses (soit celles contenues dans le fichier host).
La page index.php
La page index.php sera la page chargée par défaut si vous indiquer uniquement un nom de domaine sans indiquer de fichier, c'est donc celle la qui va analyser l'adresse
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>index.php</title> </head> <body> <?php $monUrl = "http://".$_SERVER['HTTP_HOST']."/"; switch ($monUrl) { case "http://127.0.0.1/": include ('./mapagedacceuil.php'); break; case "http://192.168.1.95/": include ('./mapagedacceuil.php'); break; case "http://localhost/": include ('./mapagedacceuil.php'); break; default: include ('./bloque.php'); } ?> </body> </html>
Cette page va donc récupérer l'adresse courante avec $_SERVER['HTTP_HOST'] est inclure la page qui conviens. Bien sur, il faut remplacer 192.168.1.95 par votre adresse ip locale et rajouter si besoin d'autre case si vous voulez que d'autre adresse affiche votre site. Elle affichera soit la page bloque.php que nous verrons au chapitre suivants soit votre page d’accueil, qui s’appelait index.php avant de suivre se tuto et que vous devez renommé en mapagedacceuil.php ou un autre nom mais il faudra adapter la page index.php et y metre le même nom
La page bloque.php
C'est cette page qui s'affichera pour toute les adresse qui ne sont pas précise recensement, elle s'affichera donc pour les url contenue dans le fichier host. Elle indique le nom du site, affiche un sens interdit, explique que et page est bloquer et redirige vers une autre page apres quelque seconde
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Page bloque par le fichier host</title> </head> <img src="./sens-interdit.jpg" alt="sens interdit" /> <body> <? $monUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo "<h1> La page que vous tentez de charger </p>" .$monUrl." est bloquée.</h1> </p>"; echo "vous allez etre redirigez vers duckduckgo dans 5s</p>"; header ("Refresh: 5;URL=https://duckduckgo.com/"); ?> </body> </html>
Vous pouvez adapter le temps avant la redirection en seconde, changez l'adresse… Vous pouvez maintenant afficher une page différente en fonction que se soit l'adresse du site local ou une autre même si elle possédé la même adresse ip dans votre fichier host.
Liens
Contributeurs principaux : Fl4t, PsychedÉric, gb1yop, darunia, anonyme68 (suppression de paragraphes et des scripts étranges pour une meilleur clarté).
Basé sur « Le fichier HOSTS d'Hajdar » par Hajdar, et forum.