1 Andago 2007 1 Introducción a los Servicios de Directorio basados en OpenLDAP --------- Andago Ingeniería S.L. Javier Turégano Molina [email protected] m
2 Andago 2007 2 INDICE – Introducción Andago ¿Qué es un servicio de directorio?
3 Andago 2007 3 INDICE – OpenLdap Características de OpenLDAP Estructura de un árbol LDAP Instalando OpenLDAP Configuración Básica Carga de datos desde un fichero ldiff Realizando Consultas Utilidades – gq – phpldapadmin
4 Andago 2007 4 INDICE – Funciones avanzadas en OpenLDAP Cifrado Control de Accesos Indexación Backup Replicación (slurpd) Alta disponibilidad con OpenLDAP
5 Andago 2007 5 INDICE – Integración con otros servicios Pam-ldap Postfix-ldap Perl-ldap – Ejemplos prácticos de servicios con LDAP
6 Andago 2007 6 http://www.openldap.org/
7 Andago 2007 7 Introducción Un directorio es una base de datos optimizada para realizar lecturas, búsquedas y navegación. - Modelo Cliente Servidor - Estructura jerarquizada de información - Acceso desde casi cualquier aplicación EL DNS (Internet Domain Name System) es un ejemplo de servicio de directorio distribuido.
8 Andago 2007 8 Servicios que podemos integrar Controlador de dominio Samba Sistema de correo (SMTP, POP, IMAP) Servidor FreeRadius (802.1x, WPA) Páginas Amarillas, Contactos Cuentas Unix (pam_ldap) Sistemas desarrollo (Subversion, CVS) Apache (HTACCESS ) Telefonía IP (Asterix) Aplicaciones Web (phpBB, eGroupware, Joomla Listas de correo (Mailman) API sencilla para casi todos los lenguajes de programación DNS (Bind)
9 Andago 2007 9 Esquema LDAP c=es o=An dago ou=Usu arios ou=Gru pos ou=Clie ntes uid=jturegan o uid=rleiv a uid=jturegano,ou=usuarios,dc=andago,dc=co m
10 Andago 2007 10 Terminología Las entradas se identifican por su DN. Cada entrada pertenece a uno o varias clases. Las clases determinan los atributos de la entrada. Hay atributos obligatorios y otros opcionales. 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.
11 Andago 2007 11 Instalación # apt-get install slapd
12 Andago 2007 12 Configuración /etc/ldap/slapd.conf Configuración del servidor de LDAP /etc/ldap/ldap.conf Configuración global LDAP del sistema
13 Andago 2007 13 Demonios SLAPD SLURP
14 Andago 2007 14 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
15 Andago 2007 15 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
16 Andago 2007 16 Ficheros ldif Ver fichero base.ldif
17 Andago 2007 17 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
18 Andago 2007 18 GQ GQ es un navegador ldap gráfico basado en GTK+ Para instalarlo únicamente tenemos que ejecutar: # apt-get install gq
19 Andago 2007 19 GQ
20 Andago 2007 20 Phpldapadmin
21 Andago 2007 21 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 'ldap://localhost:389' -ZZldap://localhost:389
22 Andago 2007 22 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.
23 Andago 2007 23 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.
24 Andago 2007 24 Replicación con Slurp MAESTRO Exclavo 1 SLAP D SLUR P LOG REP Exclavo 2 SLAP D Cliente Escritur a
25 Andago 2007 25 Lectura en el maestro MAESTRO SLAP D SLUR P LOG REP Cliente Lectur a Dato s
26 Andago 2007 26 Lectura en los exclavos Cliente Exclavo 1 Exclavo 2 SLAP D Lectur a Escritur a Dato s
27 Andago 2007 27 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
28 Andago 2007 28 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
29 Andago 2007 29 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.
30 Andago 2007 30 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
31 Andago 2007 31 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
32 Andago 2007 32 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.
33 Andago 2007 33 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:compatldap group:compat ldap shadow:compat ldap
34 Andago 2007 34 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://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
35 Andago 2007 35 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, dc=andago, dc=com valiases_query_filter = (mail=%s) valiases_result_attribute = uid valiases_bind = no
36 Andago 2007 36 Postfix-ldap En nuestro caso hemos añadido el esquema de Courier. Por último cargamos el ldiff con los usuarios. usuarios.ldif
37 Andago 2007 37 Preguntas ¿?¿? [email protected] m