f. Serveur proxy
Notre choix pour Squid se justifie par sa nature de logiciel
libre et sa performance. Pour sa mise en place tout comme les autres logiciels
il faut avoir les doits d'administration.
Installation
L'installation se fait au moyen de la commande :
apt-get install squid, celui-ci s'installe et crée un
répertoire /etc/squid/ contenant le principal fichier
de configuration nommé squid.conf.
Configuration
La configuration par défaut de squid est fonctionnelle,
mais nous avons apporté des modifications au fichier de configuration
afin de l'optimiser, de mieux l'adapter à notre environnement et
également pour rester en parfaite adéquation avec notre cahier de
charges. Nous avons édité le fichier squid.conf et nous avons
ajouté les lignes suivantes :
Ø Définition des droits d'accès
(contrôle d'accès)
Nous avons définit ici les liste de contrôle
d'accès pour la gestion des droits d'accès.
# définit le réseau local que squi doit
gérer
acl local_network src 192.168.3.0/24
# définit un ensemble de poste auxquels nous autoriserons
l'accès à l'interface du routeur
acl allow_clients src 192.168.3.11 192.168.3.12 192.168.3.13
192.168.3.14 192.168.3.15
définit l'adresse du routeur auquel nous avons
autorisé l'accès à partir de certains postes
acl router dst 192.168.1.1/24
# définit l'horaire de connexion le matin
acl matin time MTWHFA 06:00-09:00
# définit l'horaire de connexion à la pause
acl pause time MTWHA 12:00-13:00
# définit l'horaire de connexion dans l'après
midi
acl pauseven time F 12:00-14:00
# définit l'horaire de connexion le matin
acl soir time MTWHFA 16:00-23:00
Nous avons ajouté ces acls à la suite des lignes
commaçant par « acl local_net » afin de
respecter la structure du fichier.
Ø Application des ACLs
Après avoir créé les listes de
contrôle d'accès, nous les avons autorisé à
utiliser le proxy come suit :
# autoriser les acces aux heures définies
http_access allow local_network matin
http_access allow local_network pause
http_access allow local_network pauseven
http_access allow local_network soir
# permettre un accès permanent à internet aux
members de l'administration
http_access allow allow_clients
# permettre aux member de l'administration d'accéder
à l'interface web du routeur, refuser aux postes
http_access allow allow_clients router
http_access deny !allow_clients router
Ces lignes sont ajoutées juste avant la ligne
http_access deny all qui bloque
tout ce qui n'est pas permit explicitement.
Ø Autres modifications
o Nom du serveur
Dans la partie TAG : visible_hostname, nous avons
ajouté le nom de notre serveur avec cette ligne : visible_hostname
srvsupemir2
o Ne pas divulguer l'identité du serveur
Nous avons désactivé l'option qui permet
d'inclure l'adresse IP ou le nom du système dans les requêtes http
que le serveur proxy transfert, ceci en décommentant et en modifiant la
ligne « # forwarded_for on|off » comme suit :
forwarded_for on. Ceci permet de réduire les failles de
sécurité au niveau du proxy.
o Messages d'erreur
Par défaut les messages d'erreur de squid sont en
anglais, nous avons configuré la langue française pour faciliter
la compréhension des erreurs aux utilisateurs. Ainsi dans la partie
TAG : error_directory, nous avons décommenté et
modifié la ligne comme suit :
error_directory /usr/share/squid/errors/French .
o Cache web
Puisque notre proxy doit jouer le rôle de cache, nous
avons augmenté la taille du cache en décommentant et en modifiant
la ligne comme suit :
cache_dir ufs /var/spool/squid 50000 32 512 .
o DNS
Nous avons ajouté cette ligne pour préciser les
serveurs dns que le proxy doit interroger. Ce ci se fait dans la partie
TAG : dns_nameservers :
dns_nameservers 192.168.1.1 192.168.3.254 212.217.0.1
212.217.0.12
o Proxy transparent
Afin d'obliger tous les utilisateurs à passer par le
proxy avant d'aller sur internet, nous avons configuré pour un usage
transparent. Ainsi nous avons modifié la ligne
« http_port 3128 » comme suit :
http_port 3128 transparent.
Pour un bon fonctionnement nous avons ajouté une
règle au niveau du firewall qui redirige toutes les requêtes du
réseau local utilisant le port 80 vers le serveur proxy.
Redémarrage du service
Après tout les modifications, il est important de
redémarrer le processus squid pour la prise en compte des
paramètres configurés : service squid stop
puis service squid start.
Installation et configuration de
SquidGuard
Nous avons opté de couplé squid avec squidGuard
qui est un rédirecteur utilisé par ce dernier pour limiter
l'accès à certaines URL en fonction de l'utilisateur, de la
machine, de l'heure, du contenu ...
Ce logiciel a plusieurs avantages, mais n'en avons
utilisé que deux. Le premier d'entre eux est de limiter l'accès
à des sites potentiellement dangeureux pour le poste client et plus
généralement pour le réseau. Enfin, d'un point de vue
légal, le fait de détenir des documents dégradants
étant répréhensible, la mise en place de SquidGuard
contribue à se prémunir de ce genre de mésaventure.
- Installation : apt-get install squidGuard
- Récupération des blacklists (liste noire, elle
contient des une liste des urls malveillantes)
wget
ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
tar -zxvf blacklists.tar.gz -C /var/lib/squidguard/db/
cd /var/lib/squidguard/db
mv blacklists/* .
rm -rf blacklists
Nous avons paramétré une mise à jour
hebdomadaire des listes noires du squidGuard en créant une tâche
cron. Pour ce faire, nous avons le fichier nommé squidguard_blacklists
(gedit /etc/cron.weekly/squidguard_blacks) et nous y avons
inscrit les lignes suivantes :
#!/bin/sh
#
# Fichier de recup hebodmadaire
/etc/cron.weekly/squidguard_blacklists
if [ -d /var/lib/squidguard ]; then
wget
ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
-O /var/lib/squidguard/blacklists.tar.gz
tar -zxvf /var/lib/squidguard/blacklists.tar.gz -C
/var/lib/squidguard/
rm -rf /var/lib/squidguard/db
mkdir /var/lib/squidguard/db || true
mv -f /var/lib/squidguard/blacklists/* /var/lib/squidguard/db/
chmod 2770 /var/lib/squidguard/db
rm -rf /var/lib/squidguard/blacklists
/var/lib/squidguard/blacklists.tar.gz
/usr/bin/squidGuard -C all
chown -R proxy:proxy /etc/squid /var/log/squid /var/spool/squid
/usr/lib/squid /usr/sbin/squid /var/lib/squidguard
/etc/init.d/squid restart
fi
Nous avons rendu ce fichier exécutable comme suit :
chmod +x /etc/cron.weekly/squidguard_blacklists
Nous avons également modifié le fichier de
configuration de squidGuard afin de préciser les domaines auxquels nous
avons appliqué des restrictions :
#
# CONFIG FILE FOR SQUIDGUARD
#
dbhome /var/lib/squidguard/db
logdir /var/log/squid
# ----------------------------------------
# Définition de la base de données de filtrage
utilisée
# ----------------------------------------
dest adult {
domainlist adult/domains
urllist adult/urls
}
dest publicite {
domainlist publicite/domains
urllist publicite/urls
}
dest warez {
domainlist warez/domains
urllist warez/urls
}
dest porn {
domainlist porn/domains
urllist porn/urls
}
dest violence {
domainlist violence/domains
urllist violence/urls
}
# ----------------------------------------
# Définition des ACL
# ----------------------------------------
acl {
default {
# les thèmes supplémentaires sont à ajouter
avant le mot-clé all par !<nom du thème>
pass !porn !adult !publicite !warez !violence all
# page qui s'affichera lors d'une tentative d'accès
àaux sites interdits
redirect http://localhost/interdiction.html
}
}
Ceci fait, nous avons redémarré squid
(service squid restart) pour charger les paramétrages
effectués.
Configuration d'une machine cliente
Puisque le service fourni utilise un port particulier du
serveur, les machines clientes doivent bien sûr être
configurées en conséquence. Sur un poste client connecté
sur le réseau local (avec une adresse IP valide) et qui établit
parfaitement un 'ping' vers le serveur proxy, nous avons faites la
configuration suivante.
Pour Firefox
Dans Outils -> Options
Sélection de l'onglet Connexion puis
un clic sur Réseau Local
Cocher Serveur Proxy et entrer l'adresse IP 192.168.2.2 et le
numéro de port d'écoute qui est 3128.
Pendant les heures où la connexion est interdite, les
utilisateurs reçoivent ce message lorsqu'ils essaient de se
connecter :
Figure 35 : Message
d'erreur pendant les heures où la connexion est interdite.
Nous avons paramétré cette page pour qu'elle
informe l'utilisateur des horaires auxquels il peut se connecter
|