Inicio wiki
Aula Virtual
 Administración de Sistemas Operativos
Inicio ASO Aula Virtual

Vistas
  •   OpenLDAP Configuraci贸n
De ASO

Una vez instalado OpenLDAP es importante observar que en el directorio /etc/ldap/ (en Fedora, /etc/openldap) se encuentran disponibles los ficheros de configuraci贸n del directorio activo as铆 como los diferentes schemas y otra informaci贸n aplicable al funcionamiento y din谩mica del mismo. Tambi茅n es importante recordar que puede iniciar, detener, o reiniciar el servicio, de la siguiente forma:

# service slapd start | stop | restart

A continuaci贸n se va a configurar tanto del Backend (parte que implica las directivas para din谩micamente configurar el demonio servidor slapd y las opciones para poblar con informaci贸n el directorio -Frontend) como del Frontend de OpenLDAP, desarrollando al mismo tiempo un ejemplo que permita conocer de forma sencilla en qu茅 consiste.

Creaci贸n del dominio: configuraci贸n del Backend

Toda la informaci贸n en el directorio activo se almacena con estructura de 谩rbol. Gracias a OpenLDAP dispone de libertad total para implementar el 脕rbol de informaci贸n del directorio o DIT (Directory Information Tree). En la configuraci贸n b谩sica que se va a presentar a continuaci贸n se crean dos nodos bajo la ra铆z del 谩rbol: usuarios (para almacenar usuarios del dominio) y grupos (para almacenar grupos de usuarios).

Lo primero que debe hacer es determinar la ra铆z del 谩rbol para el directorio LDAP, normalmente el FQDN (Fully Qualified Domain Name) del dominio. Por ejemplo, para el dominio miempresa.com, el nodo ra铆z es dc=miempresa,dc=com.

OpenLDAP utiliza un directorio independiente que almacena el DIT cn=config, que permite determinar de forma din谩mica el comportamiento del servidor slapd, lo que permite realizar modificaciones en las definiciones de los esquemas, 铆ndices, listas de control de acceso鈥 sin la necesidad de detener el servicio. Este directorio backend inicialmente dispone de una configuraci贸n m铆nima, por lo que es necesario ampliar su funcionalidad con opciones, m贸dulos, esquemas鈥 adicionales para sentar la base para la poblaci贸n del directorio con informaci贸n (frontend) 鈥揳s铆, para determinadas aplicaciones, lo recomendable es consultar la documentaci贸n espec铆fica de las mismas. A continuaci贸n se va poblar el directorio con usuarios y grupos de usuarios, en un formato compatible con aplicaciones de libretas de direcciones o cuentas Unix Posix. Este tipo de cuentas permiten a varias aplicaciones implementar autenticaci贸n, tales como aplicaciones Web, agentes de correo electr贸nico, y otras.

Por tanto, se realiza la carga de los ficheros schema para la estructura del directorio, disponibles en este caso en el directorio creado en la instalaci贸n de OpenLDAP /etc/ldap/schema/, ejecutando los siguientes comandos como root:

# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif


  Fedora

Los schemas se encuentran en el directorio /etc/openldap/schema/.

Figura 1. Carga de ficheros schema

Una vez a帽adidos los esquemas a LDAP debe crear el fichero LDIF de configuraci贸n para la carga din谩mica de los m贸dulos en el backend y la base de datos para el directorio. A continuaci贸n puede ver un ejemplo de este fichero, en el que es fundamental especificar el directorio con la ubicaci贸n para los m贸dulos as铆 como el sufijo de nuestro dominio, identificador y contrase帽a para el usuario privilegiado o la ubicaci贸n y permisos de acceso para la base de datos:


Listado 1. Ejemplo de fichero LDIF para la configuraci贸n del backend: backend.miempresa.com.ldif

# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb 

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=miempresa,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=miempresa,dc=com
olcRootPW: hola00==
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=miempresa,dc=com" write  by anonymous auth by self write by * none 
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=miempresa,dc=com" write by * read
Archivo:ico_nota.gif  Nota
Las opciones especificadas en el fichero de configuraci贸n del backend y su sintaxis dependen del tipo de base de datos utilizada para el mismo. En el ejemplo anterior se trata de una base de datos BDB, aunque otros tipos pueden instanciarse, como por ejemplo LBDM. De esta forma recomendamos la consulta de la documentaci贸n OpenLDAP para su correcta configuraci贸n cuando necesitemos escenarios m谩s complejos.

Una vez creado el fichero LDIF debe cargarlo en el directorio, haci茅ndolo de forma similar al caso de los schemas necesarios:

# ldapadd -Y EXTERNAL -H ldapi:/// -f backend.miempresa.com.ldif
Figura 2. Carga del fichero LDIF para la configuraci贸n del backend

