proxy.pdf

9
BTS INFORMATIQUE DE GESTION Option Administrateur Réseaux Benoît VERRON Activité n°1 Mise en place d’un serveur Proxy sous Ubuntu / Debian Présentation d’un Proxy Un proxy (serveur mandataire) est un serveur situé entre un réseau privé et Internet. Constituant une protection pour le réseau d'une entreprise, il peut également faire office de cache. Dans ce dernier cas, il enregistre les pages Web transférées par les utilisateurs pour les délivrer sans qu'il soit nécessaire de se connecter sur le serveur initial. Ainsi, lorsqu'un utilisateur se connecte à internet à l'aide d'une application cliente configurée pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui donner sa requête. Le serveur proxy va alors se connecter au serveur que l'application cliente cherche à joindre et lui transmettre la requête. Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à l'application cliente. Il offre plusieurs possibilités : - L ah - a r a isati d s r q êt s ( ggi g) - a s rit d rsa a - fi trag t ’a y at.

Upload: misraoui

Post on 24-Dec-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: proxy.pdf

BTS INFORMATIQUE DE GESTIONOption Administrateur Réseaux

Benoît VERRONActivité n°1

Mise en place d’un serveur Proxy

sous Ubuntu / Debian

Présentation d’un Proxy

Un proxy (serveur mandataire) est un serveur situé entre un réseau privé et Internet. Constituant une protection pour le réseau d'une entreprise, il peut également faire office de cache. Dans ce dernier cas, il enregistre les pages Web transférées par les utilisateurs pour les délivrer sans qu'il soit nécessaire de se connecter sur le serveur initial. Ainsi, lorsqu'un utilisateur se connecte à internet à l'aide d'une application cliente configurée pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui donner sa requête. Le serveur proxy va alors se connecter au serveur que l'application cliente cherche à joindre et lui transmettre la requête. Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à l'application cliente.

Il offre plusieurs possibilités :

- Le cache- la journalisation des requêtes (logging)- la sécurité du réseau local- le filtrage et l’anonymat.

Page 2: proxy.pdf
Page 3: proxy.pdf

1) Contexte :Nous sommes actuellement dans un collège où il m’est demandé de sécuriser,

d’accélérer le réseau, contrôler ses connections en donnant aux professeurs et aux élèves un accès à Internet mais en veillant que celui-ci soit filtré. Des droits à certains sites seront autorisés ou non suivant la personne.

Pour cela, j’utilise une plateforme Ubuntu et je choisi d’utiliser Squid pour la mise en place du proxy. Il est à la fois performant et complet, il offre de très nombreuses applications.

De plus on lui ajoute son composé SquidGuard afin d’accélérer et d’améliorer le processus de filtrage des sites à bannir à partir d’une blacklist qui est élaborée à l’université de Toulouse.

On mettra en place un système d’authentification.

Configuration côté serveur:

2) Installation de Squid :

Après avoir configurer les paramètres réseau du serveur et des machines clientes on peut procéder à l’installation de squid :

apt-get update && apt-get install squid

Configuration de squid.confIl est possible de faire une copie avant toute chose du fichier de configuration pour

des raisons de sécurités. On ouvre ensuite le fichier de configuration de Squid (squid.conf) afin de le

paramétrer.Pour cela j’utilise l’éditeur nano (un autre comme vi peut tout à fait convenir) :nano /etc/squid/squid.conf Il faut commencer par renseigner le paramètre visible_hostname sous peine que

squid ne démarre pas.visible_hostname proxyMettons maintenant quelques règles :Il faut savoir que toutes les règles que l’on désire ajouter dans ce fichier se mettent à

un endroit spécifique ; après « Insert your rules ». De plus l’ordre de ces règles est primordial. Les interdictions se mettent donc avant les autorisations.

Ces règles sont appelées : ACL (Access Control List) Par défaut squid refuse toute connections sortantes des clients. Il faut donc autoriser

le réseau à sortir sur internet.acl mon_reseau src 192.168.0.0/24http_access allow mon_reseau

Page 4: proxy.pdf

On pourrait ensuite ajouter d’autre acl permettant de filtrer les connexions mais il est préférable de confier cette tâche à squidGuard par la suite.

Configuration côté client :Après cela on a plus qu’à configurer le navigateur des machines clientes afin qu’elles

passent par le proxy pour sortir sur internet. Le port par défaut de squid est le 3128. Nous utiliserons celui-ci.

Il est possible de désactiver le cache du navigateur en le mettant à 0 car celui du proxy est suffisant.

3) Authentification :

