Proxy SQUID avec authentification via Samba.

But recherché

Le proxy SQUID note dans ses logs tout le trafic http qui lui est demandé.

Chaque requete est notée avec l’adresse ip de l’utilisateur comme référence.
Or les adresses ip pouvant être dynamiques, cela n’est pas une information suffisante pour identifier la personne qui a effectué la requête.
Pour faciliter l’usage des statistiques du proxy, il est bien plus simple d’avoir le nom de la personne concernée dans les logs.

Attention, identifier une personne nécessite que celle-ci soit informée de la réalisation de statistiques et ai accepté une charte informatique par sa signature.
Sensibilisez vos utilisateurs au fait qu’ils n’ont pas intérêt de divulguer leur mot de passe.

L’authentification permet une identification, par la saisie d’un login et mot de passe lors de l’ouverture du navigateur.

Ici, on va utiliser le même login de connexion que celui utilisé pour se connecter aux partages de fichiers Samba.

Mise en oeuvre

La mise en oeuvre necessitte des manipulations sur le serveur SAMBA et sur le serveur SQUID.
Si les deux services sont sur la même machine, c’est encore plus simple.

– Sur le serveur SQUID, il faut modifier le fichier /etc/squid/squid.conf comme ceci :

Je considère que le nom de domaine SAMBA est MYDOMAIN et l’adresse ip du serveur SAMBA est 192.168.1.1


#-------------------------------------------------------------------
# Ajoutez ces lignes au dessous de l'exemple
# donne dans le fichier d'origine squid.conf
#-------------------------------------------------------------------
#
# Déclaration de l'authentification
#
auth_param basic program /usr/lib/squid/smb_auth -W MYDOMAIN -U 192.168.1.1
#
# On lance 5 processus d'authentificaton afin d'accélérer le traîtement
auth_param basic children 5
#
# Message affiche lors de la demande de mot de passe
#
auth_param basic realm Indiquez un login et un mot de passe
#
# delai de validite du mot de passe
#
# passe ce delai, le mot de passe sera a nouveau demande.
# cela evite l'usage des navigateurs laisses ouverts par les
# utilisateurs durant la pause dejeuner par exemple.
#
# auth_param basic credentialsttl 30 minutes
auth_param basic credentialsttl 2 hours

#-------------------------------------------------------------------
# Ajouter ces lignes avant le premier http_access non commente


acl mo2pass proxy_auth REQUIRED
http_access allow mo2pass
#-------------------------------------------------------------------

Pour « clarifier » le fichier, je crée les lignes juste après
les commentaires détaillant la variable utilisée. Cela permet d’avoir les explications à proximité de la variable, cela peut servir…

L’option -U 192.168.1.1 indiquant l’adresse ip du contôleur de domaine est peut être superflue dans votre cas, à vous de tester sans cette directive avant de fixer la syntaxe complète de la commande dans le fichier squid.conf.

Pour tester le fonctionnement avant de modifier SQUID, on peut utiliser la commande suivante à la console du serveur Squid :

echo -e NomUtilisateur MotDePasse | /usr/lib/squid/smb_auth -W NOMDUDOMAINE -U IP.DU.SERVEUR.SAMBA -d

On doit obtenir OK si l’authentification fonctionne.

L’option -d sert à activer le debug, elle ne doit pas apparaitre dans la syntaxe du paramètre auth_param du fichier squid.conf.

Quand la syntaxe est validée et que vous avez mis à jour votre paramètre auth_param, il faut demander à Squid de relire sa configuration.

Si SQUID est déjà lancé, il faut lui envoyer la commande squid -k reconfigure

Si SQUID n’est pas lancé, démarrez le service pour vérifier le fonctionnement. Utilisez la commande /etc/init.d/squid start

Attention !

J’ai rencontré un bug avec le squid fourni avec une CentOS 4.4 qui doit être identique sur une Redhat.

Ce bug se matérialisait comme ceci, losrque je lançait le smb_auth « à la main »…

echo -e test motdepasse | /usr/lib/squid/smb_auth -W mydomain -U 192.168.1.1 -d

Message d’erreur :

/usr/lib/squid/smb_auth.sh: line 50: /usr/local/samba/bin/nmblookup: No such file or directory

Pour corriger ce bug du rpm, j’ai utilisé cette manipulation :

mkdir -p /usr/local/samba/bin
ln -s /usr/bin/smbclient /usr/local/samba/bin/
ln -s /usr/bin/nmblookup /usr/local/samba/bin/

– Sur le serveur Samba, il faut créer un fichier nommé proxyauth dans le dossier correspondant au partage netlogon du serveur Samba.

Ce fichier proxyauth doit contenir tout simplement le texte « allow ».

Pour ce faire, rien de plus simple :

Se placer dans le dossier du partage NETLOGON puis utiliser la commande "echo allow > proxyauth".

Affecter le droit lire sur ce fichier au groupe pouvant se connecter à Internet via SQUID, si on ne spécifie rien, c’est tout le monde qui a un droit de lecteure, et donc toute personne avec un bon mot de passe Samba peut utiliser Internet ).

Création d’un utilisateur

La création d’un compte Samba sort de cette doc, mais pour tester, voici les commandes pour en créer un…

useradd test
smbpasswd -a test

Un mot de passe vous sera demandé ainsi qu’une confirmation de ce dernier.

Paramétrez votre navigateur pour utiliser une connexion proxy, en indiquant l’adresse ip de votre serveur et le port 3128 ( port standard squid, indiqué par la variable http_port ).

Quand vous lancez votre navigateur, un login vous est demandé. Entrez donc test comme nom d’utilisateur et le mot de passe que vous avez indiqué.

Si vous ne donnez pas un mot de passe correct, vous aurez un message d’erreur.

A partir de maintenant, les logs de squid situés dans le fichier /var/squid/access.log, mentionnent le nom d’utilisateur saisi dans le navigateur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.