Servicio de Directorio con OpenLDAP [7 y ¿final?]: Ldap Account Manager

¡Hola Amigos!. No queríamos publicar éste artículo pues está contenido en el compendio en formato PDF que muchos lectores nos han pedido. Si, escribiremos un resumen con adiciones interesantes. Y como adelanto de ese compendio, le transcribimos la Introducción:

Muchos encargados de los servicios en las redes empresariales, cuando se hacen cargo de una red cuyos servicios están basados en productos Microsoft, si desean migrar hacia Linux se plantean la migración de los Controladores de Dominio entre otros servicios más.

Sino eligen un producto de terceros como el ClearOS o el Zentyal, o si por otros motivos desean independizarse, entonces se dan a la afanosa tarea de hacerse su propio Controlador de Dominio, o a partir de Samba 4 -u otro- su propio Directorio Activo.

Entonces es que comienzan los problemas y algunas que otras desilusiones. Errores de funcionamiento. No dan con la localización de los problemas para poderlos solucionar. Intentos de instalación en repetidas ocasiones. Funcionamientos parciales de los servicios. Y un largo etcétera de problemas.

Si nos fijamos bien, en la mayor parte de Internet no se utilizan redes tipo Microsoft. Sin embargo en nuestro ambiente empresarial si lo hacemos, y mucho.

Con este compendio intentamos dar a conocer que podemos hacer una red empresarial sin la filosofía Microsoft. Servicios basados en autenticar a usuarios contra un Directorio OpenLDAP tales como: E-Mail, FTP, SFTP, Nube Empresarial basada en Owncloud, etcétera.

Aspiramos a ofrecer un enfoque diferente basado en Software Libre 100%, y que no utilice o emule -que para el caso es lo mismo- a la filosofía de las redes Microsoft, sea con Software Microsoft, o con OpenLDAP y Samba como principales.

Todas las soluciones que utilicen el software libre Openldap + Samba, pasan obligadamente por el conocimiento básico de ¿qué es un servidor LDAP, cómo se instala, cómo se configura y administra, etcétera?. Posteriormente integran Samba y posiblemente Kerberos, y al final nos ofrecen «emular» un Controlador de Dominio al estilo NT 4 de Microsoft, o a un Active Directory.

Dura tarea en verdad cuando la implementamos y configuramos a partir de los paquetes del repositorio. Los que han estudiado y aplicado la frondosa documentación de Samba, saben muy bien a que nos referimos. Samba 4 incluso propone la administración de su Directorio Activo mediante el uso de la consola de administración clásica que encontramos en un Active Directory de Microsoft, sea 2003 u otro más avanzado.

Lecturas recomendadas.

https://wiki.debian.org/LDAP
OpenLDAP Software 2.4 Administrator’s Guide
Ubuntu ServerGuide 12.04
Configuración de servidores con GNU/Linux.

Excelente manual que, El Maestro, Joel Barrios Dueñas nos brinda y que le sirve muy bien a los Debianeros, aunque esté orientado a CentOS y Red Hat.

¿Cuales servicios y software planeamos instalar y configurar?.

  • NTP, DNS y DHCP independientes, o sea los dos últimos no integrados al Directorio
  • Servicio de Directorio o «Directory Service» basado en OpenLDAP
  • E-Mail, Suite para trabajo en Grupo «Citadel», FTP y SFTP,
  • Nube Empresarial «OwnCloud«
  • Servidor Independiente de archivos basado en Samba.

En todos los casos, el proceso de autenticar las credenciales de los usuarios se realizará contra el Directorio de forma directa, o mediante libnss-ldap y PAM según sean las características del software en cuestión.

Y sin más, entremos en materia.

Ldap Account Manager

Antes de continuar, debemos leer:

Los que han seguido la serie de artículos anteriores, se habrán dado cuenta de que YA tenemos un Directorio para administrar. Lo podemos lograr de muchas formas, sea mediante las utilidades de consola agrupadas en el paquete ldapscripts, las interfaces web PhpLDAPAdmin, Ldap Account Manager, etcétera, las cuales se encuentran en el repositorio.

Existe también la posibilidad de hacerlo por medio del Apache Directory Studio, el cual debemos descargar de Internet. Pesa unos 142 megas.

Para administrar nuestro Directorio, decididamente recomendamos el uso del Ldap Account Manager. Y lo primero que diremos acerca de él, es que después de su instalación, podemos acceder a su documentación que está ubicada en la carpeta /usr/share/doc/ldap-account-manager/docs.

Mediante el Ldap Account Manager, en lo adelante LAM, podemos administrar las cuentas de usuarios y grupos almacenadas en nuestro Directorio. El LAM se ejecuta sobre cualquier servidor de páginas web que soporte PHP5, y nos podemos conectar a él mediante un canal sin encriptar, o mediante StartTLS, que es la forma que utilizaremos en nuestro ejemplo.

