Configuración de Squid: Acceso por Autenticación

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción

Implementar un sistema de autenticación para el acceso a Internet proporciona una capa de control adicional y gran flexibilidad. Permite gestionar quiénes acceden a los recursos de red con independencia de la máquina física desde la que se conecten, estableciendo un doble filtro: primero por dirección IP de la red y luego por credenciales de usuario.

Este documento presupone la lectura previa y la configuración exitosa descrita en el manual «Configuración de Squid: Opciones básicas».

Equipamiento lógico necesario

Para implementar los procedimientos de autenticación descritos en este manual, se requiere tener instalado el paquete squid. Para los métodos específicos, se necesitará también:

Eligiendo el módulo de autenticación

Squid soporta diversos mecanismos de autenticación. Este manual cubre los dos más comunes: mediante un archivo de contraseñas local (simple y directo) y mediante un servidor de directorio LDAP (robusto y centralizado).

Autenticación a través del módulo LDAP

Este método es ideal para entornos corporativos donde las credenciales de usuario ya están gestionadas en un directorio central como OpenLDAP o Active Directory. Solo se necesita definir la rama (branch) del directorio y la dirección del servidor LDAP.

La sintaxis básica del ayudante (helper) de autenticación squid_ldap_auth es:

squid_ldap_auth -b "Directorio-a-utilizar" servidor-ldap-a-utilizar

Ejemplo: Autenticar contra la rama ou=People,dc=ejemplo,dc=org en un servidor LDAP local.

squid_ldap_auth -b "ou=People,dc=ejemplo,dc=org" 127.0.0.1

Para integrarlo en Squid, edite el archivo de configuración y añada la línea correspondiente en la sección de parámetros de autenticación. La ruta exacta del ejecutable puede variar según la distribución.

vim /etc/squid/squid.conf

Añada una línea similar a la siguiente, ajustando la ruta del programa si es necesario:

auth_param basic program /usr/lib/squid/squid_ldap_auth -b "ou=People,dc=ejemplo,dc=org" 127.0.0.1

Autenticación a través del módulo NCSA (archivo de contraseñas)

El módulo basic_ncsa_auth (a menudo llamado ncsa_auth) ofrece una autenticación simple y efectiva mediante un archivo de texto que contiene usuarios y contraseñas cifradas. Es la opción recomendada para entornos más pequeños o cuando se carece de un directorio LDAP.

Creación y gestión del archivo de contraseñas

El primer paso es crear un archivo que contendrá las credenciales. Por seguridad, debe ser propiedad del usuario squid y tener permisos restrictivos.

  1. Cree el archivo (por ejemplo, en /etc/squid/claves):

    touch /etc/squid/claves
  2. Establezca los permisos y propietario correctos:

    chmod 600 /etc/squid/claves
    chown squid:squid /etc/squid/claves
  3. Añada usuarios con la herramienta htpasswd (del paquete httpd). Se le pedirá teclear y confirmar la contraseña para el usuario joelbarrios:

    htpasswd /etc/squid/claves joelbarrios

    ⚠️ Importante: Las cuentas creadas aquí carecen de relación y son exclusivas para el acceso al Servidor Intermediario. Carecen de vínculo con las cuentas del sistema operativo, correo electrónico u otros servicios.

Configuración del módulo en Squid

Edite el archivo de configuración principal de Squid:

vim /etc/squid/squid.conf

Localice o añada la sección de parámetros de autenticación básica. Especifique la ruta completa al ayudante (helper) basic_ncsa_auth seguida de la ruta al archivo de contraseñas creado. La ruta al ejecutable puede diferir; en distribuciones modernas suele ser /usr/lib64/squid/basic_ncsa_auth.

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/claves

Además, es necesario definir algunos parámetros adicionales para el esquema de autenticación básica. Añada las siguientes líneas después de la anterior:

auth_param basic children 5
auth_param basic realm "Por favor, introduzca sus credenciales para el Proxy"
auth_param basic credentialsttl 2 hours

Listas y reglas de control de acceso para autenticación

Para que la autenticación sea efectiva, debe crear una Lista de Control de Acceso (ACL) especial y modificar las reglas de acceso existentes.

  1. Defina una ACL de autenticación: En la sección de ACL de /etc/squid/squid.conf, añada una línea que cree una lista basada en la autenticación exitosa de un usuario. REQUIRED indica que cualquier usuario autenticado es válido.

    acl usuarios_autenticados proxy_auth REQUIRED
  2. Modifique la regla de acceso: La regla que actualmente permite el acceso a la red local (localnet) debe combinarse con la nueva ACL de autenticación. Cambie la regla existente:

    De:

    http_access allow localnet

    A:

    http_access allow localnet usuarios_autenticados

    Esta nueva regla establece que para ser permitido, el cliente debe cumplir ambas condiciones: pertenecer a la red localnet Y haber proporcionado credenciales válidas (perteneciendo así a usuarios_autenticados).

Ejemplo de configuración final:

La sección de ACLs podría verse así (usando el bloque de red coherente 192.168.100.0/24):

# Listas de Control de Acceso (ACLs) básicas
acl all src 0.0.0.0/0
acl manager proto cache_object
acl localhost src 127.0.0.1/8
acl localnet src 192.168.100.0/24

# ACL para usuarios autenticados
acl usuarios_autenticados proxy_auth REQUIRED

Y la sección de reglas de acceso (http_access) quedaría de la siguiente forma:

# Reglas de Control de Acceso
http_access allow localhost
http_access allow localnet usuarios_autenticados
http_access deny all

Aplicación de cambios y pruebas

Una vez modificada la configuración, es necesario recargar Squid para que los cambios surtan efecto.

Para sistemas con SystemD (AlmaLinux, Rocky Linux, RHEL 8+):

systemctl reload squid

Para sistemas con SysVinit (ALDOS):

service squid reload

Para probar la configuración:

  1. En un navegador de un cliente dentro de la red 192.168.100.0/24, configure el Servidor Intermediario (proxy) manualmente con la dirección y puerto de su servidor Squid (ej: 192.168.100.2:3128).
  2. Intente navegar a cualquier sitio web. El navegador debe mostrar inmediatamente una ventana emergente solicitando nombre de usuario y contraseña.
  3. Introduzca las credenciales de un usuario creado en el archivo /etc/squid/claves. Si son correctas, la navegación procederá con normalidad.

Depuración de problemas comunes

Integración con otros controles

La autenticación se combina perfectamente con otros controles de Squid. Puede crear ACLs adicionales para, por ejemplo:

Próximos pasos

Con la autenticación configurada, tiene un control granular sobre el acceso a Internet. Para continuar fortaleciendo su infraestructura, considere implementar:

Para administrar de forma más eficiente un gran número de usuarios, evaluar la migración a autenticación LDAP es el paso lógico siguiente.