Servidor LDAP en Ubuntu o Debian con OpenLDAP

|

¿Qué es un servidor LDAP?

Un servidor LDAP es un servidor de datos optimizado para la realización rápida de consultas de lectura y orientado al almacenamiento de datos de usuarios a modo de directorio.

La principal utilidad de un directorio LDAP es como servidor de autentificación para los distintos servicios de un sistema informático como puedan ser: autentificación para entrar en un PC, para entrar en una aplicación web, para acceder a un servidor ftp, para acceder a servidores de correo entrante POP3 y saliente SMTP, etc...

Si en nuestra red disponemos de un servidor LDAP y configuramos todos los PCs y todos los servicios de la red para que se autentifiquen en él, bastará con crear las cuentas de usuario y grupos de usuarios en nuestro servidor LDAP para que los usuarios puedan hacer uso del sistema y de sus servicios desde cualquier puesto de la red. Es un sistema ideal para centralizar la administración de usuarios en un único lugar.

En el curso veremos cómo poner en marcha un servidor LDAP y cómo configurar el resto de PCs clientes de la red para que se autentifiquen en él. También utilizaremos OpenSSL para que durante el proceso de autentificación los datos viajen encriptados por la red, así ningún curioso podrá averiguar nuestras contraseñas. Además utilizaremos LDAP para que autentifique el acceso al servidor ftp y el acceso a páginas restringidas en el servidor web.

Instalación y configuración de OpenLDAP

Para simplificar la administración de los usuarios del sistema es ideal utilizar una base de datos accesible mediante LDAP. Almacenar las cuentas de usuario de forma centralizada en un único repositorio facilitará la creación, modificación y eliminación de cuentas de usuario y grupos de usuarios. Será necesario configurar los PCs de la red para que utilicen el servidor LDAP como servidor de autentificación.

Instalación de OpenLDAP

El servidor OpenLDAP está disponible en el paquete slapd por tanto, lo instalaremos utilizando apt-get. También nos conviene instalar el paquete db4.2-util que son un conjunto de utilidades para la base de datos dbd que es la que utilizaremos para nuestro servidor ldap y el paquete ldap-utils que contiene utilidades adicionales:
// Instalación del servidor LDAP


# apt-get install slapd db4.2-util ldap-utils
Durante la instalación, nos pedirá que introduzcamos la contraseña de administrador del servidor ldap. Podemos configurar cualquier contraseña, como por ejemplo 'ldapadmin'

Configuración de OpenLDAP

La configuración del servidor LDAP se almacena en el archivo /etc/ldap/slapd.conf. Podemos editar manualmente dicho archivo, pero es mejor lanzar el asistente de configuración de slapd. Para ello debemos ejecutar el siguiente comando:

