Autenticando Squid contra OpenLDAP


Dado que últimamente se esta poniendo de moda hacer uso de un Servidor de Directorios LDAP, para unificar la autenticación de varios servicios en un sistema Linux, vamos a ver una manera (no es la única, pero si la que a mi me ha funcionado) de autenticar el proxy Squid, contra OpenLDAP. Evidentemente, antes de nada, instalaremos nuestro Servicio de Directorios y migraremos los usuarios de nuestro sistema.

¿Qué es LDAP?

El significado de las siglas LDAP, es Lightweight Directory Access Protocol y su traducción al español, es Protocolo de acceso a Directorios Ligeros. Es un servicio de directorios y viene a ser una especie de base de datos, cuya estructuración se realiza en directorios. Dicha base de datos está optimizada para hacer búsquedas o lecturas, por lo que es un buen candidato a la hora de poner en marcha una agenda, un sistema de autenticación, un DNS o cualquier otro servicio dónde se van a hacer muchísimas más consultas que nuevas escrituras o modificaciones.
En Linux, poseemos una versión libre de un servicio de directorio como es OpenLDAP, por lo que será la que utilizaremos en este articulo.

Instalación de OpenLDAP

Una vez hemos explicado (mínimamente), en que consiste un servicio de directorio LDAP, vamos a instalar el que nosotros utilizaremos en este artículo, OpenLDAP.
Dado que en este misma web, ya existe documentación sobre este aspecto, nosotros solo nos ceñiremos a la instalación de OpenLDAP en la distribución debian. Solo recordar, que si queremos hacer uso de características especiales en nuestro servidor LDAP, como por ejemplo compatibilidad con OpenSSL, deberemos instalar desde fuentes, compilándolo con soporte para dicha característica.
Para instalar el servidor LDAP en debian, teclearemos en una consola el siguiente comando (instalaremos de paso el cliente también):

apt-get install slapd ldap-utils

Al hacer esto, nos preguntará si queremos poner en marcha nuestra base de datos automáticamente con la información que nosotros le pasemos o mediante un fichero ldif existente.

 

slapd

slapd

 

Le indicamos que lo queremos hacer de forma automática y entonces nos preguntará que tipo de base de datos LDAP vamos a configurar: domain or host, location o custom. seleccionaremos “domain or host” y entonces nos preguntará el dominio que deseamos configurar (A modo de ejemplo, seleccionaremos redes-linux.com, dc=redes-linux, dc=com).

 

domain

Domain

Seguidamente, nos preguntará (dos veces, para verificar que no nos hemos equivocado) por el password de nuestro administrador, en nuestro caso prueba.
Una vez le hemos introducido el password, nos preguntará si queremos que se repliquen los posibles cambios a otro servidor, a lo que responderemos No.
Y ya esta, ya tenemos una configuración mínima de nuestro servidor LDAP. Si quisiéramos cambiar dicha configuración, solo debemos editar el fichero /etc/ldap/slapd.conf y reiniciar dicho servidor:

/etc/init.d/slapd restart

Migración de los usuarios del sistema

Para migrar los usuarios de nuestro sistema, haremos uso de una serie de scripts en Perl desarrollados por PDAL Software Pty Ltd.
Una vez nos hemos descargado el fichero que contiene estos scripts, lo descomprimimos mediante el comando:

tar zxvf MigrationTools.tgz

Entramos en el directorio MigrationTools-45 que nos ha creado y editamos el fichero migrate_common.ph. De dicho fichero, debemos editar las variables (los valores que cito, son los que deberían ir si estamos configurando el dominio “redes-linux-com”):

$DEFAULT_MAIL_DOMAIN=”redes-linux.com”;
$DEFAULT_BASE = “dc=redes-linux, dc=com”;

Una vez hemos editado estos dos parámetros, ya podemos migrar los usuarios de nuestro sistema con el comando:

./migrate_passwd.pl /etc/passwd passwd.ldif

Esto, nos generará un fichero passwd.ldif, que contendrá todos los usuarios que teníamos en el fichero /etc/passwd, por lo que antes de añadirlo a nuestro servidor LDAP, deberemos eliminar aquellos que no sean usuarios locales (ya que son los únicos que utilizaremos para autenticarnos en el proxy).
Una vez hayamos eliminado todas las entradas que hagan referencia a aquellos usuarios que no necesitamos, añadiremos las demás entradas a nuestra base de datos LDAP, mediante el comando:

ldapadd -x -D “cn=admin,dc=redes-linux,dc=com” -W -f passwd.ldif

Al teclear dicho comando, nos pedirá el password del Administrador de la base de datos LDAP. Lo introducimos y ya estarán migrados nuestros usuarios.

Creamos el script de autenticación

Una vez tenemos lista nuestra base de datos de usuarios, deberemos crear en el servidor Squid (puede ser el mismo ordenador donde esta también el servidor LDAP u otro diferente), un script /usr/lib/squid/autenticacion_ldap que contenga:

#!/bin/bash
#Imaginemos que la IP del servidor LDAP es la 192.168.1.2
#Va todo en una linea, se ha recortado por estética
/usr/lib/squid/ldap_auth -R -b dc=redes-linux,dc=com
-D cn=admin,dc=redes-linux,dc=com -w prueba -f uid=%s 192.168.1.2

Y después de esto, le damos permisos de ejecución:

chmod a+x /usr/lib/squid/autenticacion_ldap

Configuramos Squid

Después de haber migrado los usuarios y de haber editado nuestro script de autenticación, solo nos faltará configurar Squid, para que coja dicho script como método de autenticación. Para ello, deberemos añadir en el fichero de configuración de Squid (/etc/squid.conf), los parámetros:

authenticate_program /usr/lib/squid/autenticacion_ldap

#Añadimos una acl de tipo password que luego tendremos que aplicar a nuestra red
#Por ejemplo, si hemos creado una acl para definir nuestra red de esta forma:
#acl mired src 192.168.1.0, deberemos aplicarla asi:
#http_access allow mired password

acl password proxy_auth REQUIRED

Después de añadir estas opciones, reiniciaremos el servidor Proxy:

/etc/init.d/squid restart

Y ya está, ya nos debería pedir la autorización cada vez que intentemos navegar por Internet, desde cualquiera de los clientes que salgan a través del Proxy.

 

Fuente:  www.redes-linux.com

About Jordi Llorente

Extraño cocktail, un poco de ciencia, un poco de arte, y mucha pasión.