Introducción al protocolo ldap

LDAP
Información sobre la plantilla
Ldaplogo.jpg
Protocolo Ligero de Acceso a Directorios es un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red.

LDAP(Lightweight Directory Access Protocol, protocolo ligero de acceso a directorios), es un protocolo del nivel de aplicación de la arquitectura TCP/IP que permite el acceso a un servicio de directorio ordenado y distribuido para buscar información en un entorno de red.LDAP puede utilizarse de muchas maneras: para autenticación, directorios compartidos (para los clientes de correo), libreta de direcciones, etc.

Estrucutura del directorio

El protocolo accede a directorios LDAP, que siguen la edición de 1993 del modelo X.500:

  • Un directorio es un árbol de entradas de directorio.
  • Una entrada consta de un conjunto de atributos.
  • Un atributo tiene un nombre (un tipo de atributo o descripción de atributo) y uno o más valores. Los atributos son definidos en un esquema.
  • Cada entrada tiene un identificador único: su Nombre distinguido Distinguished Name, DN).

Para importar y exportar información entre servidores ldap o para describir una serie de cambios que serán aplicados al directorio, el formato utilizado se llama LDIF (LDAP Data Interchange Format). LDIF almacena la información en jerarquías orientadas a objetos que luego serán transformadas al formato interno de la base de datos.

Un archivo LDIF tiene un formato similar a:

dn: dc=jovenclub, dc=cu 
objectclass: top 
objectclass: 
organizationalUnit 
dn: ou=groups, dc=jovenclub, dc=cu 
objectclass: top 
objectclass: 
organizationalUnit 
ou: groups 
dn: ou=people, dc=jovenclub, dc=cu 
objectclass: top 
objectclass: 
organizationalUnit 
ou: people 
dn: cn = Pepe Perez, ou=people, 
dc=jovenclub, dc=cu 
cn: Pepe Perez 
sn: Perez
objectclass: top 
objectclass: person 
objectclass: posixAccount 
objectclass: shadowAccount 
uid: pepe 
userpassword: 
{crypt}p1pss2ii(0pgbs*do&@ = )eksd 
uidnumber:104 
gidnumber:100 
loginShell:/bin/bash 
homeDirectory: /home/pepe 

Creación y mantenimiento de las BD

Existen dos métodos para insertar datos en la base de datos de Ldap. El primero es fácil y adecuado para pequeñas cantidades de datos, es interactivo y se deben utilizar herramientas tales como ldapadd para insertar nuevas entradas.

El segundo se debe trabajar fuera de línea, es el adecuado para grandes BD y se utiliza el comando slapadd incluido con slapd.

  • Verificar que contiene los siguientes atributos en slapd.conf:

- suffix (top del directorio, por ejemplo, suffix “dc=jovenclub,dc=cu”) -directory /var/lib/ldap/autenticar (directorio donde se crearán los índices y que pueda escribir slapd)

Primer caso:

Una vez definido el slapd.conf, se debe ejecutar el comando:

# ldapadd -x -D "cn=admin,dc=mimundo,dc=com" -f 
ejemplo.ldif -W 

Los argumentos utilizados pueden ser:

-x: autenticación simple 
-W: solicitar clave de acceso 
-D binddn: nombre distinguido (dn) a utilizar 
-h anfitrión: servidor Ldap a acceder 
-f fichero : fichero a utilizar 
-w passwd:contraseña del administrador del servidor 

Segundo caso:

Una vez definido el slapd.conf, se debe ejecutar el comando:

# slapadd -v -l ejemplo.ldif -f /etc/ldap/slapd.conf 

Los argumentos utilizados pueden ser: • -l: archivo en formato LDFI. • -f: archivo de configuración del servidor, donde se indican cómo crear los índices. • -v: habilitar el modo verbose

Configuración del servidor

Instale los paquetes necesarios como su.

# apt-get install slapd 

Durante la instalación te piden: la configuración del dominio y de las contraseñas del fichero slapd.conf.

# slappasswd -h {CRYPT} 

