Recientemente acabo de montar mi primer servidor LDAP con OpenLDAP en Linux. LDAP es una solución excelente cuando se requiere autenticar usuarios de manera centralizada. Sin embargo, las herramientas de línea de comandos provistas por el paquete OpenLDAP (ldapadd, ldapdelete, ldapmodify, etcétera) no son adecuadas para la mayoría de los usuarios de más alto nivel.

El problema es que, generalmente, la administración de un directorio (en este caso credenciales y privilegios) es una tarea rutinaria no llevada a cabo por un SysAdmin, sino por un miembro del equipo de soporte técnico o un usuario con un perfil técnico o administrativo de otra área (típicamente Recursos Humanos). Esto significa que es necesario proveer una herramienta GUI amigable que simplifique la tarea de administrar el dominio/directorio.

Existen muchas herramientas probadas y conocidas para administrar un directorio LDAP de manera remota. Muchas de éstas corren como aplicaciones de escritorio para sistemas Windows. Aunque en plena era de la nube, se debe proveer un medio de gestión del directorio que sea accesible desde cualquier ubicación y/o dispositivo. Por ende, la alternativa más adecuada consiste en proveer una aplicación Web que corra en un servidor GNU/Linux.

FusionDirectory provee una solución a la gestión y el día a día de los datos almacenados en un directorio LDAP. Se trata de una interfaz Web simple, modular y extensible con plugins, que puede ser utilizada para delegar completa o parcialmente la gestión de los datos a usuarios no especializados. Está liberado bajo licencia GPL y desarrollado completamente en PHP y Perl. Para más información, revisar la documentación oficial.

Este artículo demuestra la instalación desde paquete de FusionDirectory en Debian con OpenLDAP compilado desde los fuentes.



FusionDirectory requiere una instalación de OpenLDAP con soporte para SASL. Por ello el primer paso consiste en compilar OpenLDAP con soporte para SASL, tal como explica el artículo Cómo montar un servidor LDAP en Linux.

Antes de comenzar, actualizar el sistema e instalar la librería que provee soporte para SASL:

# apt-get update && apt-get upgrade
# apt-get install libsasl2-dev

Luego de descargar y extraer el paquete, cambiar al directorio que contiene los fuentes de OpenLDAP:

# cd /usr/local/src/openldap-2.4.45/
# service slapd stop
# ./configure \
   --prefix=/usr/local \
   --enable-crypt \
   --enable-modules \
   --enable-rlookups \
   --with-tls=openssl \
   --enable-mdb \
   --disable-bdb \
   --disable-dnssrv \
   --disable-hdb \
   --disable-ldap \
   --disable-meta \
   --disable-monitor \
   --disable-ndb \
   --disable-null \
   --disable-passwd \
   --disable-perl \
   --disable-relay \
   --disable-shell \
   --disable-sock \
   --disable-sql \
   --disable-ipv6
# make -j4 depend && make -j4 && make install
# service slapd start

Como en este caso se está re-compilando el paquete, se detiene el servicio slapd y se vuelve a lanzar luego de reinstalar.

Para instalar FusionDirectory en Debian y derivados, ejecutar los siguientes comandos:

# apt-get install fusiondirectory fusiondirectory-schema

El paquete fusiondirectory-schema provee los schemas de LDAP necesarios para el funcionamiento de FusionDirectory. Un schema de LDAP es un conjunto de reglas que definen qué puede ser almacenado en un directorio en forma de entradas. Los elementos de un schema son atributos, sintaxis y clases de objetos. Un atributo define una pieza de información que contiene una entrada del directorio y pueden ser mandatorios u opcionales

. Un atributos puede ser utilizado por diferentes tipos de entradas. Las clases de objetos definen el conjunto de atributos para un tipo de entrada de directorio. Las clases de objetos en un árbol de LDAP soportan herencia y se distinguen en tres categorías: abstractas, estructurales y auxiliares. Por último, una sintaxis define el formato o tipo de dato con el cual se almacena un valor.

A fin de instalar los schemas de FusionDirectory, editar el archivo de configuración de slapd:

# cd /usr/local/etc/openldap/
# nano slapd.conf

Agregar las siguientes líneas:

