Una solución drástica y rápida

Hola Fronters, espero que estén muy bien. He tenido un poco descuidado el blog, así que gracias por esperar!!!

En días pasados, se me presentó un reto al cual a pesar de no ser de mi agrado, no podía despreciar. Unos amigos me llaman y me piden un favor: Migrar un OpenLDAP de un servidor antiguo a otro. Mi primera expresión de rostro fue :/ … Los que me conocen saben bien que ODIO OpenLDAP, o bueno: No somos amigos, jeje; pero nada.

Todo sea por la amistad… Brindemos con un Frapuccino!!!

Cual era el panorama del problema

Los archivos / ficheros LDIF estaban y me dije: «puede que no sea tan tortuoso»… Pero estaba equivocado!!!

La cosa es que era un servidor Debian 6 con OpenLDAP 2.4.23-7.2, extremadamente antiguo, al cual le faltaban demasiadas herramientas, tanto de Bash comunes como un simple comando less o herramientas propias del OpenLDAP.

¿Por qué se requería migrar ese servidor?. Pues por varias razones, entre esas las que más destacables son las siguientes:

  • Actualizar el sistema operativo a uno con soporte y vigencia, que luego permita instalar y configurar herramientas, además de incorporar otras funcionalidades, en caso de requerirlo.
  • Mover ese servidor de un hipervisor XenServer y convertirlo a KVM, sin herramientas de discos o un ambiente transitorio, el cual me permitiese «probar y romper» sistemas sin preocupaciones es algo que se carecía. De igual modo esta opción tampoco me serviría porque me traería el mismo Debian 6 y lo que se quería era precisamente actualizar y a mano ya no era factible ni posible.
  • Necesidad de monitorizar ese servidor, mediante cualquier herramienta tal como Nagios o Zabbix.
  • Tener un mecanismo rápido de recuperación ante desastres, como Snapshots o Backups completos de VMs. En XenServer (Community Edition), esto es un proceso de conlleva varios pasos, y nada amigable.

Bueno, en definitiva, lo que se hizo fue instalar y configurar un servidor virtual con Ubuntu 20.04 LTS, pero se pudo hacer perfectamente con un Debian 11 y funcionar a las mil maravillas.

Qué hice y cómo lo hice

Crear un servidor con Ubuntu 20.04 LTS te lo debo, pero esperaré para a que salga oficialmente Ubuntu 22.04 LTS para hacer el tutorial, sin embargo en mi tutorial de crear VMs en VMware Workstation 16 hay implícito un tutorial de cómo instalar un servidor con Debian 10 / 11. Puedes acceder aquí.

Una vez ya instalado, el servidor, instalar los paquetes ldap y reconfiguramos dicho servicio, aunque este paso no es tan necesario, pues no trabajaré con esta configuración de LDAP, sino con la que me voy a traer del otro servidor:


sudo apt install slapd ldap-utils ldapscripts
sudo dpkg-reconfigure slapd

Ahora hay que detener el servicio LDAP en el servidor nuevo:


service slapd stop       # FORMA 1
systemctl stop slapd     # FORMA 2

Una vez realizado esto, Voy a eliminar (o mover, como prefieran), los directorios /etc/ldap y /var/lib/ldap. Pueden moverlos al directorio /root… Yo los eliminé, pero tenía un snapshot de la VM, justo antes de «presionar el botón rojo».


mv -f /etc/ldap /root/etc-ldap-bkp

mv -f /var/lib/ldap /root/var-lib-ldap-bkp

Vale, luego de esto me traje de forma remota desde el servidor antiguo, aquellos directorios equivalentes que eliminé en el servidor nuevo; es decir: /etc/ldap y /var/lib/ldap, sin embargo es muy importante detener el servicio LDAP (slapd) en el servidor de origen, que es el antiguo. Esto obedece a que la BD mantienen una integridad referencial en la cual si no coinciden los valores, es muy tedioso poder volver a levantar el servicio:


# ASI SE DETIENE EL SERVICIO EN VERSIONES ANTIGUAS DE DEBIAN

/etc/init.d/slapd stop

Y desde el servidor antiguo trasladé los archivos / ficheros desde el servidor mediate SCP. Pude haber utilizado RSync también, pero como es un LDAP bastante pequeño y en una red local, no había necesidad de tanto: menos de cinco min y listo!!!


# ME LLEVO /ETC/LDAP Y LO COPIO EN EL HOME DEL SERVIDOR NUEVO CON 
# UN NOMBRE DISTINTIVO
scp -r /etc/ldap usuario@ipsrvdestino:/home/usuario/etc-ldap-oldsrv

# ME LLEVO /VAR/LIB/LDAP Y LO COPIO EN EL HOME DEL SERVIDOR NUEVO CON 
# UN NOMBRE DISTINTIVO
scp -r /var/lib/ldap usuario@ipsrvdestino:/home/usuario/var-lib-ldap-oldsrv

¿Por qué no lo copié en las rutas directamente?, Pues porque no tenía habilitado el acceso SSH para root, por razones de seguridad. Además es bueno para evitar «metidas de pata». ¿Se puede hacer el copiado directo de los directorios en sus rutas respectivas?: Sí. Cambia la configuración del SSH para que permita el acceso del usuario root y listo, pero sean cautelosos. (Honestamente no lo recomiendo)

Bien, una vez hecho esto, repartir los directorios en sus respectivas rutas de funcionamiento y con el nombre adecuado:


# COLOCAMOS EN SU LUGAR AL DIR /ETC/LDAP
mv -f /home/usuario/etc-ldap-oldsrv /etc/ldap

# COLOCAMOS EN SU LUGAR AL DIR /VAR/LIB/LDAP
mv -f /home/usuario/var-lib-ldap-oldsrv /var/lib/ldap

El penúltimo paso es cambiar los permisos de forma recursiva del directorio /var/lib/ldap, para que tanto su usuario como grupo propietario sean openldap. Es importante que no se salten este paso porque sino el servicio simplemente no levantará:


chown -R openldap:openldap /var/lib/ldap

Modificar el parámetro URI en el archivo / fichero /etc/ldap/ldap.conf, cambiando la ip del antiguo servidor por la actual.

El último paso es levantar el servicio:


systemctl start slapd
Servicio LDAP funcionando perfectamente luego de la migración
Imagen 1: Servicio LDAP funcionando perfectamente

Al hacer una consulta de comprobación con el comando ldapsearch desde el mismo servidor:


ldapsearch -D "cn=admin,dc=example,dc=com" -W -p 389 -h localhost -b "dc=example,dc=com" -s sub "(objectclass=*)"
Ldapsearch desde el servidor nuevo funcionando correctamente
Imagen 2: Ldapsearch funcionando OK

Cierre y Paralabras finales

Espero que este tutorial pueda ser funcional para todos aquellos que tengan el mismo problema. y que puedan actualizar sus OpenLDAP. Si conoces alguna otra forma de hacerlo fácil y rápido, puedes dejarlo en los comentarios. Si te gustó el artículo, por favor, compártelo. Coméntalo y hagamos de esta una bonita comunidad de aprendizaje.

… Y no se olviden de brindarme un café!

Hasta luego Fronters!!!