12.4. Authentification Squid
Pour l’authentification, le code source de
Squid
connecte avec quelques back-ends d'authentification, également appelés helpers
, tels que SMB (serveur SMB comme Windows NT ou Samba), DB (une base de données SQL), ou LDAP (Lightweight Directory Access Protocol). Les utilisateurs sont authentifiés si Squid
est configuré pour utiliser les ACL proxy_auth
.
Indiquer à
Squid
quel programme helper d'authentification utiliser avec une directive auth_param
dans /etc/squid/squid.conf
. Spécifier le nom du programme et les options en ligne de commande si nécessaire.
auth_param scheme parameter [setting]
Exemple 12.6. Ajout d'ACL proxy_auth
Ajouter des entrées d'ACL
proxy_auth
à votre configuration Squid
en indiquant les noms d'utilisateurs. Dans cet exemples, les utilisateurs nommés lisa, sarah, joe, et frank sont autorisés d'utiliser le proxy à tout moment. Les autres utilisateurs ne peuvent le faire que pendant la journée.
acl foo proxy_auth REQUIRED acl bar proxy_auth lisa sarah frank joe acl daytime time 08:00-17:00 http_access allow foo daytime http_access allow bar http_access deny all
12.4.1. Authentication avec LDAP
Dans cette installation,
Squid
utilise LDAP pour authentifier les utilisateurs avant de les autoriser à surfer sur l'internet. Le code source Squid
connecte à un back-end d'authentification (LDAP). Les utilisateurs doivent ensuite saisir leur nom d'utilisateur et mot de passe avant de pouvoir continuer sur les pages web. Squid
utilise l'assistant d'authentification LDAP de Squid
, squid_ldap_auth
, ce qui permet à Squid
de se connecter à un répertoire LDAP afin de valider le nom d'utilisateur et le mot de passe pour une authentication HTTP de base.
Mofifier le fichier
/etc/squid/squid.conf
comme suit afin de pouvoir connecter Squid
à ldap.example.com:
auth_param basic program /usr/lib64/squid/basic_ldap_auth -b "dc=example,dc=com" -f "uid=%s" -c 2 -t 2 -h ldap.example.com otherldap.example.com
Si vous souhaitez authentifier des utilisateur
Squid
sur un serveurLDAP via un canal SSL/TLS sécurisé, passer l'argument -ZZ
au programme squid_ldap_auth
.
auth_param basic program /usr/lib64/squid/basic_ldap_auth -v 3 -ZZ -b "dc=yourcompany,dc=com" -D uid=some-user,ou=People,dc=yourcompany,dc=com -w password -f uid=%s ldap.yourcompany.com
Si vous souhaitez vous authentifier auprès de serveurs OpenLDAP, comme TLS et SSL, vous devrez spécifier
auth_param
dans le fichier /etc/squid/squid.conf
:
- Modifier
/etc/squid/squid.conf
pour TLS :auth_param basic program /usr/lib64/squid/basic_ldap_auth -Z -b "dc=example,dc=com" -f "uid=%s" -c 2 -t 2 -h ldap.example.com
et pour SSL :auth_param basic program /usr/lib64/squid/basic_ldap_auth -b "dc=example,dc=com" -f "uid=%s" -c 2 -t 2 -H ldaps://ldap.example.com
Quand-b - Specifies the base DN under which the users are located. -f - Specifies LDAP search filter to locate the user DN. -c - Specifies timeout used when connecting to LDAP servers. -t - Specifies time limit on LDAP search operations. -h - Specifies the LDAP server to connect to. -H - Specities the LDAP server to connect to by LDAP URI
- Redémarrer le service
Squid
~]#
systemctl restart squid
12.4.2. Authentication avec Kerberos
Suivez la procédure pour configurer le proxy
Squid
dans Red Hat Enterprise Linux 7 afin d'utiliser l’authentification Kerberos
. De plus, comme prérequis, commencez par installer Samba, le serveur de fichiers Common Internet File System (CIFS) pour Red Hat Enterprise Linux. Pour plus d’informations sur l’installation de Samba, voyez la section Samba dans le Guide de l’administrateur systèmes de Red Hat Enterprise Linux 7.
Procédure 12.4. Configurer Squid dans Red Hat Enterprise Linux 7 pour utiliser l'authentification Kerberos
- Configurer
Squid
pour rejoindre un domaine AD (Active Directory).- Modifier le fichier
/etc/krb5.conf
:[libdefaults] default_realm = EXAMPLE.COM dns_lookup_kdc = no dns_lookup_realm = no default_keytab_name = /etc/krb5.keytab ; for Windows 2003 default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 ; for Windows 2008 with AES ; default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 ; default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 ; permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 [realms] EXAMPLE.COM = { kdc = 192.168.0.1 admin_server = 192.168.0.1 } [domain_realm] example.com = EXAMPLE.COM .example.com = EXAMPLE.COM [logging] kdc = FILE:/var/log/kdc.log admin_server = FILE:/var/log/kadmin.log default = FILE:/var/log/krb5lib.log
- Vérifier par la commande
kinit
:~]#
kinit testuser1
~]#
kinit administrator
- Modifier le fichier
/etc/samba/smb.conf
comme suit :[global] workgroup = EXAMPLE password server = 192.168.0.1 # Remember to put the realm all in CAPS: realm = EXAMPLE.COM security = ads idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 template shell = /bin/bash winbind use default domain = true winbind offline logon = false winbind enum users = yes winbind enum groups = yes encrypt passwords = yes log file = /var/log/samba/log.%m max log size = 50 passdb backend = tdbsam load printers = yes cups options = raw kerberos method = system keytab
- Rejoindre le domaine AD
~]#
net ads join -U Administrator
- Créer un onglet pour HTTP/fqdn par la commande
net ads keytab
~]#
kinit administrator
~]#export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab
~]#net ads keytab CREATE
~]#net ads keytab ADD HTTP
et vérifier le fichier keytab~]#
klist -k /etc/squid/HTTP.keytab
Note
Veillez à ce que le nom d'hôte soit bien défini dans le fichier/etc/hosts
- Les fichiers doivent être inclus dans
Squid
.~]#
rpm -q squid
squid-3.1.10-1.el6.x86_64~]#
rpm -ql squid | grep kerb
/usr/lib64/squid/negotiate_kerberos_auth /usr/lib64/squid/negotiate_kerberos_auth_test /usr/lib64/squid/squid_kerb_auth /usr/lib64/squid/squid_kerb_auth_test
- Modifier
/etc/squid/squid.conf
comme suitauth_param negotiate program /usr/lib64/squid/squid_kerb_auth -d -s HTTP/squid.example.com@EXAMPLE.COM auth_param negotiate children 10 auth_param negotiate keep_alive on acl kerb_auth proxy_auth REQUIRED (content truncated) http_access allow kerb_auth http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all (content truncated)
- Définir le fichier .keytab sur lecture (read) par le propriétaire du processus
Squid
:~]#
chgrp squid /etc/squid/HTTP.keytab
~]#
chmod g+r /etc/squid/HTTP.keytab
- Ajouter les lignes suivantes au fichier
/etc/sysconfig/squid
:KRB5_KTNAME="/etc/squid/HTTP.keytab " export KRB5_KTNAME
- Démarrer le service
Squid
~]#
service squid start
- Configuration un client Kerberos et configurer votre navigateur pour qu'il utilise le serveur proxy de
Squid
. Obtenir un ticket Kerberos du KDC (Key Distribution Center).~]#
kinit testuser1
Essayez d'accéder à un site. Le navigateur ne doit pas vous demander un nom d'utilisateur ou un mot de passe.