Rechercher

3.2. Configurer Squid comme proxy de mise en cache avec authentification LDAP

download PDF

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 paquet squid. 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

  1. Installez le paquetage squid:

    # dnf install squid
  2. Modifiez le fichier /etc/squid/squid.conf:

    1. 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'attribut uid et que l'entrée du répertoire contient la classe d'objets person.

      • -ZZ impose une connexion cryptée TLS sur le protocole LDAP à l'aide de la commande STARTTLS. 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.
    2. 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
      Important

      Spécifiez ces paramètres avant la règle http_access deny all.

    3. 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
    4. 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
    5. 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éclarations acl 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 dans Safe_ports ACLs.

    6. 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.

  3. Si vous définissez un répertoire de cache différent de /var/spool/squid/ dans le paramètre cache_dir:

    1. Créer le répertoire du cache :

      # mkdir -p path_to_cache_directory
    2. Configurez les permissions pour le répertoire du cache :

      # chown squid:squid path_to_cache_directory
    3. Si vous utilisez SELinux en mode enforcing, définissez le contexte squid_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 paquet policycoreutils-python-utils.

  4. 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
  5. Ouvrez le port 3128 dans le pare-feu :

    # firewall-cmd --permanent --add-port=3128/tcp
    # firewall-cmd --reload
  6. 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 :

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

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.