Squid con soporte ldap
tagline: De openSUSE
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
Consideraciones iniciales
para el buen desempeño de este procedimiento debe leer y ejecutar:
1. Configurar LDAP usando YaST
2. Ingreso de usuarios y grupos en LDAP usando YaST
3. Instalar SQUID
4. Conocimientos de SQUID y manejo de un editor tipo vi/nano/pico.
Estructura de ejemplo
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 [1]
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/squid_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/squid_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
el archivo squid.conf que acompaña a opensuse esta ampliamente documentado, la documentación antecede a la variable asi, observamos
# TAG: auth_param # This is used to define parameters for the various authentication # schemes supported by Squid. # # format: auth_param scheme parameter [setting] # # The order in w.....
Estas etiquetas "TAG:" son muy útiles para efectos de localización Ahora busque TAG: Auth_param luego desplácese al final de la documentación de auth_param e ingrese la siguiente linea (debe quedar mas o menos asi)
auth_param basic program /usr/sbin/squid_ldap_auth -b "ou=people,dc=Antiquitera,dc=site" -v 3
Ahora busque la etiqueta TAG: acl y desplácese al final del la documentación sobre acl e ingrese la siguente linea
acl ldapauth proxy_auth REQUIRED
Ahora busque TAG: http_access y desplácese al final de la documentación sobre 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
rcsquid restart
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 squid_ldap_group, 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
squid_ldap_group -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/squid_ldap_group -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
Localize TAG: external_acl_type, desplácese al final de la documentación de external_acl_type e ingrese la siguiente linea
external_acl_type group_auth %LOGIN /usr/sbin/squid_ldap_group -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
http_access deny all
Ahora puede reiniciar SQUID.
rcsquid restart
--jvelez 00:09 11 jul, 2009 (UTC)


