Squid con soporte ldap

Saltar a: navegaci贸n, buscar
Icon-usage.png
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.

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:

  1. . Configurar LDAP
  2. . 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

Img0.png

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