Este documento introduce LDAP y OpenLDAP. Explica qué es LDAP y sus implementaciones, incluyendo OpenLDAP. Detalla cómo instalar y configurar OpenLDAP, gestionar datos, realizar configuraciones avanzadas como replicación, cifrado y control de accesos. También cubre la integración de OpenLDAP con servicios como PAM, Postfix y desarrollos mediante Perl.
11. ¿Qué es LDAP? L ightweight D irectory A ccess P rotocol 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.
40. Utilidades ldap Para instalas las utilidades de ldap ejecutamos: # apt-get install ldap-utils Disponemos de dos tipos de utilidades: - Con acceso directo al backend de datos - Con acceso a través del protocolo ldap
41. Ficheros ldiff El LDAP Data Interchange Format (LDIF) es un fichero con formato texto ASCII para las entradas LDAP. Los ficheros que exportan e importan datos de un servidor LDAP deben estar en formato LDIF.
42. Utilidades ldap MANIPULACIÓN DIRECTA DE DATOS slapadd Nos permite introducir datos en el ldap: # /etc/init.d/slapd stop # slapadd -l file.ldif # /etc/init.d/slapd stop slapcat Nos volcará el contenido del ldap por la salida estandar: # slapcat
43. Utilidades ldap UTILIZANDO EL PROTOCOLO LDAP ldapadd Nos permite introducir datos dentro del directorio desde un fichero ldif: # ldapadd -x -W -f file.ldif -D “cn=admin,dc=andago,dc=com” ldapsearch Nos permite realizar búsquedas en el directorio: # ldapsearch -x -W -b “dc=com” -D “cn=admin,dc=andago,dc=com” '(uid=pepito)' cn uid
44. Clientes gráficos para LDAP Disponemos de múltiples herramientas gráficas para gestionar Open LDAP. Veremos dos de ellas: GQ PHPLDAPADMIN
45. GQ GQ es un navegador ldap gráfico basado en GTK+ Para instalarlo únicamente tenemos que ejecutar: # apt-get install gq
47. Phpldapadmin PHPLdapAdmin es un cliente ldap basado en web. Puedes usarlo remotamente con un interfaz sencillo. Para instalarlo únicamente tenemos que ejecutar: # apt-get install phpldapadmin
50. Cifrado de conexiones Openldap soporta el cifrado mediante TLS para las comunicaciones. Para ello necesitamos un certificado que podemos generar fácilmente con openssl y añadir a la configuración: [/etc/ldap/slapd.conf]... TLSCertificateFile /etc/ssl/cert.pem TLSCertificateKeyFile /etc/ssl/key.pem TLSCertificate /etc/ssl/cacert.pem Para realizar una consulta desde línea de comandos utilizando el puerto cifrado utilizaremos: # ldapsearch -x -b “dc=andago,dc=com” -H 'ldaps://localhost:636'
51. Control de Accesos OpenLdap dispone de mecanismos de seguridad para el control de acceso a la información dependientes del usuario utilizado. Se establecen a través de ACLs o ACIs . Ejemplo: Un usuario puede modificar algunos de sus datos. access to attrs=entry,telephoneNumber,mobile,facsimileTelephoneNumber by self write by * break También podemos ver las ACLs que se establecen por defecto en OpenLdap.
52. Replicación OpenLDAP nos va a permitir realizar replicas de nuestro directorio en otros servidores ldap. Para ello utilizamos el demonio slurp en el servidor maestro. Hay que cuidar que sólo se realicen escrituras sobre el servidor maestro, ya que sino perderíamos la coherencia entre los servidores ldap. Existen otros métodos de replicación que permiten configuraciones maestro-maestro pero no son confiables totalmente en estos momentos.
54. Lectura en el maestro Lectura Datos MAESTRO SLAPD SLURP LOG REP Cliente
55. Lectura en los exclavos Lectura Escritura Datos Cliente Exclavo 1 Exclavo 2 SLAPD SLAPD
56. Configurar la replicación En el servidor maestro indicamos los servidores de réplica en el fichero de configuración. Por ejemplo: [/etc/ldap/slapd.conf]... replica uri=”ldaps://ldapslave1.andago.com:636” starttls=”yes” binddn=”cn=admin,dc=andago,dc=com” bindmethod=simple credentials=password replica uri=”ldaps://ldapslave2.andago.com:636” starttls=”yes” binddn=”cn=admin,dc=andago,dc=com” bindmethod=simple credentials=password
57. Añadir un esquema [/etc/ldap/slapd.conf]... # Esquemas por defecto include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/inetorgperson.schema #Hemos añadido el esquema de rediris include /etc/ldap/schema/iris.schema
58. Corrupción del backend bdb En algunos casos puede producirse una corrupción de datos del backend bdb. PROCEDMIENTO DE RECUPERACIÓN # /etc/init.d/slapd stop # cd /var/lib/ldap # db_recover # /etc/init.d/slapd start Debemos tener instalado el paquete de las utilidades de bdb.
59. Modo Debug Distintos niveles de debug. Podemos encontrarlos en el man de slapd.conf. Podemos invocar en consola el demonio de slapd en modo debug de la siguiente manera: # /usr/lib/slapd -h "ldap:/// ldaps:///" -d 256
60. Indexación Es recomendable indexar los atributos por los que vayamos a realizar las búsquedas. [/etc/ldap/slapd.conf]... index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres Si hemos añadido un indice debemos reconstruirlos, para ello con slapd parado ejecutamos: # slapindex -v
61. Alta disponibilidad en Openldap Alta disponibilidad mediante heartbeat. El nodo maestro de heartbeat tiene levantado el servicio de ldap cómo maestro y la IP de servicio. Los nodos exclavos tienen levantado el servicio de slapd pero sólo podremos realizar consultas sobre ellos. En caso de caída cualquiera de los nodos exclavos puede recuperar el servicio en modo maestro y apropiarse de la IP .
63. Pam-ldap Instalamos los paquetes necesarios: # apt-get install libnss-ldap libpam-ldap Editamos el fichero de configuración nsswitch.conf para que utilice ldap: [/etc/nsswitch.conf] passwd: compat ldap group: compat ldap shadow: compat ldap
64. Pam-ldap Editamos el fichero de configuración pam_ldap.conf: [/etc/pam_ldap.conf] host localhost base dc=andago,dc=net uri ldap://localhost/ ldap_version 3 rootbinddn cn=admin,dc=andago,dc=net pam_passwdord crypt Y añadimos la clave en el fichero ldap.secret [/etc/ldap.secret] admin_password
65. Postfix ldap Instalamos el paquete de postfix-ldap: # apt-get install postfix-ldap Configuramos postfix para que use ldap, por ejemplo: [/etc/postfix/main.cf]... virtual_maps = ldap:valiases valiases_server_host = localhost valiases_search_base = ou=Usuarios, o=Andago, c=es valiases_query_filter = (mail=%s) valiases_result_attribute = uid
66. Perl-ldap Integrar Ldap dentro de nuestros desarrollos es muy sencillo. Ldap dispone de APIs para la mayoría de lenguajes de programación. Ejemplo: libnet-ldap-perl