(para aquellos a los que no os aparezca, os recomiendo que le echéis un vistazo a este otro artículo: http://tecnoloxiaxa.blogspot.com/2008/11/autenticacin-en-un-sistema-ldap.html )
//Lanzar el asistente de configuración de slapd


# dpkg-reconfigure slapd
  • Lo primero que nos pregunta el asistente es si deseamos omitir la configuración del servidor LDAP. Obviamente responderemos que no, ya que precisamente lo que queremos es configurar el servidor LDAP.
  • Nuestro directorio LDAP debe tener una base, a partir de la cual cuelgan el resto de elementos. Como nombre de la base, habitualmente se utiliza el nombre del dominio. Ejemplo, si nuestro dominio es iesacarballeria.com, lo normal es que la base para nuestro directorio LDAP sea: dc=iesacarballeira,dc=com.
  • La siguiente pregunta que nos hace el asistente es el nombre de nuestro dominio. Éste nombre lo utilizará para crear el nombre distinguido (DN) o dicho más claramente, nombre identificativo de la base de nuestro directorio LDAP. 


  • Posteriormente nos preguntará por el nombre de nuestra organización: iesacarballeira.

  • Después nos preguntará por la contraseña que deseamos poner al usuario admin (administrador) del servidor LDAP. Dicha contraseña nos la pedirá dos veces para evitar errores de tecleo. Podemos poner cualquier contraseña, por ejemplo 'root'.

  • Acto seguido nos informará sobre los posibles gestores de datos para almacenar el directorio y en la siguiente ventana nos preguntará qué sistema utilizar. Lo recomendable es utilizar el sistema BDB.

  • Después nos preguntará si queremos que se elimine la base de datos cuando quitemos slapd. Por si acaso, lo mejor es responder que no:

  • En el caso de que exista una base de datos LDAP previa, nos preguntará si deseamos moverla. Lo mejor es responder Sí, para evitar que interfiera en la nueva base de datos:
  • Luego nos preguntará si deseamos utilizar LDAP versión 2, respondemos que no ya que apenas se utiliza.

  • Finalmente nos da la oportunidad de omitir la configuración. Si respondemos que sí, será como que no hemos ejecutado el asistente, por lo tanto si nuestra intención es configurar el servidor LDAP responderemos no:


Ya tendríamos nuestro servidor LDAP listo para trabajar con él.

Arranque y parada manual del servidor LDAP

El servidor LDAP, al igual que todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d.
// Arrancar o reiniciar el servidor LDAP


root@cnice-desktop:# /etc/init.d/slapd restart

// Parar el servidor LDAP


root@cnice-desktop:# /etc/init.d/slapd stop

Arranque automático del servidor LDAP al iniciar el sistema.

update-rc.d slapd defaults

Administración de OpenLDAP


Introducción

Una vez instalado y configurado el servidor LDAP, la siguiente tarea es la del diseño de la estructura y la introducción de datos en el directorio. Puesto que la finalidad de nuestro servidor LDAP es que sirva de almacen de usuarios y grupos para autentificar sistemas linux y servicios como ftp y web, deberemos crear una estructura que parta de la base de nuestro directorio, para almacenar dicha información. Tal y como se explica más abajo, crearemos una unidad organizativa (ou) llamada groups, para almacenar los grupos de usuarios y crearemos otra unidad organizativa llamada users para almacenar a los usuarios.

Explorador de directorios LDAP

Para acceder al directorio LDAP y poder crear y modificar elementos en dicho directorio, es necesario disponer de un explorador de directorios LDAP (LDAP browser). Existen muchos exploradores LDAP tanto de pago como libres. Entre las aplicaciones libres destacamos gq, phpldapadmin (aplicación web) y JXplorer. Para instalar gq, podemos utilizar apt-get. Una vez instalada, para ejecutar gq tan solo debemos pulsar alt+f2 y escribir gq.
Para instalar phpldapadmin podemos:
  • Simplemente ejecutar: apt-get install phpldapadmin
  • Si se produce el error :


    Memory Limit low.
    Your php memory limit is low - currently 16M



Deberemos aumentar la memoria, por ejemplo a 64M, en el fichero /etc/php5/apache2/php.ini
//editamos el fichero /etc/php5/apache2/php.ini memory_limit = 64M ; Maximum amount of memory a script may consume (16MB)
y reiniciamos el servidor apache:

/etc/init.d/apache restart
Si estamos en el servidor, simplemente teclearemos en la barra de direcciones de nuestro explorador web:

http://localhost/phpldapadmin/

  • Otra posibilidad y al igual que otras aplicaciones web, podremos descargarla desde http://phpldapadmin.sourceforge.net/ y descomprimirla dentro del DocumentRoot de apache, es decir, dentro de la carpeta /var/www, por ejemplo en /var/www/phpldapadmin. Para ejecutarla, si la hemos descomprimido en la carpeta anterior, debemos ir a http://ip_del_servidor_web/phpldapadmin/ con el navegador y veremos la página principal de la aplicación (deberemos asegurarnos de que existe el fichero config.php, ya que por defecto sólo trae un config.php.example, ya que sino con cada actualización, en caso de existir ya nos machacaría la configuración previa. 



JXplorer - Explorador LDAP en java.

Por su calidad superior, en este curso utilizaremos JXplorer para administrar el directorio LDAP.

Instalación de JXplorer

Previo a instalar jxplorer, es necesario instalar la máquina virtual java de Sun.
Aunque en estos momentos está disponible la versión 1.6 de la máquina virtual de java, por problemas con la versión 3.2 de jxplorer he instalado la 1.5:

# apt-get install sun-java5-bin sun-java5-jre

Lo cierto es que la versión 3.2, de momento me ha dado muchos problemas en su instalación, por ello finalmente he decidido bajarme la versión 3.1 ( http://sourceforge.net/project/downloading.php?groupname=jxplorer&filename=JXv3.1deploy.tar.bz2&use_mirror=ovh) y ejecutarla tecleando:

# sh ./jxplorer.sh

Pasos para la instalación de jxplorer3.2 - DE MOMENTO CON SERIOS PROBLEMAS DE INSTALACIÓN
Para ello debemos ir a http://www.java.com/es/ y descargar la última versión del JRE (Java Runtime Enviroment). Puesto que no existe una versión específica para sistemas debian, debemos descargar la versión Linux (genérica), ejecutar el archivo 'bin' para que se descomprima el paquete y mover el directorio que se ha creado (ejemplo, jre1.6.0_10), a la carpeta /usr/lib. Posteriormente tendremos que editar el archivo /root/.bashrc y añadir las variables que permitan al shell encontrar el JRE: // Añadir en /root/.bashrc (sustituir jre1.6.0_10 por la versión descargada) CLASSPATH=/usr/lib/jre1.6.0_10/bin/ JAVA_HOME=/usr/lib/jre1.6.0_10/bin/ PATH=/usr/lib/jre1.6.0_10/bin/:/usr/lib/jre1.6.0_10/bin/java/:/sbin:/bin :/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin cargamos las variables del entorno: # source /root/.bashrc Después, debemos abrir un terminal y ya estamos en condiciones de instalar JXplorer. JXplorer no está disponible en los repositorios de paquetes de debian, por ello debemos ir a http://pegacat.com/jxplorer/downloads/users.html y descargarnos la versión para linux. En el momento de escribir estas líneas, la última versión es la 3.2 y por tanto el archivo descargado se llama JXv3.2_install_linux.bin. Para instalar la aplicación debemos dar permisos de ejecución al archivo y ejecutar:

// Instalar JXplorer


# sh ./JXv3.1_install_linux.bin
Se iniciará un sencillo asistente de instalación que al finalizar habrá creado un enlace en nuestra carpeta home, por lo tanto para ejecutarlo debemos escribir:

// Ejecutar JXplorer 

# ./JXplorer_LDAP_Browser
Veremos la pantalla principal de JXplorer:




Conexión con el servidor LDAP

La conexión con el servidor LDAP podemos hacerla como usuario anónimo o como usuario administrador. Si conectamos de forma anónima solo podremos visualizar los elementos pero no podremos hacer cambios. Si conectamos como administrador, podremos crear, modificar y eliminar elementos de cualquier tipo. Para conectar al servidor LDAP como administrador necesitamos la siguiente información:
  • Dirección IP del servidor LDAP
  • Protocolo del servidor (LDAP v3 en nuestro caso)
  • Base del directorio (dc=iesacarballeira,dc=com en nuestro caso)
  • Nombre de usuario administrador (cn=admin,dc=iesacarballeira,dc=com en nuestro caso)
  • Contraseña (root en nuestro caso)
La base del directorio se suele denominar en inglés 'base DN' o 'Nombre Distinguido de la base del directorio'. Se corresponde con el parámetro 'suffix' del archivo de configuración del servidor LDAP /etc/ldap/slapd.conf.
El nombre del usuario con el que nos conectamos se suele denominar en inglés 'user DN' o también 'bind DN'
El nombre de usuario administrador por defecto suele ser admin y a menudo hay que proporcionar nombre y base del directorio: cn=admin,dc=ieacarballeira,dc=com
Al hacer clic en el botón 'conectar' (marcado con círculo rojo en la figura) nos aparecerá el diálogo de conexión para que introduzcamos los datos de la conexión. Para no tener que introducir dicha información cada vez que conectemos, podemos grabar los datos pulsando 'Save'.



Si pulsamos OK, JXplorer conectará con el servidor LDAP y mostrará el directorio:



Vemos que en nuestro directorio solamente hay dos elementos: una organización llamada 'iesacarballeira' y el usuario administrador llamado 'admin'.

Organización del directorio LDAP


Creación de las unidades organizativas

Puesto que nuestro directorio va a almacenar usuarios y grupos, vamos a crear sendas unidades organizativas (en inglés organizational unit - ou) llamadas 'users' y 'groups' que nos servirán para organizar los usuarios y los grupos por separado. Dentro de la unidad organizativa 'users' crearemos todos los usuarios del sistema. Dentro de la unidad organizativa 'groups' crearemos todos los grupos del sistema.
Para crear una unidad organizativa dentro de nuestra organización, haremos clic con el derecho sobre la organización 'iesacarballeira' y en el menú contextual elegiremos 'New':



Nos aparecerá la ventana 'Set Entry Object Classes' que podríamos traducir por 'Seleccione las clases objeto de la nueva entrada' o mejor, 'Seleccione las tipologías'. En ella podremos elegir los 'tipos' que tendrá nuestro nuevo elemento. Como se trata de una unidad organizativa (en inglés organizational unit - ou) debemos seleccionar el tipo organizationalUnit en la lista de la izquierda y pulsar el botón añadir (Add). Los otros dos tipos que aparecen por defecto (organizationalRole y simpleSecurityObjet) no los necesitaremos, por lo tanto podemos seleccionarlos de la lista de la derecha y pulsar el botón quitar (remove). En la casilla 'Enter RDN' (introducir Nombre Distinguido Relativo) debemos poner el nombre de nuestro elemento. Escribiremos ou=users. Estaremos en la situación de la siguiente figura:




Tan solo debemos pulsar el botón OK y el botón "Submit" en la pantalla que nos aparece, ya se habrá creado nuestra unidad organizativa 'users'. Repetiremos los pasos para crear otra unidad organizativa llamada 'groups'.



Usuarios y grupos

Ahora solamente nos queda crear los usuarios, crear los grupos y asignar los usuarios a sus grupos. Dentro de nuestra unidad organizativa 'groups' crearemos los siguientes grupos:
  • profesores (gid=1001)
  • alumnos (gid=1002)
Dentro de nuestra unidad organizativa 'users' crearemos los siguientes usuarios:
  • javier (uid=1001, profesor)
  • joaquin (uid=1002, profesor)
  • miguel (uid=1003, profesor)
  • jessica (uid=1004, alumno)
  • joel (uid=1005, alumno)

Creación de grupos

Para crear los grupos, haremos clic con el derecho en la unidad organizativa 'groups' e igual que antes haremos clic en 'New'. Nuestro nuevo elemento será un nuevo grupo posix, por lo tanto debemos agregar el tipo 'posixGroup' de la lista de la izquierda. El nombre (RDN) será profesores, por tanto debemos escribir 'cn=profesores' (cn= Common Name - Nombre Común):




Al pulsar OK nos apacererá la siguente figura, en la cual observamos los atributos clásicos de un grupo posix. Debemos rellenar al menos el campo gidNumber. También podemos introducir miembros al grupo. En el parámetro memberUid añadimos javier. Luego, haciendo clic con el derecho en javier > Add another value, podemos añadir otro valor: joaquin. De igual manera añadiremos a miguel. No importa que todavía no hayamos creado a dichos usuarios:




Creación de usuarios

Para crear los usuarios, haremos clic con el derecho en la unidad organizativa 'users' e igual que antes haremos clic en 'New'. Nuestro nuevo elemento será un nuevo usuario posix, por lo tanto debemos agregar el tipo 'posixAccount' de la lista de la izquierda. Pero nuestro usuario también será una persona, por eso nos interesará agregar el tipo 'person' para disponer de los atributos de dicho tipo (nombre, apellidos, ...), además como será usuario de Internet nos interesará agregar también el tipo 'inetOrgPerson' para poder almacerar el e-mail y otros valores. Si su nombre es Francisco Javier, podemos escribir en la casilla RDN 'cn=Francisco Javier' (cn= Common Name - Nombre Común):




Al pulsar OK nos apacererá la siguente figura, en la cual observamos los atributos de las tres tipologías de nuestro elemento: persona, usuario de internet y cuenta posix. Debemos rellenar al menos los campos gidNumber (grupo primario que será el 1001), homeDirectory, uid (identificador), uidNumber, loginShell y sn (surname - apellidos). También añadiremos el e-mail aunque en la figura no se vea ya que está más abajo:



Lo mismo haremos con el resto hasta que tengamos creados los cinco usuarios.


Ya tendríamos creada la estructura, los grupos y los usuarios que necesitamos para nuestro sistema.

Autenticación de usuarios con LDAP
Para seguir viendo cómo configurar y autenticar LDAP (sin encriptar y usando openssl para encriptación) pulsa aquí


CopyPasteandoLink

0 comentarios:

Publicar un comentario