ldap es un sistema de autenticación que nos puede valer para centralizar la autenticación de los usuarios. Una vez creada ésta base de datos podemos llamar a los programas que requieran autenticación contactar con ésta base de datos centralizada.
Partimos como casi siempre con una Debian recién instalada y ahí instalamos slapd que es el servicio de ldap y ldap-utils que nos va a permitir gestionar la base de datos ldap.
# apt -y install slapd ldap-utils
Durante la instalación nos va a pedir el password para el usuario admin (cn=admin,dc=capa8,dc=net).
En algunos manuales hacen referencia a tocar los ficheros de configuración. Dicha acción no es recomendable, para ello, lo recomendable es usar browsers de ldap como jxplorer con el que entraremos mas adelante o con las herramientas que trae ldap-utils.
De momento, para verificar que el servidor está funcionando, en el mismo servidor donde hemos instalado ldap, vamos a ejecutar el comando slapcat, que nos muestra el contenido de la base de datos ldap
# slapcat
Con el siguiente comando vamos a poder ver las entradas disponibles
# ldapsearch -x -h localhost
A continuación para configurar nuestro dominio vamos a reconfigurar slapd
# dpkg-reconfigure -plow slapd Omit ldap configuration: NO DNS domain name: capa8.net Organization name: Capa8 Administrator Password: password Database backend to use: MDB Do you want database to be removed when slapd is purged? NO Move old database?: YES
Creación y configuración de Usuario, Grupos y U. Organizativas en LDAP.
Ahora vamos a crear todos los objetos de la base de datos, el objeto superior es Unidades Organizativas (OU), debajo van los Grupos (CN) y debajo los Usuarios (UID).
Vamos a crear la OU y un Grupo (CN) desde ficheros en local, almacenados por ejemplo en /root/ldap/.
# vi u_org.ldif dn: ou=People,dc=capa8,dc=net objectClass: top objectClass: organizationalUnit ou: People
y lo añadimos a ldap mediante ldapadd
# ldapadd -x -D cn=admin,dc=capa8,dc=net -W -f u_org.ldif
A continuación el Grupo
# vi groups.ldif dn: cn=Users,ou=People,dc=capa8,dc=net objectClass: top objectClass: posixGroup gidNumber: 2000 cn: Users
y lo añadimos a ldap mediante ldapadd
# ldapadd -x -D cn=admin,dc=capa8,dc=net -W -f groups.ldif
Si nos fijamos, en ningún momento nos ha pedido el password de usuario, ésto quiere decir que cualquier usuario con acceso anónimo puede ver toda la estructura del ldap, para securizarla vamos a hacer algo muy similar a lo que hemos hecho para añadir la OU y el CN
# vi anonymous_bind.ldif dn: cn=config changetype: modify add: olcDisallows olcDisallows: bind_anon dn: cn=config changetype: modify add: olcRequires olcRequires: authc dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcRequires olcRequires: authc
y lo añadimos a ldap mediante ldapadd
# ldapadd -x -D cn=admin,dc=capa8,dc=net -W -f anonymous_bind.ldif
El resultado será que cuando hacemos la consulta en remoto ésta será la diferencia:
laura@melatonina:~$ ldapsearch -x -H ldap://10.90.226.89 ldap_bind: Inappropriate authentication (48) additional info: anonymous bind disallowed laura@melatonina:~$ ldapsearch -x -H ldap://10.90.226.89 -D cn=admin,dc=capa8,dc=net -W Enter LDAP Password: # extended LDIF # # LDAPv3 # base <> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1
En el caso de querer usar algo mas amigable tenemos la opción de usar un explorador de ldap como jxplorer
# apt -y install jxplorer
En la siguiente captura un ejemplo de como tendríamos que conectarnos a éste servidor ldap de forma remota con autenticación.
A partir de aquí, recomiendo seguir éste manual para saber como añadir objetos en la base de datos ldap.
Para browsers de ldap via web está ldapadmin y algunos otros muy feúchos pero que supongo que hacen la función. Buscando por ahí he encontrado éste otro, futurice ldap user manager que no tiene mala pinta.
Y Ahora a crear usuarios, grupos e integrar la autenticación ldap en tus aplicaciones. Suerte! :)