Squid con soporte ldap
Las personas encargadas de la edici贸n de esta p谩gina consideran que a煤n necesario efectuar cambios, quiz谩s importantes, en la misma. |
SQUID cuenta con una cantidad enorme de variables dentro de su fichero de configuraci贸n /etc/squid/squid.conf, el alcance de esta receta se limita al soporte LDAP.
Contenido
Introducci贸n
Que es SQUID
Squid es software libre que implementa un servidor proxy y un demonio para cach茅 de p谩ginas web.
Mas informaci贸n en http://es.wikipedia.org/wiki/Squid
Consideraciones iniciales
para el buen desempe帽o de este procedimiento debe:
- . Configurar LDAP
- . Saber ingresar Usuarios y grupos en LDAP
3. Saber instalar SQUID
4. Conocimientos de SQUID y manejo de un editor tipo vi | nano | pico.
Estructura de ejemplo
Autenticaci贸n simple
Aseg煤rese que el servidor LDAP funciona con el programa externo de autenticaci贸n, ejecute en la linea de comandos /usr/sbin/basic_ldap_auth -b "ou=people,dc=Antiquitera,dc=site" -v 3
- -b "ou=people,dc=Antiquitera,dc=site" indica donde se encuentran los usuarios de 谩rbol ldap
- -v 3 indica que se esta utilizando la versi贸n 3 del protocolo LDAP.
Al ejecutar el comando se da un usuario y su contrase帽a separadas por un espacio en blanco, si el usuario existe y la contrase帽a es la correcta el resultado es OK sino, el resultado es ERR Success
jvelez@Antiquitera:~>/usr/sbin/basic_ldap_auth -b "ou=people,dc=Antiquitera,dc=site" -v 3 pperez 13sktocnghkle7 OK pperez klxmruiwcmfg ERR Success
ahora como root edite el archivo squid.conf
vi /etc/squid/squid.conf
}ingrese estas lineas al inicio del archivo
auth_param basic program /usr/sbin/basic_ldap_auth -b "ou=people,dc=Antiquitera,dc=site" -v 3
Ahora busque la secci贸n de las ACL (al principio del archivo) e ingrese la siguiente linea
acl ldapauth proxy_auth REQUIRED
Ahora busque las lineas http_access y realice las siguientes modificaciones:
La linea http_access allow localhost, comentela, debe quedar as铆
# http_access allow localhost
Ingrese la siguiente linea
http_access allow ldapauth
Y finalize con:
http_access deny all
Las lineas anteriores que ingreso o modifico deben preceder a http_access deny all, de lo contrario SQUID las ignorara.
Ahora guardamos el archivo y salimos, luego reiniciamos SQUID con
systemctl restart squid.service
Luego de esto ya podemos configurar nuestro navegador favorito de Internet colocando la direcci贸n del proxy y el puerto a utilizar, si no se ha modificado, el 3128
Autorizaci贸n de grupos
Hasta ahora todos nuestros usuarios que est谩n en el DIT o 谩rbol LDAP (tienen una entrada valida con contrase帽a) navegan por Internet, ahora necesitamos que solo los usuarios que pertenecen a cierto grupo naveguen o que los usuarios de cierto grupo naveguen de forma restringida y otros sin restricciones, este proceso se llama autorizaci贸n, para esto SQUID se apoya en el programa externo ext_ldap_group_acl , nuevamente antes de incluirlo dentro del archivo de configuraci贸n de SQUID (/etc/squid/squid.conf) es bueno realizar pruebas desde la linea de comandos
/usr/sbin/ext_ldap_group_acl -b "ou=group,dc=antiquitera,dc=site" -f "(&(objectclass=posixGroup)(cn=%a)(member=uid=%v,ou=people,dc=antiquitera,dc=site))" -B "ou=people,dc=antiquitera,dc=site" -v 3 -s sub
Donde:
- -b "ou=group,dc=antiquitera,dc=site" indica donde se encuentra el contenedor de grupos dentro del 谩rbol LDAP
- -f "(&(objectclass=posixGroup)(cn=%a)(member=uid=%v,ou=people,dc=antiquitera,dc=site))", indica el filtro con que se realizara la busqueda dentro del arbol LDAP, (cn=%a) indica cual es el grupo objetivo de la busqueda, (member=uid=%v,ou=people,dc=antiquitera,dc=site) busca dentro del atributo member de los objetos de grupo del 谩rbol LDAP
- -B "ou=people,dc=antiquitera,dc=site" indica donde se encuentras los usuarios en el 谩rbol LDAP.
- -v 3 indica que se esta utilizando la versi贸n 3 del protocolo LDAP
- -s sub indica que la b煤squeda se realice "en profundidad" recursivamemte desde los puntos de entrada hasta las ultimas ramas del 谩rbol.
Al ejecutar el comando se da un usuario y un grupo asociado separados por un espacio en blanco, si el usuario existe y pertenece al grupo el resultado es OK sino, el resultado es ERR
jvelez@Antiquitera:~> /usr/sbin/ext_ldap_group_acl- b "ou=group,dc=antiquitera,dc=site" -f "(&(objectclass=posixGroup)(cn=%a)(member=uid=%v,ou=people,dc=antiquitera,dc=site))" -B "ou=people,dc=antiquitera,dc=site" -v 3 -s sub pperez tesoreria ERR pperez ventas OK
- Por motivos de formato del wiki la instrucci贸n se dividi贸 en tres lineas.
- Nota: el atributo member de los contenedores de grupos, contiene el nombre completo (ruta) del los objetos de usuario, por ejemplo para el usuario pperez el atributo completo member es uid=pperez,ou=people,dc=antiquitera,dc=site, otras implementaciones de grupos en LDAP usan el atributo memberUID, para este tipo de atributo el par谩metro de b煤squeda es (memberUID=%v)
Ahora se configurara SQUID para que solo los usuarios del grupo ventas puedan salir a Internet, para eso, habiendo ejecutado la configuraci贸n de #Autenticaci贸n simple siga los siguientes pasos.
Edite el archivo de configuraci贸n de SQUID.
vi /etc/squid/squid.conf
Ingrese al inicio del archivo /etc/squid la siguiente linea
external_acl_type group_auth %LOGIN /usr/sbin/ext_ldap_group_acl-b "ou=group,dc=antiquitera,dc=site" -f "(&(objectclass=posixGroup)(cn=%a)(member=uid=%v,ou=people,dc=antiquitera,dc=site))" -B "ou=people,dc=antiquitera,dc=site" -v3 -s sub
- Por motivo de formato del wiki la linea se dividi贸 en 3, en el archivo squid.conf debe quedar como una sola linea
Ahora busque TAG: acl y despl谩cese al final de la documentaci贸n de acl e ingrese la siguiente linea
acl Auth-internet external group_auth ventas
Aqui, Auth-internet es el nombre de la acl, Group_auth es el nombre de la acl externa definida en external_acl_type y ventas es el nombre del grupo en el Arbol ldap al cual le vamos a autorizar acceso a Internet
Ahora busque TAG: http_access y despl谩cese al final de la documentaci贸n de http_access y haga los siguentes cambios
La directiva http_access allow ldapauth comentela. debe quedar asi
# http_access allow ldapauth
Ingrese la siguente linea
http_access allow Auth-internet
Y finalize con br
http_access deny all
Ahora puede reiniciar SQUID.
systemctl start squid.service
Seguridad
Estos mecanismos son intr铆nsecamente inseguros.. tanto usuario como password se transmite en texto en claro entre el navegador cliente y el servidor squid
Autenticaci贸n kerberos clientes y servidor linux/Unix
En un ambiente solo linux una forma segura de autenticar clientes es mediante kerberos, el mecanismo se activa con
/usr/sbin/negotiate_kerberos_auth
ejecutar este programa en la linea de comandos no retornara nada, primero debe crear un principal HTTP/fqdn@REALEM con ayuda de kadmin.local en el servidor kerberos
kldap:/etc/squid # kadmin.local Authenticating as principal avelez/admin@ANTIQUITERA.SITE with password. kadmin.local: addprinc -randkey HTTP/kldap.antiquitera.site .... kadmin.local: ktadd -k /etc/squid/HTTP.keytab HTTP/kldap.antiquitera.site ... kadmin.local: exit
Luego cambie el propietario al archivo /etc/squid/HTTP.keytab para que pueda leerlo squid
kldap:/etc/squid chown squid:squid HTTP.keytab
y agregue las siguientes lineas a /etc/squid.conf al principio del archivo agregue esto
auth_param negotiate program /usr/sbin/negotiate_kerberos_auth -k /etc/squid/HTTP.keytab auth_param negotiate children 10 auth_param negotiate keep_alive on
donde finaliza la secci贸n de las acl's aguegue esto
acl password proxy_auth REQUIRED
http_access deny !password http_access allow password http_access deny all
reinice squid
kldap:/etc/squid # systemctl restart squid.service
En los clientes debe configurar el proxy.. direcci贸n del servidor proxy.. puerto squid (3128)
Eso es todo... por ahora
Edici贸n
Inicial
--jvelez 00:09 11 jul, 2009 (UTC)
Primera modificaci贸n - actualizaci贸n documento
--jvelez (discusi贸n) 17:26 7 ene 2017 (UTC)
-Se actualizo el documento para los nuevos programas
* /usr/sbin/basic_ldap_auth * /usr/sbin/ext_ldap_group_acl
-Se adiciono la parte de kerberos
* /usr/sbin/negotiate_kerberos_auth