Como puede observar en la figura 2, se han creado con 茅xito dos entradas; una para la carga din谩mica de m贸dulos en el directorio y otra para la base de datos. Desde este momento es posible comenzar a poblar el directorio frontend con informaci贸n.

Poblar el directorio: configuraci贸n del frontend

Una vez que dispone, al menos, de una configuraci贸n m铆nima del comportamiento del proceso servidor puede comenzar a poblar el frontend de OpenLDAP con informaci贸n, atendiendo a los schemas utilizados para almacenar la misma. Para ello hay que crear un fichero LDIF en el que se a帽aden los diferentes nodos que desea registrar en el 谩rbol del directorio activo.

Como puede ver en el siguiente ejemplo, se crea el objeto de primer nivel del dominio (dc=miempresa,dc=com), unidades organizacionales para usuarios y grupos, y un ejemplo de usuario y grupo de usuarios especificando, fundamentalmente, identificadores, clases de objeto y atributos correspondientes a cada caso.

Listado 2. Ejemplo de fichero LDIF para la poblaci贸n del frontend: frontend.miempresa.com.ldif

# Creamos el objeto del nivel superior del dominio
dn: dc=miempresa,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Ejemplo de Organizacion
dc: miempresa
description: LDAP Ejemplo

# Usuario Administrador (admin)
dn: cn=admin,dc=miempresa,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: hola00== 

# Unidad Organizacional usuarios
dn: ou=usuarios,dc=miempresa,dc=com
objectClass: organizationalUnit
ou: usu谩rios 

# Unidad Organizacional grupos
dn: ou=grupos,dc=miempresa,dc=com
objectClass: organizationalUnit
ou: grupos 

# Usuario Juan L贸pez
dn: uid=juan,ou=usuarios,dc=miempresa,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: juan
sn: Lopez
givenName: Juan
cn: Juan Lopez
displayName: Juan Lopez
uidNumber: 1000
gidNumber: 10000
userPassword: password
gecos: Juan Lopez
loginShell: /bin/bash
homeDirectory: /home/juan
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: juan.lopez@miempresa.com
postalCode: 31000
l: Almeria
o: Ejemplo
mobile: +34 (0)6 xx xx xx xx
homePhone: +34 (0)5 xx xx xx xx
title: Administrador del Sistema
postalAddress: 
initials: JL

# Grupo Ejemplo
dn: cn=ejemplo,ou=grupos,dc=miempresa,dc=com
objectClass: posixGroup
cn: ejemplo
gidNumber: 10000 

Se realiza la carga de las entradas en el directorio LDAP ejecutando:

# ldapadd -x -D cn=admin,dc=miempresa,dc=com -W -f frontend.miempresa.com.ldif

En la figura 3 se puede ver el resultado de aplicar dichos cambios. Como se puede apreciar, para realizar la carga de nuevas entradas en el directorio LDAP es necesario introducir la contrase帽a del usuario administrador LDAP. Si quiere comprobar que las entradas han sido a帽adidas correctamente puede consultar el contenido del directorio LDAP con la utilidad ldapsearch de la siguiente forma:

# ldapsearch -xLLL -b "dc=miempresa,dc=com" uid=juan sn givenName cn


Figura 3. Carga del fichero LDIF para la poblaci贸n del frontend

En la figura 4 puede ver c贸mo efectivamente la ejecuci贸n del comando de b煤squeda devuelve la informaci贸n solicitada (sn, givenName, cn) para el usuario con uid=juan.

Figura 4. Ejemplo de utilizaci贸n de ldapsearch

En ella se han incluido par谩metros para no utilizar autenticaci贸n simple SASL (Simple Authentication Security Layer), ya que es aplicada de forma predeterminada (-x) y para deshabilitar la muestra de informaci贸n sobre el schema LDIF (-LLL).

En ocasiones, y como resulta en este caso, para llevar a cabo operaciones sobre el directorio activo resulta m谩s c贸modo o incluso eficiente trabajar con alguna aplicaci贸n o herramienta que ofrezca una interfaz gr谩fica para el acceso al mismo.

Archivo:datosmas.pngDatos m谩s importantes

Nombre del servicio:slapd

Fichero de configuraci贸n:/etc/ldap/ldap.conf (Ubuntu)

/etc/ldap.conf (Fedora)


Directorio de configuraci贸n:/etc/ldap/ (Ubuntu)

/etc/openldap (Fedora)


Comandos m谩s utilizados:ldapadd, ldapsearch ldapmodify, ldapdelete, slapadd, slapcat, slapindex y slappaswd.

Puertos utilizados: 389/TCP