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.
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».
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:
httpd (servidor web Apache), que incluye la herramienta htpasswd.openldap-servers y un servicio de directorio LDAP configurado y operativo.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).
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
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.
El primer paso es crear un archivo que contendrá las credenciales. Por seguridad, debe ser propiedad del usuario squid y tener permisos restrictivos.
Cree el archivo (por ejemplo, en /etc/squid/claves):
touch /etc/squid/claves
Establezca los permisos y propietario correctos:
chmod 600 /etc/squid/claves
chown squid:squid /etc/squid/claves
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.
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
children 5: Número de procesos ayudantes que se mantienen en espera para atentar peticiones de autenticación.realm: El mensaje que verán los usuarios en la ventana emergente del navegador.credentialsttl 2 hours: Tiempo durante el cual Squid recordará una autenticación exitosa.Para que la autenticación sea efectiva, debe crear una Lista de Control de Acceso (ACL) especial y modificar las reglas de acceso existentes.
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
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
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:
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)./etc/squid/claves. Si son correctas, la navegación procederá con normalidad./etc/squid/claves usando htpasswd -v /etc/squid/claves usuario./var/log/squid/squid.out y /var/log/squid/cache.log. Errores como «Unable to open password file» indican permisos incorrectos o ruta errónea al archivo. Asegúrese de que la ruta al ejecutable basic_ncsa_auth sea correcta para su distribución.http_access allow localnet usuarios_autenticados esté presente y que estén ausentes otras reglas allow que permitan el acceso sin autenticación colocadas antes que ella. El orden de las reglas en Squid es crucial.La autenticación se combina perfectamente con otros controles de Squid. Puede crear ACLs adicionales para, por ejemplo:
acl gerencia proxy_auth jefe1 jefe2 gerente: Una lista que solo contiene ciertos usuarios autenticados.http_access allow gerencia: Una regla que permita a esos usuarios específicos saltarse otras restricciones (como horarios o filtrado de contenido).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.