¿Es eso posible?, ¿podemos migrar usuarios de Active Directory de Microsoft a un OpenLDAP? La respuesta a ambas preguntas es sí, y a lo largo de esta entrada se comentarán una serie de consideraciones ha tener en cuenta, cómo compilar/configurar un OpenLDAP para que soporte las nuevas entradas y algunas herramientas útiles para estos menesteres.
Consideraciones ha tener en cuenta
El principal escollo con el que nos vamos a encontrar a la hora de migrar datos ente ambos sistemas es la obtención de contraseñas del Active Directory. Aunque OpenLDAP y Active Directory son implementaciones del protocolo LDAP, son muy distintas entre sí a la hora de persistir las contraseñas. Mientras que OpenLDAP guarda la contraseña, a no ser que se indique lo contrario, como un atributo más de un usuario (encriptada por supuesto), Active Directory almacena esta información en la base de datos del SAM (Security Account Manager) encriptada con el algoritmo Lan Manager, por lo que al consultar la información de un usuario con un cliente LDAP no aparecerá dato alguno sobre la contraseña y habrá que recurrir a otras herramientas para su obtención.
Cómo configurar un OpenLDAP
Cómo se ha mencionado anteriormente las contraseñas en Active Directory se almacenan encriptadas con LanManager, así que el principal esfuerzo, a la hora de configurar OpenLDAP, será dar soporte a dicho algoritmo de hashing. De este modo cuando un usuario intente autenticarse, nuestro sistema deberá ser capaz de encriptar con dicho algoritmo la contraseña que proporcione el usuario y comprobar si se corresponde con el hash almacenado para él. Para que nuestro Open LDAP sea capaz de realizar dicha tarea será necesario compilar los fuentes con la opción --enable-lmpasswd. A continuación se especifica cómo realizar esta tarea sobre Debian:
- Instalar en nuestro entorno los paquetes necesarios para llevar a cabo labores de construcción/compilación:
dev:~# aptitude install build-essential
- Intalaremos las dependencias con Berkeley DB necesarias para OpenLDAP (utilizaremos paquetes para simplificar el proceso):
dev:~# aptitude install libdb4.4-dev openssl-dev
- Ejecutaremos ldconfig para cargar las librerías compartidas (este paso podríamos obviarlo):
dev:~# ldconfig
- Descargaremos los fuentes y descomprimimos:
dev:~/dowloads# wget ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/openldap-<version>.tgz
dev:~/dowloads# tar -xzf openldap-<version>.tgz
- Ahora procederemos a compilar la herramienta con las siguientes instrucciones:
dev:~/dowloads/openldap-<version># ./configure --prefix="/opt/openldap" --enable-lmpasswd
dev:~/dowloads/openldap-<version># make depend
dev:~/dowloads/openldap-<version># make
dev:~/dowloads/openldap-<version># make test
dev:~/dowloads/openldap-<version># make install
Ya tenemos instalado servidor de LDAP en el directorio /opt/openldap y sólo nos quedará configurarlo según nuestras necesidades. A continuación se establecerá una configuración básica con la que poder probar la autenticación.
- Editaremos el fichero slapd.conf (
/opt/openldap/etc/openldap/slapd.conf) en el que se modificarán las siguientes entradas:
include /opt/openldap/etc/openldap/schema/core.schema
include /opt/openldap/etc/openldap/schema/cosine.schema
include /opt/openldap/etc/openldap/schema/nis.schema
suffix "o=mrpotatoe,c=es"
rootdn "cn=admin,o=mrpotatoe,c=es"
rootpw admin
- Ahora crearemos un fichero ldif (
/tmp/carga.ldif) en con algunos datos a persistir:
dn: o=mrpotatoe,c=es
objectclass: organization
o: mrpotatoe
dn: cn=admin,o=mrpotatoe,c=es
objectclass: organizationalRole
cn: admin
# En este punto crearíamos un usuario con la contraseña 12345678
# encriptada con lan manager para la realización de pruebas
dn: cn=user,o=mrpotatoe,c=es
objectClass: top
objectClass: account
objectClass: posixAccount
cn: user
gidNumber: 0
homeDirectory: -
uid: user
uidNumber: 0
userPassword:{lanman}0182BD0BD4444BF836077A718CCDF409
- Lo próximo será iniciar el servidor e introducir los datos necesarios para realizar las pruebas, para ello tendremos que ejecutar el siguientes comando:
dev:~# su -c /opt/openldap/libexec/slapd
dev:~# /opt/openldap/bin/ldapadd -xcWD 'cn=admin,o=mrpotatoe,c=es' -f /tmp/carga.ldif
- Una vez llegados a este punto podremos probar a autenticarnos contra nuestro openldap con el usuario de prueba que hemos creado. Para ello podremos utilizar cualquier cliente de LDAP.
Algunas herramientas útiles
A continuación se enumeran algunas herramientas para migrar usuarios de Directorio Activo a OpenLDAP:
- PwDump
Esta utilidad permite extraer las contraseñas en LM y en NTLM de los usuarios de un sistema SAM. Esta herramienta nos será útil para obtener las contraseñas de los usuarios de un directorio activo.
- Apache Directory Studio
Se trata de un cliente LDAP bastante potente que nos permitirá, además de navegar y consultar un LDAP, editar ficheros LDIF, crear y editar esquemas para OpenLDAP y Apache Directory Server, utilizar un Apache Directory Server embebido, etc.