7.2. Configuración de Squid como proxy de caché con autenticación LDAP
Esta sección describe una configuración básica de Squid como proxy de caché que utiliza LDAP para autenticar a los usuarios. El procedimiento configura que sólo los usuarios autenticados puedan utilizar el proxy.
Requisitos previos
-
El procedimiento asume que el archivo
/etc/squid/squid.confes el proporcionado por el paquetesquid. Si ha editado este archivo anteriormente, elimine el archivo y vuelva a instalar el paquete. -
Un usuario de servicio, como
uid=proxy_user,cn=users,cn=accounts,dc=example,dc=comexiste en el directorio LDAP. Squid utiliza esta cuenta sólo para buscar al usuario autentificador. Si el usuario de autenticación existe, Squid se vincula como este usuario al directorio para verificar la autenticación.
Procedimiento
Instale el paquete
squid:yum install squid
# yum install squidCopy to Clipboard Copied! Toggle word wrap Toggle overflow Edite el archivo
/etc/squid/squid.conf:Para configurar la utilidad de ayuda
basic_ldap_auth, añada la siguiente entrada de configuración en la parte superior de/etc/squid/squid.conf:auth_param programa básico /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
auth_param programa básico /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:389Copy to Clipboard Copied! Toggle word wrap Toggle overflow A continuación se describen los parámetros pasados a la utilidad de ayuda
basic_ldap_authen el ejemplo anterior:-
-B base_DNestablece la base de búsqueda LDAP. -
-D proxy_service_user_DNestablece el nombre distinguido (DN) de la cuenta que Squid utiliza para buscar al usuario autentificado en el directorio. -
-W path_to_password_fileestablece la ruta del archivo que contiene la contraseña del usuario del servicio proxy. El uso de un archivo de contraseña evita que la contraseña sea visible en la lista de procesos del sistema operativo. -f LDAP_filterespecifica el filtro de búsqueda LDAP. Squid sustituye la variable%spor el nombre de usuario proporcionado por el usuario autentificador.El filtro
(&(objectClass=person)(uid=%s))del ejemplo define que el nombre de usuario debe coincidir con el valor establecido en el atributouidy que la entrada del directorio contiene la clase de objetoperson.-ZZimpone una conexión cifrada por TLS sobre el protocolo LDAP mediante el comandoSTARTTLS. Omita el-ZZen las siguientes situaciones:- El servidor LDAP no admite conexiones cifradas.
- El puerto especificado en la URL utiliza el protocolo LDAPS.
- El parámetro -H LDAP_URL especifica el protocolo, el nombre del host o la dirección IP y el puerto del servidor LDAP en formato URL.
-
Añade la siguiente ACL y regla para configurar que Squid sólo permita a los usuarios autentificados utilizar el proxy:
acl ldap-auth proxy_auth REQUIRED http_access allow ldap-auth
acl ldap-auth proxy_auth REQUIRED http_access allow ldap-authCopy to Clipboard Copied! Toggle word wrap Toggle overflow ImportanteEspecifique estos ajustes antes de la regla
http_access denyall.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
http_access allow localnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow La siguiente ACL existe en la configuración por defecto y define
443como un puerto que utiliza el protocolo HTTPS:acl puertos_SSL puerto 443
acl puertos_SSL puerto 443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 número_de_puerto
acl puerto_SSL número_de_puertoCopy to Clipboard Copied! Toggle word wrap Toggle overflow Actualice la lista de reglas de
acl Safe_portspara 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 deacl Safe_portsen la configuración:acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443
acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443Copy to Clipboard Copied! Toggle word wrap Toggle overflow Por defecto, la configuración contiene la regla
http_access deny !Safe_portsque define la denegación de acceso a los puertos que no están definidos enSafe_ports ACLs.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
cache_dir ufs /var/spool/squid 10000 16 256Copy to Clipboard Copied! Toggle word wrap Toggle overflow Con estos ajustes:
-
Squid utiliza el tipo de caché
ufs. -
Squid almacena su caché en el directorio
/var/spool/squid/. -
El caché crece hasta
10000MB. -
Squid crea
16subdirectorios de nivel 1 en el directorio/var/spool/squid/. Squid crea subdirectorios
256en cada directorio de nivel 1.Si no se establece una directiva
cache_dir, Squid almacena la caché en la memoria.
-
Squid utiliza el tipo de caché
Si establece un directorio de caché diferente a
/var/spool/squid/en el parámetrocache_dir:Crear el directorio de la caché:
mkdir -p path_to_cache_directory
# mkdir -p path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Configure los permisos para el directorio de la caché:
chown squid:squid path_to_cache_directory
# chown squid:squid path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si ejecuta SELinux en modo
enforcing, establezca el contextosquid_cache_tpara el directorio de la caché:semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" restorecon -Rv path_to_cache_directory
# semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si la utilidad
semanageno está disponible en su sistema, instale el paquetepolicycoreutils-python-utils.
Guarde la contraseña del usuario del servicio LDAP en el archivo
/etc/squid/ldap_password, y establezca los permisos adecuados para el archivo:echo "password" > /etc/squid/ldap_password chown root:squid /etc/squid/ldap_password chmod 640 /etc/squid/ldap_password
# echo "password" > /etc/squid/ldap_password # chown root:squid /etc/squid/ldap_password # chmod 640 /etc/squid/ldap_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow Abra el puerto
3128en el cortafuegos:firewall-cmd --permanent --add-port=3128/tcp firewall-cmd --reload
# firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow Habilite e inicie el servicio
squid:systemctl enable --now squid
# systemctl enable --now squidCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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" -x "user_name:password@proxy.example.com:3128"
# curl -O -L "https://www.redhat.com/index.html" -x "user_name:password@proxy.example.com:3128"
Si curl no muestra ningún error y el archivo index.html se ha descargado en el directorio actual, el proxy funciona.
Pasos para la resolución de problemas
Para verificar que la utilidad de ayuda funciona correctamente:
Inicie manualmente la utilidad de ayuda con la misma configuración que utilizó en el parámetro
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
# /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:389Copy to Clipboard Copied! Toggle word wrap Toggle overflow Introduzca un nombre de usuario y una contraseña válidos, y pulse Intro:
user_name password
user_name passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si la utilidad de ayuda devuelve
OK, la autenticación tuvo éxito.