LDAP no incluye internamente ningún método seguro de comunicación entre un cliente y un servidor, sino que deben utilizarse programas externos, principalmente SASL.
SASL utiliza a su vez diversos mecanismos de autenticación, un extracto de estos es:
- PLAIN. Descartado porque no aumenta la seguridad.
- DIGEST-MD5. El mínimo recomendado por LDAP y que explicaremos aquí.
- GSSAPI (Kerberos-V). El más seguro.
- EXTERNAL. Para utilizar TLS (SSL)
En esta entrada explicamos la forma de utilizar usuarios almacenados en la base de datos de SASL para hacer consultas al directorio LDAP.
Características del montaje:
- Debian GNU/Linux (lenny)
- Slapd 2.4.11-1
- SASL 2.1.22
Instalando SASL2
En el mismo equipo que tengamos instalado slapd, instalamos el demonio sasl2 para que almacene las contraseñas de los usuarios que se conectan al directorio.
Escribimos en una terminal:
aptitude install sasl2-bin
De la salida, extraemos el siguiente mensaje:
To enable saslauthd, edit /etc/default/saslauthd and set START=yes (warning).
que nos indica los pasos a seguir para levantar el demonio saslauthd. Los seguimos y levantamos el demonio.
Añadir usuarios a SASL
Para añadir un usuario basta con hacer:
saslpasswd2 usuario Password: Again (for verification):
Y comprobamos los usuarios que hay con:
sasldblistusers2 usuario@chucky: userPassword
Es importante notar que el usuario se almacena con el «hostame» del equipo.
Prueba de funcionamiento
Utilizamos la herramienta ldapsearch, que por defecto utiliza el método SASL con Digest-MD5 para la autenticación. Si hacemos una búsqueda genérica ocurre lo siguiente:
ldapsearch -U usuario@chucky -b cn=nodomain SASL/DIGEST-MD5 authentication started Please enter your password: ldap_sasl_interactive_bind_s: Invalid credentials (49)
¿Cuál es el problema? Podemos comprobar el el fichero /var/log/syslog aparece la línea:
slapd[1466]: SASL [conn=0] Error: unable to open Berkeley db /etc/sasldb2: Permission denied
Que nos indica un problema de permisos a la hora de leer la base de datos de SASL, que reside en el fichero /ets/sasldb2 y que tiene las siguientes características:
-rw-r----- 1 root root 12288 dic 7 11:36 /etc/sasldb2
Cambiamos el grupo propietario por sasl:
chgrp sasl /etc/sasldb2
y añadimos el usuario openldap, que es el que ejecuta slapd, al grupo sasl:
adduser openldap sasl Añadiendo al usuario `openldap' al grupo `sasl' ... Añadiendo al usuario openldap al grupo sasl Hecho.
Si repetimos la búsqueda, ahora se realizará de forma correcta la autenticación del usuario, con la ventaja de que no se transmite en claro la contraseña por la red.
Thank you very much. This was very very helpful. I suggest a new article (in English this time) to add sasl support here: http://wiki.debian.org/LDAP#ServerSetup
, in order to run ldapsearch etc…
—
Houtouridis Christos
Me gustaMe gusta