Tiene varios usos, autenticación, directorio compartido (para clientes de correo), libro de direcciones, etc.
La
información se almacena en una estructura de árbol. Comenzamos con dos
nodos básicos debajo de la raiz: "Usuarios" y "Grupos".
Por defecto tu árbol será determinado por FQDN (Fully Qualified Domain Name).
Si tu dominio es ejemplo.com, tu nodo raiz será dc=ejemplo,dc=com.
Se instalan el demonio slapd y las utilidades, con:
sudo apt-get install slapd ldap-utils
Para reconfigurar el árbol usamos:
sudo dpkg-reconfigure slapd
OpenLDAP usa una base de datos separada que contiene el cn=config DIT (Directory Information Tree), el cual configura el demonio slapd dinámicamente.
El árbol cn=config se puede manipular, por ejemplo podemos ver el árbol con:
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb
Podemos añadir otro atributo a la lista índice usando ldapmodify:
ldapmodify -x -D cn=admin,cn=config -W
Una vez completada la modificación, presionar Ctrl+D para salir de la utilidad.
ldapmodify puede también leer los cambios de un archivo, esto es útil para cambios grandes.
Añadir schemas adicionales requiere que el esquema sea convertido a formato LDIF. Afortunadamente, el demonio slapd lo puede hacer automáticamente. [añadir aquí como]
Poblando LDAP
El directorio fue creado durante la instalación, ahora toca poblarlo. Será poblado con un clásico esquema compatible con aplicaciones de libro de direcciones y con cuentas Posix Unix. Las cuentas Posix permitirán autenticación a varias aplicaciones, tales como aplicaciones web, aplicaciones de transferencia de correo, etc.Para poblar LDAP utilizamos archivos con formato LDIF. Creamos un archivo por ejemplo example.com.ldif como en la guia, para dar de alta usuarios y grupos.
Para añadir entradas al directorio LDAP usamos la utilidad ldapadd:
ldapadd -x -D cn=admin,dc=example,dc=com -W -f example.com.ldif
Podemos comprobar que el contenido ha sido correctamente añadido con:
ldapsearch -xLLL -b "dc=example,dc=com" uid=john sn givenName cn
Nota: -x (no usará SASL, metodo de autenticacion por defecto)
-LLL (descapacita la impresión de información del esquema LDIF)
Replicación LDAP
Rápidamente multiples sistemas dependerán de LDAP para autenticación, autorización, configuración, etc.Es buena idea preparar un sistema redundante por replicación.
La replicación se consigue con Syncrepl, el cual permite dos metodos push o pull.
Creación del ACL (Access Control List)
La autenticación requiere acceder al campo password, el cual no debe ser accesible por defecto. Los usuarios deben poder cambiar sus propias contraseñas, shadowLastChange necesita ser accesible una vez que el usuario fue autenticado.
Para ver el ACL usamos la utilidad ldapsearch:
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase=hdb olcAccess
TLS y SSL
Al autenticarnos en un OpenLDAP server es mejor usar una sesion encriptada.El primer paso es obtener o crear un certificado. Una vez tienes un certificado, clave y CA cer instalado, usa ldapmodify para añadir nuevas opciones de configuración:
ldapmodify -x -D cn=admin,cn=config -W
Luego descomenta en /etc/default/slapd la línea:
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
Ahora el usuario openldap necesita acceder al certificado:
sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private/server.key
sudo chmod g+r /etc/ssl/private/server.key
Ojo con los permisos de /etc/ssl/private y ~server.key, tienen que ser iguales.
Finalmente, reinicia slapd:
sudo /etc/init.d/slapd restart
El demonio slapd debe estar ahora escuchando por conexión LDAPS y ser capaz de usar STARTTLS durante la autenticación.
Comprobar /var/log/syslog para ver errores.
Autenticación LDAP
Una vez tenemos el LDAP server trabajando, debemos instalar los siquientes paquetes para autenticar un cliente Ubuntu usando LDAP:sudo apt-get install libnss-ldap
Un dialogo preguntara detalles de configuración. Si hay error se puede volver a iniciar el dialogo con:
sudo dpkg-reconfigure ldap-auth-config
El resultado del dialog se puede ver en /etc/ldap.conf
Ahora que libnss-ldap esta configurado, capacita un perfil LDAP:
sudo auth-client-config -t nss -p lac_ldap
Usa la siguiente utilidad para configurar el sistema para que use LDAP para autenticación:
sudo pam-auth-update
En el menu elige LDAP y cualquier otro mecanismo que necesites.
Gestion de usuarios y grupos
El paquete ldap-utils viene con multiples utilidades para gestionar el directorio, pero la gran cantidad de opciones puede hacer costoso su uso. El paquete ldapscripts contiene scripts configurables para facilitar la gestion de usuarios y grupos LDAP.sudo apt-get install ldapscripts
Luego edita el archivo de configuración /etc/ldapscripts/ldapscripts.conf descomentando y cambiando lo de la guia para ajustar tu entorno.
Ahora, crea el archivo ldapscripts.passwd para permitir acceso autenticado al directorio.
sudo sh -c "echo -n 'secret' > /etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd
Ojo, cambia "secret" por la password del administrador LDAP.
Ejemplos de como usar los scripts:
- Crear un nuevo usuario:
sudo ldapadduser daniel example
Creará un usuario con uid daniel y establece el grupo principal del usuario (gid) a example
- Cambiar la contraseña de un usuario:
sudo ldapsetpasswd daniel
- Borrar un usuario
sudo ldapdeleteuser george
Otra gran característica de ldapscripts es el sistema de plantilla. La plantilla permite customizar atributos de usuario, grupo y maquinas.
Para usarlo, por ejemplo plantilla de usuario editar /etc/ldapscripts/ldapscripts.conf cambiando:
UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
Hay plantillas de muestra en /etc/ldapscripts.
Copia el archivo:
sudo cp /etc/ldapscripts/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
Copia o renombra:
sudo cp /etc/ldapscripts/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
Edita la nueva plantilla para añadir los atributos deseados.
Hay mas scripts utiles para verlos:
dpkg -L ldapscripts | grep bin