Home Wiki > Squid con soporte ldap
Sign up | Login

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

Img0.png

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)