Vous êtes sur la page 1sur 9

BTS INFORMATIQUE DE GESTION

Option Administrateur Rseaux

Activit n1

Benot VERRON

Mise en place dun serveur


Proxy
sous Ubuntu / Debian
Prsentation dun Proxy

Un proxy (serveur mandataire) est un serveur situ entre un rseau priv et Internet.
Constituant une protection pour le rseau d'une entreprise, il peut galement faire office de
cache. Dans ce dernier cas, il enregistre les pages Web transfres par les utilisateurs pour les
dlivrer sans qu'il soit ncessaire de se connecter sur le serveur initial. Ainsi, lorsqu'un
utilisateur se connecte internet l'aide d'une application cliente configure pour utiliser un
serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui donner sa
requte. Le serveur proxy va alors se connecter au serveur que l'application cliente cherche
joindre et lui transmettre la requte. Le serveur va ensuite donner sa rponse au proxy, qui va
son tour la transmettre l'application cliente.

Il offre plusieurs possibilits :


- Le cache
- la journalisation des requtes (logging)
- la scurit du rseau local
- le filtrage et lanonymat.

1)

Contexte :

Nous sommes actuellement dans un collge o il mest demand de scuriser,


dacclrer le rseau, contrler ses connections en donnant aux professeurs et aux
lves un accs Internet mais en veillant que celui-ci soit filtr. Des droits certains
sites seront autoriss ou non suivant la personne.
Pour cela, jutilise une plateforme Ubuntu et je choisi dutiliser Squid pour la mise en
place du proxy. Il est la fois performant et complet, il offre de trs nombreuses
applications.
De plus on lui ajoute son compos SquidGuard afin dacclrer et damliorer le
processus de filtrage des sites bannir partir dune blacklist qui est labore
luniversit de Toulouse.
On mettra en place un systme dauthentification.
Configuration ct serveur:

2) Installation de Squid :
Aprs avoir configurer les paramtres rseau du serveur et des machines clientes on
peut procder linstallation de squid :
apt-get update && apt-get install squid
Configuration de squid.conf
Il est possible de faire une copie avant toute chose du fichier de configuration pour
des raisons de scurits.
On ouvre ensuite le fichier de configuration de Squid (squid.conf) afin de le
paramtrer.
Pour cela jutilise lditeur nano (un autre comme vi peut tout fait convenir) :
nano /etc/squid/squid.conf
Il faut commencer par renseigner le paramtre visible_hostname sous peine que
squid ne dmarre pas.
visible_hostname proxy
Mettons maintenant quelques rgles :
Il faut savoir que toutes les rgles que lon dsire ajouter dans ce fichier se mettent
un endroit spcifique ; aprs Insert your rules . De plus lordre de ces rgles est
primordial. Les interdictions se mettent donc avant les autorisations.
Ces rgles sont appeles : ACL (Access Control List)
Par dfaut squid refuse toute connections sortantes des clients. Il faut donc autoriser
le rseau sortir sur internet.
acl mon_reseau src 192.168.0.0/24
http_access allow mon_reseau

On pourrait ensuite ajouter dautre acl permettant de filtrer les connexions mais il est
prfrable de confier cette tche squidGuard par la suite.
Configuration ct client :
Aprs cela on a plus qu configurer le navigateur des machines clientes afin quelles
passent par le proxy pour sortir sur internet. Le port par dfaut de squid est le 3128.
Nous utiliserons celui-ci.
Il est possible de dsactiver le cache du navigateur en le mettant 0 car celui du
proxy est suffisant.

3) Authentification :
Crons des comptes utilisateurs afin de grer les droits daccs aux sites :
eleve ; prof ; admin.
Le fait dauthentifier les utilisateurs va permettre une surveillance accrue de notre
rseau et surtout, la possibilit de grer des rgles quels que soient le poste de travail
et le navigateur utilis.
Le mode dauthentification que jutilise est le NCSA.
NCSA : Utilise un fichier dutilisateurs et de mot de passe de type NCSA
La commande suivante permet de crer un rpertoire o les comptes et mot de
passe y seront stocks.
htpasswd c /etc/squid/passwords admin
Ainsi de suite pour chaque compte. ( on enlvera loption c car le rpertoire est cre
qu une seule fois)
On active maintenant lauthentification :
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwords
acl mes_utilisateurs proxy_auth REQUIRED
acl monreseau src 192.168.0.0/24
http_access deny !mes_utilisateurs
http_access allow monreseau
On peut ensuite dmarrer squid. /etc/init.d/squid start

Configuration ct serveur:

4) Installation de squidGuard :
On revient sur le serveur pour y intgrer dans Squid le plugin SquidGuard. Celui-ci
est un filtre, un redirecteur qui permet de soulager squid afin dacclrer la connexion.
On installe maintenant squidGuard :
apt-get update && apt-get install squidGuard
On tlcharge par exemple sur le ftp de luniversit de Toulouse la blacklist qui est
rpute.
ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/
On linstalle ensuite dans le rpertoire : /var/lib/squidguard/db/blacklists
On cre un utilisateur proxy du groupe proxy. Et on le rend propritaire du fichier
blacklists.
chown R proxy:proxy /var/lib/squidGuard /usr/bin/squidGuard /usr/bin/squid
/var/log/squid
Dans certain cas, on peut avoir rinitialiser la base de donnes de squidGuard
avec la commande :
squidGuard C all
On peut ventuellement rajouter des urls ou des noms de domaines interdire dans
la blacklist.
Le plus simple pour ajouter des domaines interdire serait de crer un fichier (par
exemple : divers) et dinclure dans le fichier de configuration de squidGuard ce fichier
perso refuser. Nous le feront plus bas.
Il faut indiquer squid de passer par son composant squidGuard.
redirect_program /usr/bin/squidGuard c /etc/squid/squidGuard.conf

