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.

Le fichier hosts se trouve dans /etc/hosts :

 gksudo gedit /etc/hosts

Sauvegardez le script suivant dans un fichier .sh

  • Modifier hostname par le nom de votre machine.
#!/bin/sh
if [ ! $(id -u) = 0 ]; then 
   echo "Il faut être root" 
zenity --question --title "Hosts" --text "$@ \
Il faut passer en root"
   exit 1 
fi
lancement ()
{
rm /tmp/hosts
rm /tmp/hosts.txt
echo "127.0.0.1     localhost.localdomain localhost hostname
# *********************************************************#" >> /tmp/hosts
wget http://www.mvps.org/winhelp2002/hosts.txt -O /tmp/hosts.txt

cat /tmp/hosts.txt >> /tmp/hosts

cp /tmp/hosts /etc/hosts
}

(echo ""; lancement) | zenity --progress --title "Hosts" --text="Téléchargement en cours" --pulsate

## Si on clic sur Annuler...
if [ $? -ne 0 ]
    then
        exit 0
fi

zenity --question --title "Hosts" --text "$@ \
script terminé ."
## Si on clic sur Annuler...
if [ $? -ne 0 ]
    then
        exit 0
fi
  • Puis préparez un cron.

D'autres fichiers hosts

A priori des trop grosses listes - et non adaptées peuvent ralentir votre accès au réseau (et internet). Faire des test - ping par exemple.

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.

Note du créateur d'AdZHosts :

Beaucoup de personnes utilisent AdBlock ou autres logiciels pour se débarrasser des pubs.
Mais peu savent que ce moyen n'est pas très efficace. Surtout au niveau sécurité et vitesse de surf.
Effectivement, même si le navigateur n'affiche pas la pub, elle est tout de même téléchargée et présente dans le cache.
Pensez bien qu'il arrive la même chose avec les sites qui diffusent des trojans et autres malware.

Pour parer ces problèmes, j'ai eu l'idée de vous proposer un fichier HOSTS que je tiens à jour.
Le HOSTS est une sorte de LISTE NOIRE qui refuse l'accès et les connexions aux sites présent dans cette même liste.

Le fichier HOSTS bloque la plus part des pubs, compteurs, sites phishing et autres logiciels espions.
AdZHosts est un HOSTS optimisé pour prendre moins de place.

Quand des éléments sont bloqués par le HOSTS, votre navigateur affichera des cadres blanc avec un message d'erreur.
Pour éviter ça je vous propose d'utiliser un petit soft (au choix) qui remplacera les encadrements blancs par une image transparente.
Ceci a pour but de pubs de ne pas gâcher la mise en page des sites visités ;)

http://www.adzhosts.fr/?cat=4

Faites confiance à Hajdar et téléchargez toujours les dernières builds ;)

Le HOSTS contient énormément de noms de domaines.
Si vous rencontrez un souci pour accéder à l'un de vos sites ou si vous en avez assez de voir une pub gâcher votre site préféré, alors venez me faire vos retours sur mon blog.
Un forum est à votre disposition et un messenger est actif pour me parler en live.

Pré-requis

savoir utiliser les commandes de bases.

Penser à sauvegarder le précédent avec :

cd /etc/
cp hosts hosts.backup

Installation

Méthode 1

Téléchargez le fichier sur le site suivant http://www.adzhosts.com/ Dézippez l'archive dans votre répertoire personnel.
/etc/ étant un dossier système, il va falloir le déplacer via le Terminal.

Menu»Accessoires»Terminal

sudo mv ~/AdZHosts/HOSTS /etc/hosts

Méthode 2

Via mon script :)

ouvrez un terminal dans Menu → Accessoires → Terminal.

Tapez :

gedit hosts.sh


Le traitement de texte apparaît, copiez-collez ceci :

#!/bin/bash
#version 5
echo -n "Je télécharge l'archive ? O/N : "
read ouinon
if [ "$ouinon" = "o" ] || [ "$ouinon" = "O" ];
	then
		{	
		echo "Téléchargement :"
		wget --directory-prefix=/tmp "http://kosvocore.free.fr/AdZHosts/AdZHosts.zip"
		}
elif [ "$ouinon" = "n" ] || [ "$ouinon" = "N" ];
	then
		{
		echo "Ok, bye !"
		}	
else
	{
	echo "Il faut taper O ou N !! Pas $ouinon"
	}	
fi
unzip /tmp/AdZHosts.zip -d /tmp/
if [ -e /tmp/hosts ] || [ -e /tmp/HOSTS ]
	then 
		{
		gksudo mv /tmp/HOSTS /tmp/hosts
		gksudo mv /tmp/hosts /etc/
		echo "Mission Accomplie !"
		}
elif [ -e /tmp/AdZHosts/hosts ] || [ -e /tmp/AdZHosts/HOSTS ]
	then 
		{
		gksudo mv /tmp/AdZHosts/HOSTS /tmp/AdZHosts/hosts
		gksudo mv /tmp/AdZHosts/hosts /etc/
		echo "Mission Accomplie !"
		}
else
	{
	echo "Fichier non trouvé"
	}
fi
sudo rm /tmp/AdZHosts.zip
sudo rm -r /tmp/AdZHosts/
exit 0;

Enregistrez le fichier en hosts.sh, il devrait apparaître dans "/home/utilisateur".

Cliquez droit dessus puis "propriétés>permissions" puis cocher :
"Autoriser l'exécution du fichier comme un programme"

Ouvrez un nouveau terminal puis tapez :

./hosts.sh

Il vous demande votre mot de passe pour remplacer dans /etc/
Et voilà, directement téléchargé et remplacé ;-)

Désinstallation

Il faut tout simplement supprimer le fichier hosts qui a été remplacé et remettre l'original précieusement sauvegardé :)

Site en rapport

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.

Ce programme met à jour automatiquement le fichier hosts lorsqu'une nouvelle version du fichier AdzHosts en disponible en ligne. A utiliser seulement si vous voulez utiliser le fichier AdzHosts.

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

Si vous héberger un site sur votre ordinateur, il sera accessible a l'adresse 127.0.0.1 mais vous ne voulez pas forcement que se soit ce site qui s'affiche pour une url bloquer par le fichier hosts.

La première chose a faire est une page en php qui va analyser l'adresse et rediriger vers votre site si l'adresse appartient a une liste définie (localhost, votre ip locale, le nom de la machine…) et rediriger vers une page bloquant l'axer au site pour toute les autre adresse (soit celle contenue dans le fichier host)

La page index.php

La page index.php sera la page charger 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.

  • hosts.1342688109.txt.gz
  • Dernière modification: Le 19/07/2012, 10:55
  • par gb1yop