LDAP es un protocolo de tipo cliente-servidor para acceder a un servicio de directorio. Un directorio es como una base de datos, pero en general contiene información más descriptiva y más basada en atributos.
-
Lo primero que debemos hacer es verificar nuestro FQDN (Fully Qualified Domain Name) que usaremos mas tarde para la configuración.
debian@freston:~$ hostname -f freston.alegv.gonzalonazareno.org
-
Instalaremos el paquete de LDAP
debian@freston:~$ sudo apt install slapd
-
Durante esta instalación tendremos que introducir una contraseña para el administrador.
-
Una vez instalado se habrá abierto un socket en el puerto 389 que usa por defecto LDAP y está escuchando todas las peticiones desde la
0.0.0.0
, comprobemoslodebian@freston:~$ sudo netstat -tlnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 13740/slapd ... ...
-
Ahora instalaremos el paquete
ldap-utils
que nos permitirá interactuar de muchas formas que veremos a continuación con el servidor.debian@freston:~$ sudo apt install ldap-utils
-
Una vez instalado usemos
ldapsearch
para ejecutar una busqueda sobre el directorio. Vamos a listar todos los objetos existentes de la estructura que tenemos.debian@freston:~$ sudo ldapsearch -x -b "dc=alegv,dc=gonzalonazareno,dc=org" # extended LDIF # # LDAPv3 # base <dc=alegv,dc=gonzalonazareno,dc=org> with scope subtree # filter: (objectclass=*) # requesting: ALL # # alegv.gonzalonazareno.org dn: dc=alegv,dc=gonzalonazareno,dc=org objectClass: top objectClass: dcObject objectClass: organization o: alegv.gonzalonazareno.org dc: alegv # admin, alegv.gonzalonazareno.org dn: cn=admin,dc=alegv,dc=gonzalonazareno,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
-
Ahora vamos a hacer una busqueda completa, necesitaremos autentificarnos ya que se muestra información delicada como contraseñas, aunque aparecen encriptadas.
debian@freston:~$ ldapsearch -x -D "cn=admin,dc=alegv,dc=gonzalonazareno,dc=org" -b "dc=alegv,dc=gonzalonazareno,dc=org" -W Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=alegv,dc=gonzalonazareno,dc=org> with scope subtree # filter: (objectclass=*) # requesting: ALL # # alegv.gonzalonazareno.org dn: dc=alegv,dc=gonzalonazareno,dc=org objectClass: top objectClass: dcObject objectClass: organization o: alegv.gonzalonazareno.org dc: alegv # admin, alegv.gonzalonazareno.org dn: cn=admin,dc=alegv,dc=gonzalonazareno,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9R24zTkFQL1RlaVFVOW5NOW1YNTJNUXhuMHBuaGZ0Um0= # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
-
Podemos crear grupos y unidades organizativas usando un fichero con extensión
.ldif
, veamos un ejemplo de uno de ellos en el que definiremos dos objetos, uno para almacenar usuarios y otro para gruposdebian@freston:~$ cat prueba.ldif dn: ou=Usuarios,dc=alegv,dc=gonzalonazareno,dc=org objectClass: organizationalUnit ou: Usuarios dn: ou=Grupos,dc=alegv,dc=gonzalonazareno,dc=org objectClass: organizationalUnit ou: Grupos
-
Ahora mediante el comando
ldapadd
importaremos el fichero con sus unidades organizativas.debian@freston:~$ ldapadd -x -D "cn=admin,dc=alegv,dc=gonzalonazareno,dc=org" -f prueba.ldif -W Enter LDAP Password: adding new entry "ou=Usuarios,dc=alegv,dc=gonzalonazareno,dc=org" adding new entry "ou=Grupos,dc=alegv,dc=gonzalonazareno,dc=org"
-
Vamos a realizar una busqueda anonima simplemente para comprobar que se han añadido estas nuevas unidades organizativas.
debian@freston:~$ sudo ldapsearch -x -b "dc=alegv,dc=gonzalonazareno,dc=org" # extended LDIF # # LDAPv3 # base <dc=alegv,dc=gonzalonazareno,dc=org> with scope subtree # filter: (objectclass=*) # requesting: ALL # # alegv.gonzalonazareno.org dn: dc=alegv,dc=gonzalonazareno,dc=org objectClass: top objectClass: dcObject objectClass: organization o: alegv.gonzalonazareno.org dc: alegv # admin, alegv.gonzalonazareno.org dn: cn=admin,dc=alegv,dc=gonzalonazareno,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # Usuarios, alegv.gonzalonazareno.org dn: ou=Usuarios,dc=alegv,dc=gonzalonazareno,dc=org objectClass: organizationalUnit ou:: VXN1YXJpb3Mg # Grupos, alegv.gonzalonazareno.org dn: ou=Grupos,dc=alegv,dc=gonzalonazareno,dc=org objectClass: organizationalUnit ou: Grupos # search result search: 2 result: 0 Success # numResponses: 5 # numEntries: 4
-
Podemos ver que se han creado las dos nuevas unidades organizativas tal y como especificamos el fichero.