Articles technique
Gérer l’authentification de Squid avec l’Active Directory à partir de Windows
Principe général |
Etablir la connexion à la base LDAP de l’AD. |
Indiquer quel groupe peut accéder à internet. |
Les ACL |
Autoriser ou refuser l’accès pour les ACL définies |
Conclusion |
Quelques liens utiles... |
Squid est un proxy qui permet de limiter l’accès à certains sites (paramétrage qui ne sera pas traité pas dans cette article) mais aussi de limiter l’accès à internet grâce à une authentification.
Cependant, avec la version 2.6 l’authentification par l’Active Directory ne se paramètre pas de la même manière qu’avec les versions précédentes.
Principe général
Pour limiter les accès à internet, il est possible de mettre en place un proxy pour qu’un utilisateur non autorisé ne puisse avoir accès à certains sites (dans notre exemple il sera demandé une authentification pour tous les sites). Pour cela, il faut créer un groupe dans l’Active Directory avec tous les utilisateurs concerné par ce privilège. L’authentification se fera donc grâce aux comptes créés dans ce groupe.
Plus techniquement, il faut que Squid se connecte au LDAP de l’Active Directory et qu’il vérifie que le login et mot de passe entrés dans la boite de dialogue correspondent à un compte existant dans le groupe prédéfini.
Configurer Squid
Après avoir téléchargé et installé Squid2.6 pour Windows,
on peut remarquer, par défaut, un dossier Squid est créé à la racine du disque système.
A l’intérieur de celui-ci se trouve deux dossiers primordiaux pour notre configuration : libexec
et etc
, qui rappellent l’architecture des dossiers linux.
Le fichier de configuration principal de Squid se trouve dans /etc
et se nomme
squid.conf
. Dans /libexec
, seulement deux exécutables serviront, squid_ldap_auth.exe
pour l’authentification à la base LDAP et
squid_ldap_group.exe
pour vérifier que le compte existe effectivement dans le groupe.
Pour la suite, tous les champs en gras dans les lignes de configuration sont à personnaliser selon la situation. Mais il faut garder une certaine cohérence dans les noms utilisés, que ce soit d’un point de vue fonctionnel ou de compréhension globale.
Etablir la connexion à la base LDAP de l’AD.
Dans C:\squid\etc\squid.conf
, aller dans le paragraphe « Tag : auth_param
» et entrer les lignes suivantes:
auth_param basic program C:/Squid/libexec/squid_ldap_auth.exe -R -u CN -b
OU=Utilisateurs,DC=ma_societe,DC=com
-D CN=Administrateur,CN=Users,DC=ma_societe,DC=com
-w mdp_admin -h ip_serveur
auth_param basic children 5
auth_param basic realm Proxy Ma Société
Le programme qui sert à la connexion à la base LDAP de l’AD est squid_ldpa_auth.exe qui se trouve dans le dossier libexec de squid. Ce programme prend différents paramètres :
- -R Est obligatoire pour une connexion à l’AD.
- -u Pour se connecter à un compte de l’AD.
- -b Pour indiquer dans quel OU se trouve le compte avec lequel on va s’authentifier sur l’AD.
- -D Pour indiquer le compte et son chemin complet (il faut que ca soit un compte administrateur de l’AD !).
- -w Pour le mot de passe de se compte admin
- -h L’adresse IP du serveur où se trouve l’AD (ou bien localhost si on se trouve en local)
La deuxième ligne va définir combien de processus fils va créer Squid.
Pour la dernière ligne, « Proxy Ma société » sera affiché dans la boîte de dialogue lors de la demande d’authentification pour accéder à un page web.
Indiquer quel groupe peut accéder à internet.
Toujours dans C:\squid\etc\squid.conf
, à la suite, dans le paragraphe « Tag : external_acl_type
», ajouter cette ligne :
external_acl_type ldap_group %LOGIN C:/Squid/libexec/squid_ldap_group.exe
-u CN -b OU=Utilisateurs,DC=ma_societe,DC=com
-f (&(CN=%u)(objectClass=person)((memberOf=cn=WebUsers,
OU=Utilisateurs,DC=ma_societe,DC=com)))
-h ip_serveur
Le programme qui permettra de vérifier qu’un utilisateur qui veut s’authentifier appartient au bon groupe, est squid_ldap_group.exe qui se trouve dans libexec de squid. Ce programme prend aussi différents paramètres :
- ldap_group est le nom de l’acl (mais il peut être changé)
- %LOGIN car la connexion se fait par un login
- -u Pour se connecter à un compte de l’AD
- -b Pour l’emplacement des utilisateurs.
- -f C’est le filtre, dans notre cas on vérifie que l’identifiant entré correspond à une personne (objectClass=person) membre du groupe WebUsers (le nom est à définir pour votre groupe) de l’AD.
- -h L’adresse IP du serveur où se trouve l’AD (ou bien localhost si on se trouve en local)
Les ACL
Dans le même fichier de configuration, il faut maintenant paramétrer les ACL (Access Control List).
Ainsi, il faut ajouter les lignes suivantes :
acl internetgroup external ldap_group internetOK
acl NOinternet external ldap_group internetNO
acl autentication proxy_auth REQUIRED
Ce qui est en italique correspond à des noms arbitraires qui peuvent être changés du moment où une certaine cohérence est respectée.
- La première ACL va permettre dans la suite de la configuration d’autoriser les utilisateurs du groupe.
- La deuxième ACL va, au contraire, permettre de bloquer tous ceux qui n’en font pas parti.
- La troisième ACL est ici pour rendre obligatoire l’authentification par le proxy.
Autoriser ou refuser l’accès pour les ACL définies
Toujours dans squid.conf, juste après avoir défini les ACL, il faut autoriser ou refuser l’accès à celles-ci.
Pour cela, il faut ajouter ces lignes :
http_access deny autentication NOinternet #Refuser les membres
http_access allow autentication internetgroup #Autoriser les membres
http_access allow all #Autoriser tous
Conclusion
Cette configuration peut être couplée avec d’autres paramètres tels que la limitation des sites autorisés, des ACL réseaux, etc.
Squid est donc un outil très complet mais pas toujours évident à configurer, surtout que les tutoriaux que l’on peut trouver ne sont pas toujours très clairs.
Quelques liens utiles...
Le site de Squid Site officiel de Squid | |
Télécharger Squid pour Windows | |
Corrections et améliorations apportées sur la version 2.6 Squid 2.6 Release Notes | |
Nous contacter Vous avez des remarques, des questions ? N'hésitez pas à nous contacter. |