Créons des comptes utilisateurs afin de gérer les droits d’accès aux sites :eleve ; prof ; admin.Le fait d’authentifier les utilisateurs va permettre une surveillance accrue de notre

réseau et surtout, la possibilité de gérer des règles quels que soient le poste de travail et le navigateur utilisé.

Le mode d’authentification que j’utilise est le NCSA.NCSA : Utilise un fichier d’utilisateurs et de mot de passe de type NCSALa commande suivante permet de créer un répertoire où les comptes et mot de

passe y seront stockés.htpasswd –c /etc/squid/passwords adminAinsi de suite pour chaque compte. ( on enlèvera l’option –c car le répertoire est crée

qu’ une seule fois) On active maintenant l’authentification :auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwordsacl mes_utilisateurs proxy_auth REQUIREDacl monreseau src 192.168.0.0/24http_access deny !mes_utilisateurshttp_access allow monreseauOn peut ensuite démarrer squid. /etc/init.d/squid start

Page 5: proxy.pdf

Configuration côté serveur:

4) Installation de squidGuard :

On revient sur le serveur pour y intégrer dans Squid le plugin SquidGuard. Celui-ci est un filtre, un redirecteur qui permet de soulager squid afin d’accélérer la connexion.

On installe maintenant squidGuard :apt-get update && apt-get install squidGuardOn télécharge par exemple sur le ftp de l’université de Toulouse la blacklist qui est

réputée.ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/

On l’installe ensuite dans le répertoire : /var/lib/squidguard/db/blacklistsOn crée un utilisateur proxy du groupe proxy. Et on le rend propriétaire 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 à réinitialiser la base de données 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 créer un fichier (par exemple : divers) et d’inclure 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

Page 6: proxy.pdf

5) Configuration de squidGuard :

En page suivante, je propose une configuration du fichier squidGuard qui permettra d’autoriser ou non les personnes à accéder aux sites internet.

Notre proxy est maintenant opérationnel, une fois bien sûre que l’on a redémarré squid. On peut tester différents sites depuis une machine cliente.

J’ai 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 grâce un formulaire en html et un script en php.

De cette sorte, il suffit qu’ils se connectent à partir d’un navigateur sur le serveur puis qu’ils rentrent un domaine à interdire dans le formulaire. Squid se recharge ensuite automatiquement lors de la validation.

Pour cela, j’ai dans le répertoire d’Apache créé les 2 fichiers ajoutdomain.html et ajoutdomain.php. L’utilisateur qui sera utilisé lors du lancement du script est celui d’Apache donc « www-data ». Il faudra veiller à lui donner les droits d’écrire 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.

Page 7: proxy.pdf

# Fichier /etc/squid/squidGuard.conf# Répertoire acceuillant les bases de données

dbhome /var/lib/squidguard/db/blacklists

# Répertoire accueillant le fichier de log

logdir /var/log/squid

# on crée les entrées à 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

}

}

Page 8: proxy.pdf

On pourrait aussi programmer à partir d’un simple script une mise à jour automatique de la blacklist. Ce qui peut être intéressant sachant que chaque jour des sites internet se créent et qu’ils ne sont pas forcement recommandables.

Pour les élèves surtout si l’âge moyens des utilisateurs est faible, il serait aussi intéressant de non pas utiliser une liste noire mais plutôt une liste blanche qui n’autoriserait que les sites internet que l’on aurait choisi au préalable. Et par exemple continuer à utiliser la liste noire simplement pour les professeurs.

De plus il est possible d’utiliser un proxy transparent qui ne laisse même pas savoir aux utilisateurs que ceux-ci passent par le proxy et donc devient impossible à contourner.

En résumé :De nombreuses applications encore existent mais celles que nous avons vu ici en

sont les principales. Le proxy est donc utile pour préserver les individus et même parfois obligatoire. Il est pratique grâce à l’authentification de contrôler les accès quelque soit le poste utilisé. Il est aussi tout à fait modulable suivant nos exigences. Et permet en plus d’utiliser le cache afin de stocker les pages récemment consultées et donc d’accélérer 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>

Page 9: proxy.pdf

/home/ben/divers/ajoutdomain.phpSCRIPT PHP:

<html><body bgcolor="#FFFFCC"><center><font size="5" color="blue"><tt><?phpclearstatcache();$domains = '/home/ben/divers/domains';$reload = 'sudo /etc/init.d/squid reload'; //redémarrage de squid

if (is_writable($domains)) {echo "Le fichier est accessible en ecriture<br>";if ( !$fichier = fopen ( $domains, 'a' ) ) {

echo "Je n'ai pas réussi à 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 rechargée.";} 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 à été ajouté à la liste des domaine à interdire."?></tt></font></center></body></html>