3.2. Configurer Squid comme proxy de mise en cache avec authentification LDAP
Cette section décrit une configuration de base de Squid en tant que proxy de mise en cache qui utilise LDAP pour authentifier les utilisateurs. La procédure prévoit que seuls les utilisateurs authentifiés peuvent utiliser le proxy.
Conditions préalables
-
La procédure suppose que le fichier
/etc/squid/squid.conf
est tel qu'il est fourni par le paquetsquid
. Si vous avez déjà modifié ce fichier, supprimez-le et réinstallez le paquet. -
Un utilisateur de service, tel que
uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com
, existe dans l'annuaire LDAP. Squid utilise ce compte uniquement pour rechercher l'utilisateur qui s'authentifie. Si l'utilisateur authentifiant existe, Squid se lie à l'annuaire en tant que cet utilisateur pour vérifier l'authentification.
Procédure
Installez le paquetage
squid
:# dnf install squid
Modifiez le fichier
/etc/squid/squid.conf
:Pour configurer l'utilitaire d'aide
basic_ldap_auth
, ajoutez l'entrée de configuration suivante au début de/etc/squid/squid.conf
:auth_param basic program /usr/lib64/squid/basic_ldap_auth -b "cn=users,cn=accounts,dc=example,dc=com" -D "uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com" -W /etc/squid/ldap_password -f "(&(objectClass=person)(uid=%s))" -ZZ -H ldap://ldap_server.example.com:389
Les paramètres transmis à l'utilitaire
basic_ldap_auth
dans l'exemple ci-dessus sont décrits ci-dessous :-
-b base_DN
définit la base de recherche LDAP. -
-D proxy_service_user_DN
définit le nom distinctif (DN) du compte que Squid utilise pour rechercher l'utilisateur qui s'authentifie dans l'annuaire. -
-W path_to_password_file
définit le chemin d'accès au fichier contenant le mot de passe de l'utilisateur du service proxy. L'utilisation d'un fichier de mot de passe permet d'éviter que le mot de passe soit visible dans la liste des processus du système d'exploitation. -f LDAP_filter
spécifie le filtre de recherche LDAP. Squid remplace la variable%s
par le nom d'utilisateur fourni par l'utilisateur qui s'authentifie.Le filtre
(&(objectClass=person)(uid=%s))
de l'exemple définit que le nom de l'utilisateur doit correspondre à la valeur définie dans l'attributuid
et que l'entrée du répertoire contient la classe d'objetsperson
.-ZZ
impose une connexion cryptée TLS sur le protocole LDAP à l'aide de la commandeSTARTTLS
. Omettre le-ZZ
dans les situations suivantes :- Le serveur LDAP ne prend pas en charge les connexions cryptées.
- Le port spécifié dans l'URL utilise le protocole LDAPS.
- Le paramètre -H LDAP_URL spécifie le protocole, le nom d'hôte ou l'adresse IP et le port du serveur LDAP au format URL.
-
Ajoutez l'ACL et la règle suivantes pour configurer Squid de manière à ce que seuls les utilisateurs authentifiés puissent utiliser le proxy :
acl ldap-auth proxy_auth REQUIRED http_access allow ldap-auth
ImportantSpécifiez ces paramètres avant la règle
http_access deny
all.Supprimez la règle suivante pour désactiver le contournement de l'authentification par proxy à partir des plages d'adresses IP spécifiées dans les ACL
localnet
:http_access allow localnet
L'ACL suivante existe dans la configuration par défaut et définit
443
comme un port qui utilise le protocole HTTPS :acl SSL_ports port 443
Si les utilisateurs doivent pouvoir utiliser le protocole HTTPS également sur d'autres ports, ajoutez une ACL pour chacun de ces ports :
acl SSL_ports port port_number
Mettez à jour la liste des règles
acl Safe_ports
pour configurer les ports sur lesquels Squid peut établir une connexion. Par exemple, pour configurer que les clients utilisant le proxy ne peuvent accéder aux ressources que sur les ports 21 (FTP), 80 (HTTP) et 443 (HTTPS), ne conservez que les déclarationsacl Safe_ports
suivantes dans la configuration :acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443
Par défaut, la configuration contient la règle
http_access deny !Safe_ports
qui définit le refus d'accès aux ports qui ne sont pas définis dansSafe_ports ACLs
.Configurez le type de cache, le chemin d'accès au répertoire du cache, la taille du cache et d'autres paramètres spécifiques au type de cache dans le paramètre
cache_dir
:cache_dir ufs /var/spool/squid 10000 16 256
Avec ces paramètres :
-
Squid utilise le type de cache
ufs
. -
Squid stocke son cache dans le répertoire
/var/spool/squid/
. -
La mémoire cache peut atteindre
10000
MB. -
Squid crée des sous-répertoires de niveau 1
16
dans le répertoire/var/spool/squid/
. Squid crée des sous-répertoires
256
dans chaque répertoire de niveau 1.Si vous ne définissez pas de directive
cache_dir
, Squid stocke le cache en mémoire.
-
Squid utilise le type de cache
Si vous définissez un répertoire de cache différent de
/var/spool/squid/
dans le paramètrecache_dir
:Créer le répertoire du cache :
# mkdir -p path_to_cache_directory
Configurez les permissions pour le répertoire du cache :
# chown squid:squid path_to_cache_directory
Si vous utilisez SELinux en mode
enforcing
, définissez le contextesquid_cache_t
pour le répertoire de cache :# semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv path_to_cache_directory
Si l'utilitaire
semanage
n'est pas disponible sur votre système, installez le paquetpolicycoreutils-python-utils
.
Stockez le mot de passe de l'utilisateur du service LDAP dans le fichier
/etc/squid/ldap_password
et définissez les autorisations appropriées pour le fichier :# echo "password" > /etc/squid/ldap_password # chown root:squid /etc/squid/ldap_password # chmod 640 /etc/squid/ldap_password
Ouvrez le port
3128
dans le pare-feu :# firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reload
Activez et démarrez le service
squid
:# systemctl enable --now squid
Verification steps
Pour vérifier que le proxy fonctionne correctement, téléchargez une page web à l'aide de l'utilitaire curl
:
# curl -O -L "https://www.redhat.com/index.html" -x "user_name:password@proxy.example.com:3128"
Si curl n'affiche aucune erreur et que le fichier index.html
a été téléchargé dans le répertoire actuel, le proxy fonctionne.
Étapes de dépannage
Pour vérifier que l'utilitaire d'aide fonctionne correctement :
Démarrez manuellement l'utilitaire d'assistance avec les mêmes paramètres que ceux utilisés dans le paramètre
auth_param
:# /usr/lib64/squid/basic_ldap_auth -b "cn=users,cn=accounts,dc=example,dc=com" -D "uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com" -W /etc/squid/ldap_password -f "(&(objectClass=person)(uid=%s))" -ZZ -H ldap://ldap_server.example.com:389
Saisissez un nom d'utilisateur et un mot de passe valides, puis appuyez sur Entrée:
user_name password
Si l'utilitaire d'aide renvoie
OK
, l'authentification a réussi.