5) Configuration de squidGuard :
En page suivante, je propose une configuration du fichier squidGuard qui permettra
dautoriser ou non les personnes accder aux sites internet.
Notre proxy est maintenant oprationnel, une fois bien sre que lon a redmarr
squid. On peut tester diffrents sites depuis une machine cliente.
Jai ensuite ajout un dossier divers (mkdir /home/ben/divers) puis le fichier domains
(touch /home/ben/divers/domains) o tous les utilisateurs peuvent ajouter des
domaines interdire. Cela est fait grce un formulaire en html et un script en php.
De cette sorte, il suffit quils se connectent partir dun navigateur sur le serveur puis
quils rentrent un domaine interdire dans le formulaire. Squid se recharge ensuite
automatiquement lors de la validation.
Pour cela, jai dans le rpertoire dApache cr les 2 fichiers ajoutdomain.html et
ajoutdomain.php. Lutilisateur qui sera utilis lors du lancement du script est celui
dApache donc www-data . Il faudra veiller lui donner les droits dcrire dans ce
fichier domains et de recharger squid sans quoi les modifications ne seront pas
prises en compte.
Editer avec visudo /etc/sudoers et ajouter la ligne www-data ALL=NOPASSWD :
/etc/init.d/squid. Puis chown www-data /home/ben/divers/domains et enfin chmod 755
/home/ben/divers/domains.

# Fichier /etc/squid/squidGuard.conf
# Rpertoire acceuillant les bases de donnes
dbhome /var/lib/squidguard/db/blacklists
# Rpertoire accueillant le fichier de log
logdir /var/log/squid

# on cre les entres interdire


dest violence {
domainlist

violence/domains

urllist

violence/urls

expressionlist

violence/expressions

}
dest porn {
domainlist

porn/domains

urllist

porn/urls

expressionlist

porn/expressions

}
dest divers {

domainlist

/home/ben/divers/domains

src admin

user admin }
src prof

{
user prof }

src eleve

{
user eleve }

acl

admin

{
Pass all

}
prof

{
Pass !divers !porn all

redirect http://www.192.168.0.1/index.html
}
eleve

{
Pass !divers !porn !violence all

redirect http://192.168.0.1/index.html

}
default {
pass none all
}
}

On pourrait aussi programmer partir dun simple script une mise jour automatique
de la blacklist. Ce qui peut tre intressant sachant que chaque jour des sites internet
se crent et quils ne sont pas forcement recommandables.
Pour les lves surtout si lge moyens des utilisateurs est faible, il serait aussi
intressant de non pas utiliser une liste noire mais plutt une liste blanche qui
nautoriserait que les sites internet que lon aurait choisi au pralable. Et par exemple
continuer utiliser la liste noire simplement pour les professeurs.
De plus il est possible dutiliser un proxy transparent qui ne laisse mme pas savoir
aux utilisateurs que ceux-ci passent par le proxy et donc devient impossible
contourner.
En rsum :
De nombreuses applications encore existent mais celles que nous avons vu ici en
sont les principales. Le proxy est donc utile pour prserver les individus et mme
parfois obligatoire. Il est pratique grce lauthentification de contrler les accs
quelque soit le poste utilis. Il est aussi tout fait modulable suivant nos exigences. Et
permet en plus dutiliser le cache afin de stocker les pages rcemment consultes et
donc dacclrer le vitesse de la connexion.

/home/ben/divers/ajoutdomain.html
SCRIPT HTML:
<html>
<body bgcolor="#FFFFCC">
<center>
<form method="POST" action="ajoutdomain.php" name="ajoutdomain">
<h1>ajouter un domaine interdire:</h1>
<input type="text" name="ajoutdomain">
<input type="submit" value="envoyer" name="envoyer">
</form>
</center>
</body>
</html>

/home/ben/divers/ajoutdomain.php
SCRIPT PHP:
<html>
<body bgcolor="#FFFFCC">
<center>
<font size="5" color="blue">
<tt>
<?php
clearstatcache();
$domains = '/home/ben/divers/domains';
$reload = 'sudo /etc/init.d/squid reload'; //redmarrage de squid
if (is_writable($domains)) {
echo "Le fichier est accessible en ecriture<br>";
if ( !$fichier = fopen ( $domains, 'a' ) ) {
echo "Je n'ai pas russi ouvrir le fichier!<br>";
exit;
} else {
echo "J'ai bien ouvert le fichier<br>";
$texte = $_POST['ajoutdomain'] . "\n";
if ( $ecriture = fwrite ( $fichier, $texte ) ) {
echo "J'ai pu ecrire sur le fichier<br>";
fclose($fichier);
system($reload);
echo "<br>La configuration de Squid est bien recharge.";
} else {
echo "Je n'ai pas reussi a ecrire...";
fclose ( $fichier ) ;
}
}
} else {
echo "Le fichier n'est pas accessible en ecriture.";
}
echo "<br>Le domaine $texte
?>
</tt>
</font>
</center>
</body>
</html>

t ajout

la liste des domaine

interdire."

Vous aimerez peut-être aussi