¿No sabes por dónde empezar? Ayúdanos normalizando artículos.
¿Tienes experiencia? Crea alguno de estos artículos de actualidad.
Introducción al protocolo ldap
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.
Sumario
[ocultar]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.