Dans la mise en oeuvre jusqu'ici, nous ne faisions pas de
contrôle sur les utilisateurs, seulement sur les IPs des machines
clientes. Nous pouvons identifier nos utilisateurs lorsqu'ils vont surfer sur
le Net. Dans ce cas, il nous faudra mettre en place un système
d'identification. Il y a plusieurs méthodes disponibles pour
authentifier nos utilisateurs du proxy. Elles font toutes appel à un
programme extérieur, différent suivant le moyen choisi. Nous
allons utiliser l'annuaire LDAP pour cette authentification.
III.2.1. Installation de LDAP
Comme annuaire LDAP, nous allons utiliser le logiciel
OpenLDAP qui est un logiciel libre basé sous la licence GNU GPL. La
dernière version actuelle stable est le 2.4.23. Nous allons
procéder à une installation automatique afin d'obtenir toutes les
dépendances nécessaires. L'installation se fait via la commande
:
#apt-get install slapd
Figure 8: Installation
annuaire LDAP
On remarque ainsi que le paquet slapd est installé avec
quatre autres paquets supplémentaires qui participent au bon
fonctionnement de l'annuaire.
III.2.2. Configuration de LDAP
Il faut tout d'abord indiquer dans le fichier
/etc/default/slapd la localisation du fichier de configuration de OpenLdap qui
est /etc/ldap/slapd.conf. Pour le faire, on doit ajouter cette ligne dans ce
fichier :
SLAPD_CONF="/etc/ldap/slapd.conf"
Il faut par la suite modifier le fichier
/etc/ldap/slapd.conf. Il faut autoriser les clients qui utilisent le protocole
LDAPv2 (par défaut seuls ceux utilisant LDAPv3 sont autorisés).
En effet, SQUID peut utiliser LDAPv2, donc dans ce cas il faut
décommenter cette ligne qui devient indispensable :
allow bind_v2
On ajoute aussi ces lignes suivantes :
suffix "dc=esp,dc=sn"
rootdn "cn=admin,dc=esp,dc=sn"
directory "/var/lib/ldap"
rootpw secret
Pour la dernière ligne, il faut remplacer secret par un
vrai mot de passe qui apparait alors
en clair ce qui est déconseillé. On peut crypter
ce mot de passe via la commande : #slappasswd
Puis on copie le résultat de cette commande à la
place de secret. On modifie enfin le
fichier /etc/ldap/ldap.conf et on ajoute ces deux lignes : BASE
dc=esp,dc=sn
URI ldap://127.0.0.1:389
Pour terminer, on redémarre le serveur :
/etc/init.d/slapd restart
III.2.3. Ajout d'entrées dans l'annuaire
LDAP
Ensuite, on peut consulter l'annuaire, ajouter, modifier, ou
retirer des entrées au moyen des commandes ldapsearch, ldapadd,
ldapmodify, ldapdelete (fournis avec OpenLDAP ) et de fichiers LDIF
(LDAP Data Interchange Format) ou bien à l'aide d'outils graphiques
comme l'interface php phpLDAPadmin. 2 nNdiginiINSErN1T 13 Sl1
NlIEWEir1NIidessous avec ce fichier ldif :
Figure 9: Fichier ldif des
entrées
Puis on ajoute ces informations dans l'annuaire de la
manière ci-dessous :
Figure 10: Ajout des
entrées dans l'annuaire
On peut aussi ajouter d'autres utilisateurs grlce aux fichiers
ldif ou bien à l'aide d'outils graphiques tel que phpLDAPadmin.
III.2.4. Configuration de SQUID pour
l'authentification
Pour la configuration de SQUID, on utilise l'option
squid_ldap_auth qui est ce qu'on appelle un « authentication helper
», c'est-à-dire un petit programme qui détermine si un
couple login/pass est correct : dans ce cas-ci, il communique avec un annuaire
LDAP afin de voir s'il existe une entrée dans l'annuaire ayant le login
indiqué dans un champ uid (ou cn ou autre si on le précise), et
le pass correspondant dans un champ userPassword. Ce programme doit renvoyer la
chaîne de caractères "OK" en cas de succès et "ERR" en cas
d'échec. On ajoute dans squid.conf les lignes suivantes :
auth_param basic program /usr/lib/squid/ldap_ auth -b
ou=profs,dc=esp,dc=sn -u cn -h 127.0.0.1
auth_param basic children 5
auth_param basic realm Identification requise par firewall_esp
auth_param basic credentialsttl 2 hours
Les paramètres utilisés pour squid_ldap_auth sont
:
· -b ou=profs,dc=esp,dc=sn : indique la base de
l'arborescence de l'annuaire à partir de laquelle on recherche
l'utilisateur qui essaie de s'authentifier
· -u cn : indique le type du login que l'on tape pour
s'authentifier (par exemple cn, uid...)
· -h 127.0.0.1 : adresse du serveur LDAP, il est ici sur la
même machine que le proxy
Les trois dernières lignes servent à :
· auth_param basic children 5 : le nombre de processus
d'authentification qui seront lancés en permanence sur le serveur,
chacun ne pouvant servir qu'une demande à la fois
· auth_param basic realm Identification requise par
firewall_esp : la chaîne de caractères qui suit realm sera
affichée par le navigateur utilisé lors de la demande
d'authentification, elle permet donc d'indiquer à l'utilisateur que
c'est au proxy qu'il essaie de se connecter
· auth_param basic credentialsttl 2 hours : la
durée au bout de laquelle l'authentication helper sera
relancé. Cela ne veut pas dire que la fenêtre demandant le
login/pass va se réafficher (cela ne dépend pas de
SQUID, mais du navigateur utilisé). Concrètement, au
bout du temps indiqué, il y aura de nouveau un
Cette règle indique que tous les utilisateurs
authentifiés auront un accès http mais suivant sa position par
rapport à d'autres règles d'accès, cet accès sera
peut-être restreint.
La capture ci-dessous illustre bien cette authentification.
SquidGuard est un module pour le serveur proxy SQUID. Ce
module ajoute des fonctionnalités plus avancées en matière
de filtrage basé sur une liste noire de sites web à bloquer et
une liste blanche de sites à ignorer. SquidGuard est ainsi un programme
redirecteur distribué sous licence GPL, c'est-à-dire que toutes
les trames HTTP seront redirigées vers SquidGuard pour être
analysées puis filtrées. Il est nécessaire pour cela
d'indiquer à Squid que les trames devront transitées par
SquidGuard avant de passer dans le cache du Proxy. La fonction de filtre de
SQUID est alors optimisée dans le programme SquidGuard ce qui lui permet
d'analyser des listes d'URLS en un temps record. Une fois lancé,
SquidGuard apparaîtra comme un processus fils de SQUID.