Copie y respalde el criptograma resultante. Añadir a etc/ldap/slapd.conf:

password-hash {CRYPT} 
rootpw {CRYPT}CnTL4BZA65eXU #La clave que se generó anteriormente 
rootdn "cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" 

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 openldap.

# cd /var/lib/ldap 
# mkdir autenticar replog 
# chown -R openldap:openldap autenticar replog 
# chmod -R 700 autenticar replog 

Crear un archivo init.ldif donde nombre 3 unidades organizativas: users, groups y computers.

# mcedit /etc/ldap/init.ldif 
dn: dc=tele,dc=grm,dc=jovenclub,dc=cu 
objectClass: top 
objectClass: dcObject 
objectClass: organization
o: GRM 
dc: tele 
dn: 
cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu 
objectClass: simpleSecurityObject 
objectClass: organizationalRole 
cn: admin 

Descripción: administrador de LDAP

userPassword: {CRYPT}CnTL4BZA65eXU 
#introduzca el resultado de generar 
slappasswd. 
dn: ou=users,dc=tele,dc=grm,dc=jovenclub,dc=cu 
objectClass: organizationalUnit 
ou: users 
dn: ou=groups,dc=tele,dc=grm,dc=jovenclub,dc=cu 
objectClass: organizationalUnit 
ou: groups 
dn:ou=computers,dc=tele,dc=grm,dc=jovenclub,dc=cu 
objectClass: organizationalUnit 
ou: computers 

-Para inicializar la base de datos

# /etc/init.d/slapd stop 

-Crear un nuevo directorio donde se almacenará la configuración de la base de datos ldap. Este directorio /var/lib/ldap/autenticar ya lo habíamos creado anteriormente.

# mkdir /var/lib/ldap/autenticar 

-Accede al directorio donde se guardó el archivo creado anteriormente init.ldif

# cd /etc/ldap 

-Luego añade los valores de ldif a la base de datos de ldap que se encuentra en /var/lib/ldap/autenticar.(Ver man slapadd)

# slapadd -v -l init.ldif -f /etc/ldap/slapd.conf 

-Después cambia el dueño y el grupo del directorio creado anteriormente

# chown -R openldap:openldap /var/lib/ldap/autenticar/* 

Para la actualización de la configuración de openldap -Creo un directorio

# cd /etc/ldap 
#mkdir slapd.d 

Ejecuto el siguiente comando cuyo resultado se muestra a continuación.

# slaptest -f slapd.conf -F slapd.d config file testing succeeded 

Le cambio el dueño y el grupo al directorio creado

# chown -R openldap: openldap slapd.d 

Para hacer una búsqueda y confirmar la configuración -Iniciar nuestro servidor

root@debian5:~# /etc/init.d/slapd start 

-Ahora revisaremos que el servidor slapd haya abierto el socket TCP/IP, en específico veremos que nos abra el puerto TCP/389.

root@debian5:~# netstat -pltn | grep slapd 
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 4436/slapd
tcp6 0 0 :::389 :::* LISTEN 4436/slapd 

-Ahora haremos una consulta al servidor LDAP para ver si responde con lo más básico y ver que está funcionando.

root@debian5:~# ldapsearch -x -b “” -s base “(objectclass=*)” 
namingContexts 
root@debian5:~# ldapsearch -x -D 
cn=admin,dc=tele,dc=grm,dc=jovenclub,dc=cu" b 
"dc=tele,dc=grm,dc=jovenclub,dc=cu" -W 

Crear una etiqueta nueva

-Para poblar el directorio de Ldap se debe utilizar como recurso los archivos *.ldif.

-Lo primero que se debe crear en el LDAP es la Organización, según los datos que se suministran. Crear con un editor un archivo llamado AddOrg.ldif y suministrar los siguientes datos:

dn: dc=midominio,dc=cu
objectClass: dcObject
objectClass: organization 
o: GRM 
dc: midominio 

-Para añadir la información a la base de datos de LDAP utilizamos el siguiente comando:

