MISE EN PLACE D’UN SERVEUR PROXY
HATARBACH MOUSSA
BTS SIO SISR 2015-2016
Sommaire
Sommaire _________________________________________________________________________________________________ 2 Contexte ____________________________________________________________________________________________________________ 1 Objectifs ____________________________________________________________________________________________________________ 1 Prérequis pour la mise en place du serveur Proxy ______________________________________________________________ 1 Mise en place de squid3 ___________________________________________________________________________________________ 1 Squid _____________________________________________________________________________________________________________ 1 Installation ______________________________________________________________________________________________________ 1 Configuration____________________________________________________________________________________________________ 1 Mise en place de SquidGuard _____________________________________________________________________________________ 1 SquidGuard ______________________________________________________________________________________________________ 1 Installation ______________________________________________________________________________________________________ 1 Configuration____________________________________________________________________________________________________ 1 Authentification ____________________________________________________________________________________________________ 1 Authentification avec le programme ncsa_auth ______________________________________________________________ 1
CONTEXTE
Dans l’ecole ESICAD, à plusieurs moments nous avons remarqué des abus produit par les utilisateurs en naviguant sur des sites non productifs pour les élèves. Donc une solution de mise en place d'un serveur proxy pour stopper tous les abus a été décidée.
OBJECTIFS
Mettre en place un serveur proxy Squid sous linux afin de contrôler l’usage d’Internet et d’effectuer des blocages sur certains sites sensibles.
PREREQUIS POUR LA MISE EN PLACE DU SERVEUR PROXY
- Windows serveur 2012 R - Active directory
- Squid3 et SquidGuard -…
MISE EN PLACE DE SQUID3
Squid
Squid assure les fonctions de :
cache, pour optimiser la bande passante ;
identification des utilisateurs, nous en verrons une simpliste et une nettement plus complexe ;
filtrage d'accès « basique », mais déjà intéressant.
Installation
Mettre à jour la distribution Debian :
apt-get update && apt-get upgrade
Installation du proxy Squid3 : apt-get install squid3
Configuration
Sauvegarde du fichier de configuration par défaut avant de le modifier:
cp /etc/squid3/squid.conf /etc/squid3/squid.conf.save
Pour plus de clarté, retirer les commentaires du fichier de configuration :
cat squid.conf.save | egrep -v -e '^[:blank:]*#|^$' > squid.conf
Edition du fichier de configuration pour ajouter les modifications :
nano /etc/squid3/squid.conf
Nous avons créé une ACL nommée « lan » représentant notre réseau local (acl lan src 172.16.1.0/24), et lui avons donné l'autorisation de passer le proxy (http_access allow lan).
acl lan src 172.16.1.0/24 #ACL pour autoriser notre réseau http_access allow lan #Autoriser l’ACL « lan »
Masquer notre adresse IP dans le header http :
forwarded_for off
Log d’erreur en français :
error_directory /usr/share/squid3/errors/French
Rejet de tous les ports différents de ceux déclarés dans les ACLs :
http_access deny !Safe_ports
Empêcher les personnes extérieures au réseau de passer par le proxy :
http_access deny all
Emplacement des fichiers de logs
cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
Intégration du module de SquidGuard
url_rewrite_program /usr/bin/squidGuard -c /etc/squid3/squidGuard.conf
Indication du port d’écoute par défaut http_port 3128
MISE EN PLACE DE SQUIDGUARD
SquidGuard
SquidGuard propose un filtrage très puissant d'accès au web, en fonction :
de groupes d'utilisateurs, définis de diverses manières. Ici, nous nous baserons sur des IP ou des groupes d'IP, mais il est possible d'utiliser l'identification des utilisateurs mise en place sur Squid ;
de listes de domaines et d'URI qui serviront à définir soit des cibles autorisées, soit des cibles interdites (listes blanches, listes noires) ;
de plages horaires pendant lesquelles l'accès sera autorisé ou interdit.
Et bien d'autres choses encore, que nous ne verrons pas ici.
Installation
Taper la commande suivante pour installer SquidGuard : apt-get install squidguard
Configuration
L'installation a créé un répertoire /var/lib/squidguard/db, mais il est vide. Il est destiné à contenir nos listes noires et blanches.
Téléchargement de la blacklist
wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz
Extraction du fichier :
tar -xzf blacklists.tar.gz
Copie du dossier Blacklist dans le répertoire de squidguard :
cp -R blacklists/* /var/lib/squidguard/db/
Faire une copie du fichier de configuration de SquidGuard :
cp /etc/squidguard/squidGuard.conf /etc/squidguard/squidGuard.back
Il faut indiquer à SquidGuard où trouver la base de données des listes ainsi que l'endroit où l'on désire récupérer les logs.
dbhome /var/lib/squidguard/db logdir /var/log/squid3
SquidGuard sait autoriser ou non l'accès en fonction de plages horaires, si nécessaire. Si des plages horaires sont définies, nous pourrons écrire des règles d'accès spécifiques dans les plages et hors des plages. Par exemple, nous pouvons autoriser un accès plus ou moins restreint tous les soirs entre 18 h et 20 h dans la semaine et entre 10 h et 20 h les samedis et dimanches, et tout bloquer en dehors de ces plages, mais pour certains utilisateurs seulement.
#
# TIME RULES:
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat
time workhours {
weekly mtwhf 08:00 - 16:30 date *-*-01 08:00 - 16:30
SquidGuard sait, à la volée, modifier les URL demandées par les clients dans certaines conditions. Ce n'est probablement pas une fonction primordiale.
#
# REWRITE RULES:
#
#rew dmz {
# s@://admin/@://admin.foo.bar.no/@i
# s@://foo.bar.no/@://www.foo.bar.no/@i
#}IME RULES:
Les sources sont là pour définir des groupes de clients. Les sources définies par des adresses IP sont les plus simples à mettre en place.
Lorsque l'identification des clients est requise, il devient également possible de définir des noms d'utilisateurs dans les sources.
#
# SOURCE ADDRESSES:
#
#src admin {
# ip 1.2.3.4 1.2.3.5
# user root foo bar
# within workhours
#}
#src foo-clients {
# ip 172.16.2.32-172.16.2.100 172.16.2.100 172.16.2.200
#}
#src bar-clients {
# ip 172.16.4.0/26
#}
Les destinations, comme leur nom l'indique, définissent des ensembles de domaines, d'URL ou d'expressions régulières à appliquer aux URL.
#
# DESTINATION CLASSES:
#dest good { }
dest local { }
#dest adult {
# domainlist adult/domains
# expressionlist adult/expressions
# redirect www.google.com
#}
Enfin, les ACL permettent de définir quelle source peut aller (ou ne pas aller) vers quelle(s) destination(s). Un « ! » veut dire « NOT » (non).
acl {
admin {
pass any }
default {
pass none
redirect www.google.com }
}
Création d’un lien symbolique du fichier de configuration squidGuard.conf dans /etc/squid3/ :
ln -s /etc/squidguard/squidGuard.conf /etc/squid3/
Application des droits :
chown -R proxy:proxy /var/log/squid3 /var/lib/squidguard
Génération de la base de données : squidGuard -C all
Vérification de la configuration de Squid3 :
squid3 -z
Vérifier que tout est ok : /var/log/squid3/squidGuard.log
Et pour finir, paramétrer le navigateur internet pour utiliser le proxy Squid :
AUTHENTIFICATION
Création des utilisateurs
Construire un fichier d’utilisateurs
# touch /etc/squid3/users
Nous le remplissons ensuite avec la commande htpasswd, normalement fournie dans le paquet apache-common. A répéter autant de fois que nécessaire avec des vrais noms d'utilisateurs et des vrais mots de passe…
# htpasswd -b /etc/squid3/users <nom de l'utilisateur> <mot de passe>
Vérifions que çeci fonctionne, en lançant « à la main » le module
d'authentification /usr/lib/ncsa_auth. Nous entrerons alors dans une boucle où il faudra entrer sur une ligne un nom d'utilisateur et son mot de passe, séparés par une espace :
# /usr/lib/squid3/ncsa_auth /etc/squid3/users moussa root
OK
Configurer Squid pour réclamer l’identification
Nous devons commencer par fournir quelques directives de type auth_param dans le fichier squid.conf :
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/users auth_param basic children 5
auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours
program, indiquez le chemin du module ncsa_auth, suivi du chemin du fichier des utilisateurs, séparés par une espace.
children, 5 est une valeur usuelle. Si vous avez de nombreux utilisateurs, il sera peut-être nécessaire d'augmenter ce nombre.
realm, n'est rien d'autre qu'un texte qui apparaîtra dans la fenêtre de demande d'identification.
credentialsttl, durée de vie de l'identification. A condition bien sûr que le navigateur ne soit pas fermé avant.
Il nous faut maintenant créer une “acl” supplémentaire, pour obliger l'identification :
acl Users proxy_auth REQUIRED
Puis n'autoriser l'accès que si le client est dans notre réseau et que l'identification est réussie :
http_access allow LocalNet Users
Squid demande une authentification avec la connexion :