11.7. Instalar y configurar OpenLDAP en el servidor Ubuntu

En este apartado vamos a ver cómo se instala OpenLDAP en un equipo con el sistema operativo Ubuntu 12.04 LTS. También supondremos que el sistema dispone del sistema de archivos NFS debidamente instalado y configurado para exportar la carpeta /home (te recomiendo revisar el capítulo 10: Instalar y configurar NFS en Ubuntu para refrescar conocimientos).

Para llevar a cabo nuestro cometido, realizaremos las siguientes tareas:

  • Instalar los paquetes necesarios.
  • Realizar la configuración básica de OpenLDAP
  • Configurar la autenticación para los clientes
  • Configurar el demonio SLAPD
  • Crear la estructura del directorio
  • Añadir un usuario y un grupo
  • Comprobar que todo es correcto

En los siguientes apartados, aprenderemos a configurar los equipos cliente para autenticarse con LDAP.

Instalar OpenLDAP en el servidor

El proceso de instalación es realmente sencillo. Básicamente consiste en instalar el paquete slapd, aunque nosotros también instalaremos el paquete que contiene las utilidades de administración de LDAP: ldap-utils.

Como ambos paquetes se encuentran en los repositorios oficiales de Ubuntu, sólo tenemos que escribir en la terminal la siguiente orden:

sudo apt-get install slapd ldap-utils

1

Como de costumbre, el sistema nos solicita la contraseña de administración.

Durante la instalación, aparece en la consola un mensaje que nos solicita la contraseña de administración para LDAP. Como siempre, deberá ser una contraseña segura.

Si consideras que la contraseña local cumple los requisitos, no hay ningún inconveniente para volver a usarla, aunque serás tú quien deba evaluar este aspecto en función de los requisitos de seguridad de tu entorno.

2

Cuando terminemos de escribir, pulsaremos la tecla Intro.

Como suele ocurrir cuando escribimos una contraseña, para evitar que hayamos cometido algún error tipográfico que después nos impida entrar, el sistema nos pide que volvamos a escribirla.

3

Cuando acabemos, volvemos a pulsar la tecla Intro.

Al hacerlo, volveremos al aspecto normal de la terminal y comprobaremos que la instalación sigue su curso.

4

Poco después, el proceso de instalación habrá terminado.

De forma predeterminada, slapd se configura con las mínimas opciones necesarias para que el demonio funcione de forma correcta.

Realizar la configuración básica de OpenLDAP

Comenzaremos por modificar el contenido del archivo /etc/hosts. El objetivo es que, cuando hagamos referencia a los nombres ldapserver o ldapserver.somebooks.local, nuestro sistema entienda que nos estamos refiriendo al servidor (quizás sería oportuno cambiar también el nombre del servidor, como hicimos en el capítulo 10: Instalar y configurar NFS en Ubuntu, pero, por el momento, no resulta imprescindible).

1

Abrimos el archivo /etc/hosts usando el editor nano.

Dentro del archivo, añadimos una nueva línea que relacione la dirección IP estática del servidor con los nombres lógicos que tenemos previsto utilizar.

2

Cuando acabemos, pulsamos Ctrl + x para salir y nos aseguramos de guardar los cambios en el archivo.

El nombre NSS proviene de las siglas, en inglés, Name Service Switch.

A continuación, instalaremos la librería NSS para LDAP. Esta librería ofrece una interfaz para acceder y configurar distintas bases de datos utilizadas para almacenar cuentas de usuario (entre otras, /etc/passwd, /etc/group, /etc/hosts, LDAP, etc.).

Conseguirlo es tan sencillo como instalar el paquete libnss-ldap.

3

Instalamos el paquete con privilegios de superusuario.

Una de las dependencias del paquete libnss-ldap es el paquete de configuración de la autenticación de LDAP (ldap-auth-config). Durante su instalación se iniciará un asistente que nos irá solicitando la información que necesita para su correcta configuración.