Instalación y configuración iniciales:

:~# aptitude install ldap-account-manager

Después que termine la instalación del Apache2apache2-mpm-prefork-, del PHP5 y otras dependencias, y del propio paquete ldap-account-manager, lo primero que debemos hacer es crear un enlace simbólico de la carpeta de la documentación del LAM hacia la carpeta raíz de los documentos de nuestro servidor web. Ejemplo:

:~# ln -s /usr/share/doc/ldap-account-manager/docs/manual/ /var/www/lam-docs

De esa forma garantizamos el acceso al manual del LAM mediante un navegador web, si apuntamos hacia la dirección http://mildap.amigos.cu/lam-docs.

Posteriormente, empecemos la configuración del propio LAM. En un navegador apuntamos a http://mildap.amigos.cu/lam.

  • Hacemos clic sobre el enlace «LAM configuration».
  • Clic sobre el enlace «Edit server profiles».
  • Tecleamos la contraseña ‘lam’ sin las comillas.

En las páginas de configuración del LAM, podemos modificar muchos parámetros acorde a nuestras preferencias y necesidades. Como siempre he recomendado ir de lo Simple a lo Complejo, y no al revés, sólo tocaremos lo estrictamente necesario para utilizar la potente herramienta que es LAM. Si después que seamos Masters en su uso, queremos modificar o agregar funcionalidades, pues bienvenidas sean.

  • Activate TLS: yes -Recomendado-.
  • Tree suffix: dc=amigos,dc=cu
  • Default language: Español (España)
  • List of valid users*: cn=admin,dc=amigos,dc=cu
  • New password: contraseña diferente de lam
  • Reenter password: contraseña diferente de lam

Nota: El ‘ * ‘ significa que es una entrada obligatoria.

Abajo a la izquierda están los botones ^ Save y ^ Cancel. Si guardamos los cambios ahora, nos devolverá a la página inicial y podemos ver que ya cambió el idioma y que el nombre del usuario, ahora es admin. Antes era Manager. No obstante, volvamos a editar la -ahora en español- «Configuración. del LAM». Después que estemos nuevamente en las página de configuración, haremos lo siguiente:

  • Seleccionamos la pestaña ‘Tipos de cuentas’.
  • En la sección ‘Tipos de cuenta activos’ –> ‘Usuarios’ –> ‘Sufijo LDAP’, escribimos: ou=People,dc=amigos,dc=cu.
  • En la sección ‘Tipos de cuenta activos’ –> ‘Grupos’ –> ‘Sufijo LDAP’, escribimos: ou=Groups,dc=amigos,dc=cu.
  • Mediante los botones titulados ‘^ Quitar este tipo de cuenta’, eliminamos las correspondientes a ‘Equipos’ y ‘Dominios de Samba’, que no utilizaremos.
  • Seleccionamos la pestaña ‘Módulos’.
  • En ‘Usuarios’, en la lista ‘Módulos seleccionados’, movemos el módulo ‘Samba 3 (sambaSamAccount)’ hacia la lista de ‘Módulos Disponibles’.
  • En ‘Grupos’, en la lista ‘Módulos seleccionados’, movemos el módulo ‘Samba 3 (sambaGroupMapping)’ hacia la lista de ‘Módulos Disponibles’.

Por ahora, y hasta tanto no nos familiaricemos con la configuración del LAM, lo dejamos así.

Guardamos los cambios y regresamos a la página inicial, donde debemos teclear la contraseña del usuario admin (cn=admin,dc=amigos,dc=cu), declarada durante la instalación del slapd. Si nos devuelve algún error, compruebe que el /etc/ldap/ldap.conf está correctamente configurado en el propio servidor. Es posible que tenga mal el camino al certificado TLS u otro error. Recuerde que debe estar así:

BASE    dc=amigos,dc=cu
URI     ldap://mildap.amigos.cu
# TLS certificates (needed for GnuTLS)
TLS_CACERT    /etc/ssl/certs/cacert.pem

Una vez dentro del LAM, debemos dedicar un tiempo a estudiarlo ANTES de cambiar cualquier configuración. Su interfaz es muy intuitiva y fácil de utilizar. Úselo y compruebe.

Observación: En el documento http://mildap.amigos.cu/lam-docs/ch02s02.html#confTypicalScenarios, podemos leer al final:

Single LDAP directory with lots of users (>10 000)
LAM was tested to work with 10 000 users. If you have a lot more users then you have basically two options.

  • Divide your LDAP tree in organisational units: This is usually the best performing option. Put your accounts in several organisational units and setup LAM as in the advanced scenario above.
  • Increase memory limit: Increase the memory_limit parameter in your php.ini. This will allow LAM to read more entries. But this will slow down the response times of LAM.

