Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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:
  1. 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
  2. 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

  1. Configurer Squid pour rejoindre un domaine AD (Active Directory).
    1. 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
    2. Vérifier par la commande kinit :
      ~]# kinit testuser1
      ~]# kinit administrator
    3. 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
    4. Rejoindre le domaine AD
      ~]# net ads join -U Administrator
  2. 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
  3. 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
  4. Modifier /etc/squid/squid.conf comme suit
    auth_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)
  5. 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
  6. Ajouter les lignes suivantes au fichier /etc/sysconfig/squid :
    KRB5_KTNAME="/etc/squid/HTTP.keytab "
    export KRB5_KTNAME
  7. Démarrer le service Squid
    ~]# service squid start
  8. 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.