En el primar paso, nos solicita la dirección URi del servidor LDAP. Es importante dejar el principio tal y como lo encontramos (ldapi:///).

4

Cuando completemos la dirección IP, pulsaremos la tecla Intro. También podemos usar la tecla <Tabulador> para desplazarnos hasta la palabra <Aceptar>.

A continuación escribiremos el nombre global único (Distinguished NameDN) siguiendo las indicaciones que vimos al principio de este capítulo (dc=somebooks,dc=local)

5

Cuando acabemos, volvemos a pulsar la tecla Intro.

En el siguiente paso, indicaremos la versión del protocolo LDAP que vamos a utilizar. Salvo que dispongamos en nuestra red de clientes muy antiguos, lo normal será elegir el valor más alto.

6

Cuando acabemos, pulsamos de nuevo la tecla Intro.

A continuación, indicaremos si las utilidades que utilicen PAM deberán comportarse del mismo modo que cuando cambiamos contraseñas locales. Esto hará que las contraseñas se guarden en un archivo independiente que sólo podrá ser leído por el superusuario.

7

Elegimos la opción Yes y pulsamos la tecla Intro.

A continuación, el sistema nos pregunta si queremos que sea necesario identificarse para realizar consultas en la base de datos de LDAP.

8

Elegimos la opción No y volvemos a pulsar la tecla Intro.

Ya sólo nos queda indicar el nombre de la cuenta LDAP que tendrá privilegios para realizar cambios en las contraseñas. Como antes, deberemos escribir un nombre global único (Distinguished Name – DN) siguiendo las indicaciones que vimos al principio de este capítulo (cn=admin,dc=somebooks,dc=local)

9

Después de escribir el nombre adecuado, pulsaremos la tecla Intro.

En el último paso, el asistente nos solicita la contraseña que usará la cuenta anterior (como siempre, habrá que escribirla por duplicado para evitar errores tipográficos). Deberá coincidir con la que escribimos en el apartado Instalar OpenLDAP en el servidor.

10

Cuando terminemos de escribir la contraseña, pulsaremos la tecla Intro.

De vuelta en la pantalla de la terminal, podremos comprobar que no ha habido errores durante el proceso.

11

Con esto habremos terminado la configuración básica de LDAP.

Si más adelante observamos algún error o necesitamos efectuar alguna modificación, sólo tenemos que ejecutar el siguiente comando:

sudo dpkg-reconfigure ldap-auth-config

Configurar la autenticación para los clientes

Lo primero que haremos será utilizar auth-client-config, un script que nos ayuda a modificar los archivos de configuración de PAM y NSS. Para conseguirlo, ejecutamos el siguiente comando en la terminal:

sudo auth-client-config -t nss -p lac_ldap

Como puede verse, en nuestro caso hemos utilizado dos atributos:

  • -t nss, con el que le indicamos que los archivos que vamos a modificar son los correspondientes a NSS
  • -p lac_ldap, con el que indicamos que los datos para la configuración debe tomarlos del archivo lac_ldap. Este archivo se habrá generado durante la ejecución de ldap-auth-config en el punto anterior.

1

Ejecutamos el comando en la terminal.

La ejecución de este comando no debe ofrecer ningún tipo de error. De lo contrario, deberíamos repasar la configuración ejecutando de nuevo ldap-auth-config.

A continuación, deberemos actualizar la configuración de las políticas de autenticación predeterminadas de PAM, lo que conseguimos con el siguiente comando:

sudo pam-auth-update

2

Escribimos el comando y pulsamos Intro.

Al ejecutarlo, aparecerá un asistente, que nos muestra una primera pantalla informativa sobre la función de los módulos PAM.

3

Para continuar, pulsamos la tecla Intro.

En la siguiente pantalla, elegiremos cuáles de los módulos disponibles queremos habilitar. De forma predeterminada aparecen todos marcados…

4

… Por lo tanto, nos limitamos a volver a pulsar la tecla Intro para volver a la terminal

Una vez acabada la configuración automática, podremos hacer algunos cambios complementarios editando el archivo /etc/ldap.conf. Para lograrlo, recurriremos, como siempre, al editor nano:

sudo nano /etc/ldap.conf

Una vez que se abra el editor, podremos ajustar algunos de los valores del documento, pero, sobre todo, comprobaremos que son correctos los siguientes datos:

host 192.168.1.10 base 
dc=somebooks,dc=local 
uri ldapi://192.168.1.10/ 
rootbinddn cn=admin,dc=somebooks,dc=local 
ldap_version 3
bind_policy soft

5

Sólo nos quedará pulsar Ctrl + x para salir y asegurarnos de guardar los cambios en el archivo.

Con esto habremos terminado la configuración del servidor LDAP. Ahora está listo para autenticar usuarios. Sin embargo, aún nos queda establecer el comportamiento del demonio SLAPD.

Configurar el demonio SLAPD

SLAPD (Standalone LDAP Daemon) es un programa multiplataforma, que se ejecuta en segundo plano, atendiendo las solicitudes de autenticación LDAP que se reciban en el servidor.

Como hemos dicho más arriba, el último paso en la configuración del servidor LDAP será establecer algunos parámetros en la configuración de este demonio. Para conseguirlo, ejecutaremos el siguiente comando:

sudo dpkg-reconfigure slapd

1

Como es habitual, el comando deberá ejecutarse con privilegios de superusuario.

Aparecerá un asistente cuyo cometido es evitar que tengamos que cambiar a mano el archivo slapd.conf.

La primera pantalla que se muestra, actúa como medida de seguridad, para asegurarse de que no hacemos cambios por error. Hay que tener cuidado porque la pregunta se hace al revés, es decir, nos pregunta si queremos omitir la configuración del servidor (imagino que el objetivo será impedir que elijamos sin pensar lo que hacemos). En este caso, lógicamente, deberemos elegir la opción No.

2

Elegimos la opción <No> y pulsamos la tecla Intro.

Recuerda que puedes usar la tecla <tabulador> para cambiar de opción.

A continuación, deberemos escribir el nombre DNS que utilizamos para crear el DN base (Distinguished Name) del directorio LDAP.

3

En nuestro caso, escribiremos somebooks.local y pulsaremos la tecla Intro.

Después, escribiremos el nombre de la entidad en la que estamos instalando el directorio LDAP.

4

Para este ejemplo, escribiremos SomeBooks y pulsaremos la tecla Intro.

En el siguiente paso, deberemos escribir la contraseña de administración del directorio.

5

La contraseña debe coincidir con la que escribimos en el apartado Instalar OpenLDAP en el servidor

6

Como es habitual, deberemos escribirla dos veces papa evitar errores tipográficos.

A continuación, elegiremos el motor de la base de datos que usaremos para el directorio. Se recomienda HDB porque nos permitirá, en el futuro, cambiar los nombres de los subárboles si fuese necesario.

Si HDB no aparece elegida de forma predeterminada, saremos la tecla <tabulador> para desplazarnos.

7

Cuando sea correcto, pulsamos la tecla Intro.

Lo siguiente que nos pregunta el asistente es si queremos que se borre la base de datos anterior del directorio cuando terminemos la configuración de slapd.

8

Igual que antes, usamos la tecla <tabulador> para elegir No y pulsamos Intro.

A continuación, como hemos decidido no borrar la base de datos antigua, el asistente nos pregunta si queremos cambiarla de sitio.

9

Para evitar confusiones entre las dos bases de datos (nueva y antigua), elegiremos la opción Sí y pulsaremos Intro.

En algunas redes, con clientes muy antiguos, puede ser necesario mantener la versión 2 del protocolo LDAP. Por ese motivo, antes de terminar, el asistente nos pregunta queremos permitir el protocolo LDAPv2.

10

En la mayoría de los casos, la respuesta será No.

Después de este último paso, se cierra el asistente y volvemos a la consola.

11

Ahora podemos ver en la pantalla que la base de datos antigua se ha guardado en /var/backups y que el resto de la configuración se ha realizado con éxito.

Con esto habremos terminado la configuración del servidor LDAP. Ahora está listo para autenticar usuarios.

Crear la estructura del directorio

Una vez configurado el servidor, deberemos configurar la estructura básica del directorio. Es decir, crearemos la estructura jerárquica del árbol (DITDirectory Information Tree).

Una de las formas más sencillas de añadir información al directorio es utilizar archivos LDIF (LDAP Data Interchange Format). En realidad, se trata de archivos en texto plano, pero con un formato particular que debemos conocer poder construirlos correctamente

El formato básico de una entrada es así:

 # comentario
dn: <nombre global único>
<atributo>: <valor>
<atributo>: <valor>
...

Puedes encontrar más información en la página oficial de OpenLDAP: http://www.openldap.org/doc/admin24/dbtools.html#The%20LDIF%20text%20entry%20format

Las líneas que comienzan con un carácter # son comentarios.

<atributo> puede ser un tipo de atributo como cn o objectClass, o puede incluir opciones como cn;lang_en_US o userCertificate;binary.

Entre dos entradas consecutivas debe existir siempre una línea en blanco.

Si una línea es demasiado larga, podemos repartir su contenido entre varias, siempre que las líneas de continuación comiencen con un carácter de tabulación o un espacio en blanco.

Por ejemplo, las siguientes líneas son equivalentes:

dn: uid=jlopez, ou=medio, dc=somebooks, dc=es
dn: uid=jlopez, ou=medio,
dc=somebooks, dc=es

También podemos asignar varios valores a un mismo atributo utilizando varias líneas:

cn: Juan Jose Lopez
cn: Juan Lopez

Con esta información en mente, crearemos un archivo que contenga los tipos de objeto básicos del directorio. Comenzaremos por abrir un editor de textos, por ejemplo nano, indicándole el nombre de nuestro archivo:

sudo nano ~/base.ldif

1

Aquí lo hemos llamado base.ldif, pero, lógicamente, podrás llamarlo como te resulte más apropiado.

Una vez abierto el editor, escribiremos un contenido como este:

dn: ou=usuarios,dc=somebooks,dc=local
objectClass: organizationalUnit
ou: usuarios

dn: ou=grupos,dc=somebooks,dc=local
objectClass: organizationalUnit
ou: grupos

Lógicamente, en cada lugar donde aparecen los valores dc=somebooks,dc=local deberemos sustituirlos por los valores correctos en cada implementación.

2

Cuando hayamos terminado de escribirlo, sólo nos quedará pulsar Ctrl + x para salir y asegurarnos de guardar los cambios en el archivo.

A continuación, deberemos añadir la información a la base de datos OpenLDAP. Como sabemos, esto se hace con el comando ldapadd:

 sudo ldapadd -x -D cn=admin,dc=somebooks,dc=local -W -f base.ldif

3

Para ejecutar el comando, deberemos escribir la contraseña de administración de LDAP.

Después, podremos comprobar que los nuevos objetos se han añadido correctamente.

Añadir un usuario y un grupo

El método para añadir nuevos usuarios y grupos al árbol es muy similar a lo visto en el punto anterior, ya que consiste en crear un nuevo archivo ldif y, a continuación, integrarlo en la base de datos con ldapadd.

Añadir un usuario

Para añadir un nuevo usuario, recurriremos, como hasta ahora, al editor nano:

sudo nano ~/usuario.ldif

1

Abrimos el editor de textos indicándole el nombre del archivo que vamos a crear.

Por supuesto, puedes cambiar el nombre usuario.ldif por el que te resulte más adecuado en tu caso.

En el área de trabajo del editor, escribiremos un contenido como este:

dn: uid=jlopez,ou=usuarios,dc=somebooks,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jlopez
sn: Lopez
givenName: Juan
cn: Juan Lopez
displayName: Juan Lopez
uidNumber: 1000
gidNumber: 10000
userPassword: mi_password
gecos: Juan Lopez
loginShell: /bin/bash
homeDirectory: /home/jlopez 
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: juan.lopez@somebooks.com
postalCode: 29000
o: somebooks
initials: JL

2

Cuando hayamos terminado de escribirlo, sólo nos quedará pulsar Ctrl + x para salir y asegurarnos de guardar los cambios en el archivo.

Con esto ya estamos listos para cargar el nuevo usuario en el directorio. Sólo tenemos que escribir el siguiente comando:

sudo ldapadd -x -D cn=admin,dc=somebooks,dc=local -W -f usuario.ldif

3

Después de escribir la contraseña de administración de LDAP, podremos comprobar que el usuario se ha añadido correctamente.

Añadir un grupo

Para añadir el grupo, repetimos de nuevo el proceso anterior:

sudo nano ~/grupo.ldif

1

Abrimos el editor de textos indicándole el nombre del archivo que queremos crear

Una vez abierto el editor, escribiremos este contenido:

dn: cn=SMR2,ou=grupos,dc=somebooks,dc=local
objectClass: posixGroup
cn: SMR2
gidNumber: 10000

2

Cuando esté listo, pulsamos Ctrl + x para salir y nos aseguramos de guardar los cambios en el archivo.

De vuelta en la terminal, usamos de nuevo el comando ldapadd:

sudo ldapadd -x -D cn=admin,dc=somebooks,dc=local -W -f grupo.ldif

3

Después de escribir la contraseña de administración de LDAP, podremos comprobar que el grupo se ha añadido correctamente.

Con esto, ya tendremos en la base de datos un nuevo usuario y un nuevo grupo.

Cuando añadas nuevos usuarios, recuerda que los valores para los atributos uidNumber y homeDirectory deben ser diferentes para cada usuario. También habrá que sustituir el texto mi_password por la contraseña adecuada para el usuario.

Lo mismo ocurre con el atributo gidNumber de los grupos.

Además, los valores de los campos uidNumber y gidNumber no deben coincidir con el UID y GID de ningún usuario y grupo local.

Comprobar que todo es correcto

Ahora podemos comprobar que el contenido anterior se ha añadido correctamente. Para lograrlo podemos utilizar, por ejemplo, el comando ldapsearch , que nos permite hacer una búsqueda en el directorio.:

ldapsearch -xLLL -b "dc=somebooks,dc=local" uid=jlopez sn givenName cn

En este ejemplo buscamos un usuario con uid=jlopez y pedimos que nos muestre el contenido de los atributos sn, givenName y cn.

1

… Y este será el resultado de la consulta.

Otra opción interesante para comprobar el contenido del directorio es utilizar el comando slapcat. Su cometido es mostrar el contenido completo del directorio LDAP. Además, esta información se obtiene en formato LDIF, lo que nos permitirá volcarla a un fichero y exportar la base de datos de un modo muy sencillo.

En nuestro caso, nos limitaremos a obtener la salida en la pantalla:

2

Ejecutamos el comando slapcat con privilegios de superusuario.

3

Puedes utilizar la barra de desplazamiento para ver el contenido completo del archivo.


Anterior

Contenido

Siguiente