Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Cómo configurar OpenLDAP como libreta de direcciones.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2009 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

LDAP (Lightweight Directory Access Protocol) es un protocolo para consulta y modificación de servicios de directorio que se desempeñan sobre TCP/IP. LDAP utiliza el modelo X.500 para su estructura, es decir, se estructura árbol de entradas, cada una de las cuales consiste de un conjunto de atributos con nombre y que a su vez almacenan valores.

URL: http://en.wikipedia.org/wiki/LDAP

Equipamiento lógico necesario.

•  openldap-2.2.13
•  openldap-clients-2.2.13
•  openldap-servers-2.2.13
•  evolution-data-server-1.x (o bien simplemente del archivo evolutionperson.schema que incluye dicho paquete)

Instalación a través de yum.

Si utiliza CentOS 5, Red Hat™ Enterprise Linux 5 o White Box Enterprise Linux 5, solo se necesita realizar lo siguiente para instalar o actualizar el equipamiento lógico necesario:

yum -y install openldap openldap-clients openldap-servers evolution-data-server

Instalación a través de up2date.

Si se utiliza Red Hat™ Enterprise Linux 4, solo bastará realizar lo siguiente para instalar o actualizar el equipamiento lógico necesario:

up2date -i openldap openldap-clients openldap-servers evolution-data-server

Procedimientos.

SELinux y el servicio ldap.

Para que SELinux permita al servicio ldap funcionar normalmente, haciendo que se pierda toda la protección que brinda esta implementación, utilice el siguiente mandato:

setsebool -P slapd_disable_trans 1

Creación de directorios.

Con fines de organización se creará un directorio específico para este directorio y se configurará con permisos de acceso exclusivamente al usuario y grupo ldap.

mkdir /var/lib/ldap/addressbook
chmod 700 /var/lib/ldap/addressbook
chown ldap:ldap /var/lib/ldap/addressbook

Se requiere además copiar el archivo /etc/openldap/DB_CONFIG.example dentro de /var/lib/ldap/addressbook/ como el archivo DB_CONFIG:

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/addressbook/DB_CONFIG

Generación de claves de acceso para LDAP.

Crear la clave de acceso que se asignará en LDAP para el usuario administrador del directorio. Basta ejecutar desde una terminal:

slappasswd

Lo anterior debe dar como salida un criptograma como lo mostrado a continuación:

{SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Copie y respalde este criptograma. El texto de la salida será utilizado más adelante en el archivo /etc/openldap/slapd.conf y se definirá como clave de acceso para el usuario Administrador, quien tendrá todos los privilegios sobre el directorio.

Archivo de esquemas.

El texto de la salida será utilizado más adelante en el archivo /etc/openldap/slapd.conf y se definirá al usuario Administrador para como el utilizado para acceder con todos los privilegios al directorio.

Se copia el archivo de esquema de evolution-data-server dentro del directorio /etc/openldap/schema/:

cp /usr/share/evolution-data-server-*/evolutionperson.schema 
/etc/openldap/schema/

Archivo de configuración /etc/openldap/slapd.conf.

Edite el archivo /etc/openldap/slapd.conf y agregue entre las primeras líneas del archivo el esquema de datos instalado con el paquete evolution-data-server:

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema

include /etc/openldap/schema/evolutionperson.schema

# Allow LDAPv2 client connections. This is NOT the default.
allow bind_v2

Independientemente de lo que ya se tenga configurado y que no será tocado, se añade al final del archivo /etc/openldap/slapd.conf lo siguiente con el fin de definir el nuevo directorio que en adelante se utilizará como libreta de direcciones, donde dc=su-dominio,dc=net corresponde al nombre único y exclusivo para el nuevo directorio. Jamás utilice el mismo nombre de otro directorio existente.

database	bdb
suffix		"dc=su-dominio,dc=net"
rootdn		"cn=Administrador,dc=su-dominio,dc=net"
rootpw          {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
directory	/var/lib/ldap/addressbook

# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

Inicio del servicio ldap.

Inicie el servicio de LDAP y añada éste al resto de los servicios que arrancan junto con el sistema:

service ldap start
chkconfig ldap on

Añadir datos al directorio.

A continuación hay que crear el objeto que a su vez contendrá el resto de los datos en el directorio. Genere un archivo addressbook.ldif al cual agregará el siguiente contenido, del cual solo reemplace la cadena de texto su-dominio por el dominio deseado:

dn: dc=su-dominio, dc=net
objectclass: top
objectclass: dcObject
objectclass: organization
o: Nombre completo de su compañia
dc: su-dominio

dn: ou=Addressbook, dc=su-dominio, dc=net
ou: Addressbook
objectClass: top
objectClass: organizationalUnit

Es importante señalar que si se omite el renglón vacío entre dc: su-dominio y dn: ou=Addressbook, dc=su-dominio, dc=net, ocurrirá un irremediable error de sintaxis cuando se intente cargar los datos en el directorio. Respete los espacios, signos de puntuación, las mayúscula y las minúsculas.

Se utilizará ldapadd para insertar los datos necesarios. Las opciones utilizadas con este mandato son las siguientes:

-x		autenticación simple
-W		solicitar clave de acceso
-D binddn	Nombre Distinguido (dn) a utilizar
-h anfitrión	Servidor LDAP a acceder
-f archivo 	archivo a utilizar

Una vez entendido lo anterior, se procede a insertar la información generada en el directorio utilizando lo siguiente:

ldapadd -x -W -D 'cn=Administrador, dc=su-dominio, dc=net' -h 127.0.0.1 -f addressbook.ldif

Una vez hecho lo anterior, se podrá comenzar a poblar el directorio con datos. Genere el archivo su-usuario.ldif con los siguientes datos, donde reemplazará los valores por reales. Elimine los campos que queden vacíos o sean de poca utilidad, porque de otra manera LDAP impedirá insertar éstos. Es importante destacar que deben estar incluidas las clases top, person, organizationalPerson, inetOrgPerson y evolutionPerson, ya que de otro modo no será posible utilizar los campos de información necesarios para que el directorio funcione como libreta de direcciones.

dn: cn=Nombre Completo, ou=Addressbook, dc=su-dominio, dc=net
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: evolutionPerson
cn: Nombre Completo
givenName: Nombre
sn: Apellidos
displayName: Apodo
title: Sr.
mail: su-cuenta-de-correo@su-dominio.com
initials: I.N.I.C.I.A.L.E.S.
o: Nombre Completo de su compañía.
ou: Departamento o Sección a la que pertenece
businessRole: Puesto que desempeña en su empresa
homePostalAddress: Domicilio de su hogar.
postalAddress: Domicilio de su empresa.
l: Ciudad
st: Estado
# Código postal
postalCode: 12345
# Telefono empresa
telephoneNumber: 55-5555-5555
# Teléfono principal
primaryPhone: 55-5555-5555
# Teléfono móvil
mobile: 55-5555-5555
# Telefono hogar
homePhone: 55-5555-5555
# Otro teléfono
otherPhone: 55-5555-5555
labeledURI: http://www.alcancelibre.org/
# Su fecha de nacimiento
birthDate: 1970-02-20
fileAs: Apellidos, Nombre
category: Cualquier-categoría-que-queira-crear
managerName: Nombre de su jefe, si lo tiene
assistantName: Nombre de su asistente, si lo tiene.
# Telefono de su asistente, si lo tiene
assistantPhone: 55-5555-5555
spouseName: Nombre de su esposa(o), si lo tiene.
# fecha en que celebra su aniversario de bodas, si aplica
anniversary: 2000-01-01

Los datos se podrán insertar utilizando lo siguiente:

ldapadd -x -W -D 'cn=Administrador, dc=su-dominio, dc=net' -h 127.0.0.1 -f su-usuario.ldif

Configuración de clientes.

Acceda hacia el directorio con cualquier cliente que tenga soporte para acceder hacia directorios LDAP.

Novell Evolution.

Hacer clic en Archivo → Nuevo → Libreta de direcciones.

Propiedades de la libreta de direcciones, pestaña General.
Propiedades de la libreta de direcciones, pestaña General.

Si en lugar de autenticar de manera anónima (modo de solo lectura) lo hace con cn=Administrador, dc=su-dominio, dc=net (modo de lectura y escritura), podrá realizar modificaciones y añadir fácilmente nuevos registros en la libreta de direcciones.

Propiedades de la libreta de direcciones, pestaña Detalles.
Propiedades de la libreta de direcciones, pestaña Detalles.

Mozilla Thunderbird.

Hacer clic en Archivo → Nuevo → Directorio LDAP

Propiedades de servidor de directorio, pestaña General.
Propiedades de servidor de directorio, pestaña General.

Al igual que con Novell Evolution, si en lugar de autenticar de manera anónima (modo de solo lectura) lo hace con cn=Administrador, dc=su-dominio, dc=net (modo de lectura y escritura), podrá realizar modificaciones y añadir fácilmente nuevos registros en la libreta de direcciones.

Propiedades de servidor de directorio, pestaña Avanzado.
Propiedades de servidor de directorio, pestaña Avanzado.

Squirrelmail.

Hay que editar el archivo /etc/squirrelmail/config.php y añadir/editar:

$ldap_server[0] = array(
    'host' => '127.0.0.1',
    'base' => 'ou=Addressbook,dc=su-dominio,dc=net',
    'name' >= 'Addressbook'
);

Administración.

Hay una gran cantidad de programas para acceder y administrar servidores LDAP, pero la mayoría solo sirven para administrar usuarios y grupos del sistema como diradmin y el módulo de LDAP de Webmin. La mejor herramienta de administración de directorios LDAP que podemos recomendar es PHP LDAP Admin.

Respaldo de datos.

Debe detenerse el servicio de LDAP antes de proceder con el respaldo de datos.

service ldap stop

A continuación, se utiliza la herramienta slapcat, utilizando el archivo de configuración /etc/openldap/slapd.conf.

slapcat -v -f /etc/openldap/slapd.conf -l respaldo-$(date +%Y%m%d).ldif

Concluido el proceso de respaldo de datos, puede iniciarse de nuevo el servicio de ldap.

service ldap start

Restauración de datos.

El procedimiento requiere detener el servicio.

service ldap stop

Debe eliminarse los datos del directorio a restaurar.

rm -f /var/lib/ldap/addressbook/*

A continuación, se utiliza la herramienta slapadd para cargar los datos desde un archivo *.dif de respaldo.

slapadd -v -c -l respaldo-20061003.ldif -f /etc/openldap/slapd.conf

Se debe ejecutar la herramienta slapindex, que se utiliza para regenerar los índices LDAP.

slapindex

Concluido el proceso de restauración de datos, puede iniciarse de nuevo el servicio de ldap.

service ldap start

Modificaciones necesarias en el muro cortafuegos.

Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir el puerto 389 por TCP (LDAP).

Las reglas para el archivo /etc/shorewall/rules de Shorewall correspondería a algo similar a lo siguiente:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	net	fw	tcp	389
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Última Edición: 17/08/2009, 14:18|Hits: 42,125 Ver la versión para imprimir