# slapadd -v -l AddOrg.ldif -f /etc/ldap/slapd.conf 

-La organización es lo primero que se debe crear ya que a partir de la creación de esta es que se inicia la creación del árbol del directorio LDAP. -Luego se debe crear un archivo llamado AddOU.ldif (crearemos una Unidad Organizacional) e ingresaremos los siguientes datos:

dn: ou=Coordinacion,dc=midominio,dc=cu 
ou: Coordinacion 
objectClass: organizationalUnit
description: Coordinacion de MiDominio 

-Después de creado se debe ingresar la nueva etiqueta al directorio de la siguiente forma:

# slapadd -v -l AddOU.ldif -f /etc/ldap/slapd.conf

Se debe crear un archivo que puede llamarse AddPerson.ldif con los siguientes datos, para añadir a un usuario a la base de datos:

dn: uid=jperez,ou=Coordinacion,
dc=midominio,dc=com 
objectclass: top 
objectclass: person 
objectclass: organizationalPerson
objectclass: inetOrgPerson 
cn: Jose Perez
sn: Perez 
 # slapadd -v -l AddPerson.ldif -f 
/etc/ldap/slapd.conf 
givenname: Jose 
uid: jperez 
ou: Coordinacion 
description: Coordinador 
MiDominio
telephonenumber: xxxxxxxx
mail: jperez(arroba)midominio.cu
streetAddress: Ave. Camilo Cienfuegos 
userpassword: jose 

Ejemplo de mantenimiento de la BD de ldap

Modificar una Etiqueta

-Para modificar un atributo de una etiqueta creada, se debe crear un archivo de extensión *.ldif como por ejemplo ModPerson.ldif con los siguientes datos:

dn: cn=Jose Perez,dc=midominio,dc=cu
changetype: modify
add: telephonenumber 
telephonenumber: xxxxxxx 

-Luego se ejecuta el comando:

# slapadd -v -l ModPerson.ldif -f /etc/ldap/slapd.conf 

Borrar una Etiqueta

-Para borrar una etiqueta (para efectos del ejemplo borrar una persona), se debe crear un archivo *.ldif con las siguientes características:

dn: cn=Jose Perez,dc=midominio,dc=cu 
changetype: delete 

- Luego se ejecuta el siguiente comando:

# slapadd -v -l AddPerson.ldif -f /etc/ldap/slapd.conf 

Realizar búsquedas en el directorio y confirmar la configuración

Búsquedas en la BD de LDAP:

# ldapsearch -x -b "dc=midominio,dc=com" 
“objectClass=*”
 # ldapsearch -x -D "cn=admin,dc=midominio,dc=cu" -b 
"dc=midominio,dc=cu" -W 

Respaldo de datos.

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

# /etc/init.d/slapd stop 

-A continuación, se utiliza la herramienta slapcat, utilizando el fichero de configuración /etc/ldap/slapd.conf.

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

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

# /etc/init.d/slapd restart 

Restauración de datos.

-El procedimiento requiere detener el servicio.

# /etc/init.d/slapd stop 

-Debe eliminarse los datos del directorio a restaurar.

# rm -f /var/lib/ldap/autenticar/* 

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

# slapadd -v -c -l respaldo-20100629.ldif -f /etc/ldap/slapd.conf 

Regenerar índices

-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.

# /etc/init.d/slapd restart 

Administración del LDAP vía web

Para administrar el servidor LDAP vía web, se puede utilizar phpldapadmin.

-Instalar el PHP con soporte LDAP

# apt-get install php5-ldap 
# /etc/init.d/apache2 force-reload 
# apt-get install phpldapadmin 

-Acceder al LDAP vía web con esta url:

http://localhost/phpldapadmin 
login=> cn=admin,dc=example,dc=cu 
Password => El Password del usuario admin 

-Queda listo para crear el directorio.

Fuentes

  • Administración Avanzada de GNU/Linux. Josep Jorba Esteve y Remo Suppi Boldrito.
  • Implementación de Servidores con GNU/Linux. Joel Barrios Dueñas.