Seamos Creativos y Ordenados en la Administración de nuestro Directorio.

Políticas de seguridad de contraseñas, y otros aspectos mediante LAM

  • Hacemos clic sobre el enlace «Configuración LAM».
  • Clic sobre el enlace «Editar la configuración general».
  • Tecleamos la contraseña ‘lam’ sin las comillas.

Y en esa página encontramos las Políticas de contraseñas, Preferencias de seguridad, Hosts permitidos, y otros.

Nota: La configuración del LAM se guarda en /usr/share/ldap-account-manager/config/lam.conf.

Habilitamos https para conectarnos al LAM de forma segura:

:~# a2ensite default-ssl
:~# a2enmod ssl
:~# /etc/init.d/apache2 restart

Cuando habilitamos el https de la forma anterior, estamos trabajando con los certificados que por defecto genera el Apache, y los refleja en la definición de su host virtual default-ssl. Si deseamos utilizar otros certificados generados por nosotros mismos, favor y consultemos /usr/share/doc/apache2.2-common/README.Debian.gz. Los certificados en cuestión son los llamados «Snake Oil» o Aceite de Serpiente, y se encuentran en:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key

Apuntemos el navegador a https://mildap.amigos.cu, y aceptamos el certificado. Luego apuntamos a https://mildap.amigos.cu/lam y ya podemos trabajar mediante https el LAM.

Importante: si durante el proceso de arranque del servidor, el Exim demora mucho en iniciar, instale el sustituto liviano ssmtp.

:~# aptitude install ssmtp
 Se instalarán los siguiente paquetes NUEVOS:
 ssmtp{b}
 0 paquetes actualizados, 1 nuevos instalados, 0 para eliminar y 0 sin actualizar.
 Necesito descargar 52,7 kB de ficheros. Después de desempaquetar se usarán 8192 B.
 No se satisfacen las dependencias de los siguientes paquetes:
 exim4-config: Entra en conflicto: ssmtp pero se va a instalar 2.64-4.
 exim4-daemon-light: Entra en conflicto: mail-transport-agent que es un paquete virtual.
 ssmtp: Entra en conflicto: mail-transport-agent que es un paquete virtual.
 Las acciones siguientes resolverán estas dependencias

Eliminar los paquetes siguientes:
1) exim4 
2) exim4-base 
3) exim4-config 
4) exim4-daemon-light 
¿Acepta esta solución? [Y/n/q/?]y

Luego ejecutamos:

:~# aptitude purge ~c
:~# aptitude clean
:~# aptitude autoclean
:~# reboot

Si ésta trabajando con servidores virtuales, éste sería un magnífico momento para hacer una buena copia de seguridad de todo el servidor principal… por si acaso. 🙂

Replicación. Salva y restaura de la base de datos del Directorio.

En la excelente guía -que recomendamos a todos que lean y estudien- «Ubuntu Server Guide» del Ubuntu Server 12.04 «Precise», viene una explicación detallada de partes del código que hemos escrito sobre el OpenLDAP y generación de certificados TLS, y además se trata con mucho detalle la Replicación de Directorios, y el cómo se hace la Salva y Restaura de las bases de datos.

No obstante, damos a continuación un procedimiento para restaurar la base de datos completa en caso de un desastre.

Muy Importante:

SIEMPRE debemos tener a mano el archivo exportado mediante el Ldap Account Manager como una copia de seguridad de nuestros datos. Por supuesto que el archivo cn=amigos.ldif debe corresponder a nuestra propia instalación. También lo podemos obtener mediante el comando slapcat como veremos más adelante.

1.- Eliminamos la instalación del slapd solamente.

:~# aptitude purge slpad

2.- Limpiamos el sistema de paquetes

:~# aptitude install -f
 :~# aptitude purge ~c
 :~# aptitude clean
 :~# aptitude autoclean

3.- Borramos totalmente la base de datos del Directorio

:~# rm -r /var/lib/ldap/*

4.- Volvemos a instalar el demonio slapd y sus dependencias

:~# aptitude install slapd

5.- Comprobamos

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
:~# ldapsearch -x -LLL -H ldap:/// -b dc=amigos,dc=cu dn

6.- Adicionamos el mismo archivo de índices olcDbIndex.ldif

:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcDbIndex.ldif

7.- Comprobamos los índices adicionados

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// \
 -b cn=config '(olcDatabase={1}hdb)' olcDbIndex

8.- Adicionamos las mismas Regla de Control de Acceso

:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcAccess.ldif

9.- Comprobamos las Reglas de Control de Acceso

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// \
 -b cn=config '(olcAccess=*)' olcAccess olcSuffix

10.- Adicionamos los Certificados TLS. No es necesario volver a generarlos ni arreglar permisos. Ya existen en el sistema de ficheros, pero no están declarados en la base de datos.

:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ssl/certinfo.ldif

11.- Adicionamos el contenido acorde a nuestra propia copia de seguridad

:~# ldapadd -x -D cn=admin,dc=amigos,dc=cu -W -f dc=amigos.ldif

NO reinicie el slapd por que está indexando la base de datos y ésta se puede coromper !!!. Edite SIEMPRE el archivo de su copia de seguridad ANTES de adicionarlo, para no introducir entradas que ya existen.

Apuntamos en un navegador a https://mildap.amigos.cu/lam y comprobamos.

El comando slapcat

El comando slapcat se utiliza mayormente para generar en formato LDIF, el contenido de la base de datos que maneja el slapd. El comando abre la base de datos determinada por su número o por el sufijo, y escribe en pantalla el correspondiente archivo en formato LDIF. Se muestran también las bases de datos configuradas como subordinadas, a menos que especifiquemos la opción -g.

La limitación más importante que tiene el uso de éste comando, es que no se debe ejecutar cuando se está ejecutando el slapd, al menos en modo escritura, para asegurar la consistencia de los datos.

Por ejemplo, si queremos hacer una copia de seguridad de la base de datos del Directorio, hacia un archivo denominado backup-slapd.ldif, ejecutamos:

:~# service slapd stop
:~# slapcat -l backup-slapd.ldif
:~# service slapd start

Imágenes del LAM

lam-01

lam-02

lam-03

lam-04

lam-05

lam-06


15 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   jose antonio dijo

    Buenísimo aporte, me ha encantado, y también las lecturas recomendadas.
    Llevaba tiempo buscando sin demasiado éxito un artículo similar.

    Os doy un 10 😉

    1.    federico dijo

      Gracias por comentar y por la evaluación de mis artículos !!!

  2.   usemoslinux dijo

    Interesante! Una vez más, excelente aporte, fico!
    Abrazo! Pablo.

    1.    federico dijo

      Muchas gracias por tu comentario y elogio, amigo Pablo !!!. Espero sea de utilidad a los que lo necesite.

  3.   vidagnu dijo

    Excelente contenido!, nuevamente gracias por compartir.

    Saludos

    1.    federico dijo

      Gracias por comentar !!!

  4.   dhunter dijo

    Homerun Fico!! Y el pdf oficial para cuando estará listo?

    1.    federico dijo

      Saludos dhunter !!!. Imagina que además de contener los 7 posts pubilcados hasta éste momento, incluiré cómo integrar un servidor de correo básico basado en CITADEL; servicios de FTP, SFTP; una Nube Empresarial basada en OwnCloud; un servidor Samba Independiente con los usuarios del sistema mediante libnss-ldap y PAM, etcétera. Saca tus propias concluisones. 🙂 Pienso que para fines de marzo o principios de abril.

      1.    guzmanweb dijo

        Hola Federico, gracias por el aporte, estaremos esperando con ansias. con la actualización..

        1.    federico dijo

          Haré un esfuerzo por terminarlo para fines de éste mes. No es fácil para nada escribir un libro aunque sea de pocas páginas.

  5.   nexus6 dijo

    sólo puedo decir que de los aportadores a este blog,tú me pareces el más interesante,mejor explicado y mas deallado de TODOS.

    1.    federico dijo

      Muchas Gracias por tu evaluación. En cada artículo que escribo, hago mi mejor esfuerzo, pues se que siempre hay lectores como tu, a pesar de muchos no comenten.
      Saludos Nexus6 !!!

  6.   edgar dijo

    buenas tardes, siempre que consulte en la red sobre ldap lo encuentro a ud dando recomendaciones cosa que felicito por si intención ahora bien soy nuevo en esto y como todos con ganas de aprender
    Esta es la pregunta
    Mis amigos me comentan que cuando se desconecta la red el sistema operativo ya autenticado con ldap me cambia el idioma a ingles que me puede comentar al respecto a donde debo revisar que fichero debe revisar de manera que sea en Español que vuelva a inicializarse mi usuario ya agregado en LDAP de antemano gracias por ayudar

  7.   pedrop dijo

    Federico excelente post como de costumbre. Estuve leyendo que comentabas algo relacionado con un PDF con la configuración de la mayoría de los servicios telemáticos usados en una red empresarial. Decías que para finales de marzo o principios de abril del año pasado estaría listo. Mi pregunta es si en aquel momento llegaste a terminarlo y a subirlo? Gracias de antemano, al final voy a probar Openfire, veo que tiene hasta una interfaz web por el 9090.

    1.    Fedrico A. Valdés Toujague dijo

      Gracias por tus comentarios, Pedro Pablo. En vez de responderte ampliamente, escribí un artículo que hoy o mañana leerás. Lectores agradecidos como tu, merecen una respuesta. Gracias nuevamente.