7.3. Configuración de Squid como proxy de caché con autenticación kerberos


Esta sección describe una configuración básica de Squid como proxy de caché que autentifica a los usuarios en un Directorio Activo (AD) utilizando Kerberos. El procedimiento configura que sólo los usuarios autenticados pueden utilizar el proxy.

Requisitos previos

  • El procedimiento asume que el archivo /etc/squid/squid.conf es el proporcionado por el paquete squid. Si ha editado este archivo anteriormente, elimine el archivo y vuelva a instalar el paquete.
  • El servidor en el que desea instalar Squid es un miembro del dominio AD. Para más detalles, consulte Configuración de Samba como miembro del dominio en la documentación de Red Hat Enterprise Linux 8 Deploying different types of servers.

Procedimiento

  1. Instale los siguientes paquetes:

    yum install squid krb5-workstation
    Copy to Clipboard Toggle word wrap
  2. Autenticarse como administrador del dominio AD:

    # kinit administrator@AD.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap
  3. Cree un keytab para Squid y almacénelo en el archivo /etc/squid/HTTP.keytab:

    # export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab
    # net ads keytab CREATE -U administrator
    Copy to Clipboard Toggle word wrap
  4. Añade la entidad de crédito del servicio HTTP al keytab:

    # net ads keytab ADD HTTP -U administrador
    Copy to Clipboard Toggle word wrap
  5. Establezca el propietario del archivo keytab al usuario squid:

    # chown squid /etc/squid/HTTP.keytab
    Copy to Clipboard Toggle word wrap
  6. Opcionalmente, verifique que el archivo keytab contiene el principal de servicio HTTP para el nombre de dominio completamente calificado (FQDN) del servidor proxy:

    #  klist -k /etc/squid/HTTP.keytab
    Keytab name: FILE:/etc/squid/HTTP.keytab
    KVNO Principal
    ---- ---------------------------------------------------
    ...
       2 HTTP/proxy.ad.example.com@AD.EXAMPLE.COM
    ...
    Copy to Clipboard Toggle word wrap
  7. Edite el archivo /etc/squid/squid.conf:

    1. Para configurar la utilidad de ayuda negotiate_kerberos_auth, añada la siguiente entrada de configuración en la parte superior de /etc/squid/squid.conf:

      auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -k /etc/squid/HTTP.keytab -s HTTP/proxy.ad.example.com@AD.EXAMPLE.COM
      Copy to Clipboard Toggle word wrap

      A continuación se describen los parámetros pasados a la utilidad de ayuda negotiate_kerberos_auth en el ejemplo anterior:

      • -k file establece la ruta de acceso al archivo de tabulación de claves. Tenga en cuenta que el usuario squid debe tener permisos de lectura en este archivo.
      • -s HTTP/host_name@kerberos_realm establece el principal de Kerberos que utiliza Squid.

        Opcionalmente, puede activar el registro pasando uno o ambos de los siguientes parámetros a la utilidad de ayuda:

      • -i registra mensajes informativos, como el usuario que se autentifica.
      • -d activa el registro de depuración.

        Squid registra la información de depuración de la utilidad de ayuda en el archivo /var/log/squid/cache.log.

    2. Añade la siguiente ACL y regla para configurar que Squid sólo permita a los usuarios autentificados utilizar el proxy:

      acl kerb-auth proxy_auth REQUIRED
      http_access allow kerb-auth
      Copy to Clipboard Toggle word wrap
      Importante

      Especifique estos ajustes antes de la regla http_access deny all.

    3. Elimine la siguiente regla para desactivar la omisión de la autenticación del proxy desde los rangos de IP especificados en las ACL de localnet:

      http_access allow localnet
      Copy to Clipboard Toggle word wrap
    4. La siguiente ACL existe en la configuración por defecto y define 443 como un puerto que utiliza el protocolo HTTPS:

      acl puertos_SSL puerto 443
      Copy to Clipboard Toggle word wrap

      Si los usuarios deben poder utilizar el protocolo HTTPS también en otros puertos, añada una ACL para cada uno de estos puertos:

      acl Puerto SSL port_number
      Copy to Clipboard Toggle word wrap
    5. Actualice la lista de reglas de acl Safe_ports para configurar a qué puertos puede establecer una conexión Squid. Por ejemplo, para configurar que los clientes que utilicen el proxy sólo puedan acceder a los recursos del puerto 21 (FTP), 80 (HTTP) y 443 (HTTPS), mantenga sólo las siguientes declaraciones de acl Safe_ports en la configuración:

      acl Safe_ports port 21
      acl Safe_ports port 80
      acl Safe_ports port 443
      Copy to Clipboard Toggle word wrap

      Por defecto, la configuración contiene la regla http_access deny !Safe_ports que define la denegación de acceso a los puertos que no están definidos en las ACL de Safe_ports.

    6. Configure el tipo de caché, la ruta del directorio de la caché, el tamaño de la caché y otros ajustes específicos del tipo de caché en el parámetro cache_dir:

      cache_dir ufs /var/spool/squid 10000 16 256
      Copy to Clipboard Toggle word wrap

      Con estos ajustes:

      • Squid utiliza el tipo de caché ufs.
      • Squid almacena su caché en el directorio /var/spool/squid/.
      • El caché crece hasta 10000 MB.
      • Squid crea 16 subdirectorios de nivel 1 en el directorio /var/spool/squid/.
      • Squid crea subdirectorios 256 en cada directorio de nivel 1.

        Si no se establece una directiva cache_dir, Squid almacena la caché en la memoria.

  8. Si establece un directorio de caché diferente a /var/spool/squid/ en el parámetro cache_dir:

    1. Crear el directorio de la caché:

      # mkdir -p path_to_cache_directory
      Copy to Clipboard Toggle word wrap
    2. Configure los permisos para el directorio de la caché:

      # chown squid:squid path_to_cache_directory
      Copy to Clipboard Toggle word wrap
    3. Si ejecuta SELinux en modo enforcing, establezca el contexto squid_cache_t para el directorio de la caché:

      # semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?"
      # restorecon -Rv path_to_cache_directory
      Copy to Clipboard Toggle word wrap

      Si la utilidad semanage no está disponible en su sistema, instale el paquete policycoreutils-python-utils.

  9. Abra el puerto 3128 en el cortafuegos:

    # firewall-cmd --permanent --add-port=3128/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  10. Habilite e inicie el servicio squid:

    # systemctl enable --now squid
    Copy to Clipboard Toggle word wrap

Pasos de verificación

Para comprobar que el proxy funciona correctamente, descargue una página web utilizando la utilidad curl:

# curl -O -L "https://www.redhat.com/index.html" --proxy-negotiate -u : -x "proxy.ad.example.com:3128"
Copy to Clipboard Toggle word wrap

Si curl no muestra ningún error y el archivo index.html existe en el directorio actual, el proxy funciona.

Pasos para la resolución de problemas

Para probar manualmente la autenticación Kerberos:

  1. Obtenga un ticket Kerberos para la cuenta AD:

    # kinit user@AD.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap
  2. Opcionalmente, mostrar el billete:

    # klist
    Copy to Clipboard Toggle word wrap
  3. Utilice la utilidad negotiate_kerberos_auth_test para probar la autenticación:

    # /usr/lib64/squid/negotiate_kerberos_auth_test proxy.ad.example.com
    Copy to Clipboard Toggle word wrap

    Si la utilidad de ayuda devuelve un token, la autenticación tuvo éxito:

    Ficha: YIIFTAYGKwYBBQUCoIIFqDC...
    Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar. Explore nuestras recientes actualizaciones.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

Theme

© 2026 Red Hat
Volver arriba