#######################################################################
# fusiondirectory
#######################################################################
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /etc/ldap/schema/fusiondirectory/samba.schema
include /etc/ldap/schema/fusiondirectory/core-fd-conf.schema
include /etc/ldap/schema/fusiondirectory/core-fd.schema
include /etc/ldap/schema/fusiondirectory/ldapns.schema
include /etc/ldap/schema/fusiondirectory/recovery-fd.schema
include /etc/ldap/schema/fusiondirectory/rfc2307bis.schema

ADVERTENCIA: Se asume que se está trabajando sobre una instancia fresca de OpenLDAP y se perderá toda la configuración actual.

Borrar la configuración actual:

# service slapd stop
# rm -fr slapd.d/
# mkdir slapd.d

Instalar la nueva configuración:

# slaptest -f slapd.conf -F /usr/local/etc/openldap/slapd.d
# chown -R ldap:ldap slapd.d/
# service slapd start

En este punto es posible cargar la interfaz Web de FusionDirectory desde un navegador para comenzar con la configuración inicial (suponiendo que el nombre de host del servidor donde se ha instalado es ldap.linuxito.com:

http://ldap.linuxito.com/fusiondirectory

Comienza el setup de fusiondirectory.

El primer paso consiste en autenticar la instalación, como medida de seguridad. Copiar el código de sesión y pegarlo en el archivo fusiondirectory.auth:

# echo -n XXXX > /var/cache/fusiondirectory/fusiondirectory.auth 

Seleccionar el idioma:

Luego se verifica la instalación, en este punto no deben quedar checks en estado de error (color rojo):

A continuación se debe configurar el acceso al servidor LDAP:

Con el acceso correctamente configurado, FusionDirectory puede verificar el estado de los schemas de LDAP necesarios (los cuales han sido instalado previamente):

A partir de este punto comienza la configuración de FusionDirectory propiamente dicha. Se definen los schemas a utilizar para almacenar usuarios y grupos, y la política de contraseñas:

Configuración de zona horaria:

Y configuración del motor y sesiones:

Al finalizar la configuración de FusionDirectory sigue la verificación de la instalación de LDAP:

En este punto puede ser necesario resolver una serie de problemas. Por ejemplo los siguientes...

Agregar las clases de objetos necesarias:

Si la instalación de LDAP posee datos previos a la instalación de FusionDirectory, es posible migrarlos a la órbita del mismo para que sea posible administrarlos:

Ya sean departamentos o usuarios:

Por supuesto ambos pasos son opcionales. Tal vez se trate de usuarios o departamentos que se desee mantener por fuera de FusionDirectory.

También es necesario crear un usuario administrador de FusionDirectory:

Con todos los problemas resueltos, es posible finalizar la configuración:

Descargar el archivo de configuración generado.

Instalar el archivo de configuración en el servidor:

emi@hal9000:~ % scp -P 2626 ~/Downloads/fusiondirectory.conf sysadmin@ldap.linuxito.com:~
root@ldap:~# mv /home/sysadmin/fusiondirectory.conf /etc/fusiondirectory/

Ejecutar el script fusiondirectory-setup para verificar los permisos sobre el archivo de configuración:

root@ldap:/usr/local/etc/openldap# fusiondirectory-setup --check-config
Checking FusionDirectory's config file
/etc/fusiondirectory/fusiondirectory.conf exists…
/etc/fusiondirectory/fusiondirectory.conf is not set properly, do you want to fix it ?:  [Yes/No]?
yes

Prueba de funcionamiento

Ingresar al panel de FusionDirectory con las credenciales del usuario administrador creado durante la configuración:

Acceder al menú de usuarios:

Y crear un nuevo usuario:

Ingresar la contraseña para el nuevo usuario:

Se puede comprobar que ha sido creado con éxito al aparecer en el listado de usuarios:

Ahora, es posible intentar ejecutar cualquier utilitario cliente autenticándose con el nuevo usuario. Por ejemplo, utilizar ldapwhoami:

emi@hal9000:~ % ldapwhoami -D "uid=emi,ou=people,ou=users,dc=linuxito,dc=com" -W -H ldaps://ldap.linuxito.com:636
Enter LDAP Password: 
dn:uid=emi,ou=people,ou=users,dc=linuxito,dc=com

Se ha autenticado con éxito como el usuario "emi".

Referencias


Tal vez pueda interesarte


Compartí este artículo