4. Servidor ldapd

LDAP (Lightweight Directory Access Protocol) es un protocolo para mantener e intercambiar información almacenada en directorios (i.e bases de datos especiales), su versión 3 se define en los RFC 2251, 2256, 2829, 2830 y 3377.

Un uso típico de LDAP es mantener en un servidor información de los usuarios de una organización para permitir su autenticación en otros servicios (e.g nombres, apellidos, dirección, teléfono, login, clave).

OpenBSD incluye (desde OpenBSD 4.8) un servidor para LDAP versión 3, ldapd. No incluye cliente para LDAP pero desde la línea de comandos puede emplearse el paquete openldap-client o como interfaz web phpldapadmin[30].

4.1. Instalación de ldapd

No necesita instalar paquetes para la operación como servidor.

La configuración que se presenta emplea LDAPS para conexiones en la red local, empleando un certificados cuyas llaves pública y privada debe copiarse a /etc/ldap/certs y ejecutar:

	cd /etc/ldap/certs
	chown _ldapd:_ldapd *
	chmod 0640 /etc/ldap/certs/*key
	chmod 0644 /etc/ldap/certs/*crt 

Para configurar el servidor, verifique que exista el usuario _ldapd y el grupo _ldapd y edite /etc/ldapd.conf:

	schema "/etc/ldap/core.schema"                                                  
	schema "/etc/ldap/inetorgperson.schema"                                         
	schema "/etc/ldap/nis.schema"                                                   
	 
	lan_if = "re1"
	
	listen on $lan_if ldaps certificate www.pasosdeJesus.org
	listen on lo0 secure
	listen on "/var/run/ldapi"
	
	namespace "dc=www,dc=pasosdeJesus,dc=org" {
	        rootdn          "cn=root,dc=www,dc=pasosdeJesus,dc=org"
	        rootpw          "secret"
	        index           sn
	        index           givenName
	        index           cn
	        index           mail
	        index           objectClass
	        index           sn
	        fsync           on
	}                                                                               

Recuerde que la clave del directorio debe ser mejor que la presentada (i.e remplace secret por una buena clave). En lugar de poner la clave plana también es posible poner la cadena generada con:

	doas slappasswd -v -u -h {CRYPT} -s secret

que en el caso de la clave 'secret' es '{CRYPT}uPUCy906TIu/k'

La configuración por defecto emplea /var/db/ldap como directorio para mantener las bases de datos y mantiene una por cada espacio de nombres (namespace). Las conexiones no cifradas por defecto operan en el puerto 389 y deben autenticarse con SASL (a menos que tengan la opción secure para permitir autenticación plana) y las que empleen certificado iran cifradas en el puerto 636.

Cada vez que modifique el archivo de configuración del servidor, puede verificarlo con:

	doas ldapd -n

Para iniciar el servidor LDAP en modo de depuración para ver posibles errores:

	doas ldadpd -dv

Tras verificar el funcionamiento, para que en cada arranque se inicie el servidor puede agregar a /etc/rc.conf.local:

	ldapd_flags=""
	pkg_scripts = "ldapd"

E iniciar el servicio con /etc/rc.d/ldapd start y detenerlo con /etc/rc.d/ldadp stop

Es muy recomendable que agregue el esquema LDAP de Courier, de esta forma tomada de {3}:

  • Descarguelo y renombrelo:

    	doas ftp -o /etc/ldap/courier.schema \
    	http://courier.cvs.sourceforge.net/viewvc/courier/libs/authlib/authldap.schema
    

  • Edite /etc/ldap/courier.schema y quite comentario a las líneas:

    	attributetype ( 1.3.6.1.4.1.10018.1.1.14 NAME 'mailhost'                        
    	        DESC 'Host to which incoming POP/IMAP connections should be proxied'
    	        EQUALITY caseIgnoreIA5Match                                        
    	        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )  
    

  • Reinicie ldapd

4.2. Pruebas Iniciales con openldap-client

Instale el paquete con:

	doas pkg_add openldap-client

Verifique localmente que el servidor no cifrado corre con:

	ldapsearch -x -b 'dc=www,dc=pasosdeJesus,dc=org' '(objectclass=*)'

Respecto al servidor cifrado puede analizar la conexión SSL con:

	openssl s_client -connect 192.168.2.1:465

Puede verificar sus certificados contra la entidad que los expide siguiendo instrucciones de {4}.

Puede deshabilitar la verificación de certificados de ldapsearch poniendo en /etc/openldap/ldap.conf:

	TLS_REQCERT never

Para hacer pruebas desde otro computador, tenga en cuenta que en OpenBSD ldapsearch utiliza openssl mientras que por ejemplo en Ubuntu emplea GNUTLS, por esto eventualmente puede requerir descargar certificado de autoridad certificadora (digamos gd.pem) y ejecutar:

	doas cat /etc/ssl/certs/gd.pem >> /etc/ssl/certs/ca-certificates.crt 

Además de modificar /etc/ldap/ldap.conf para agregar

	TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

4.3. Adición de datos iniciales

Una vez esté corriendo ldapd deberá iniciar un directorio para su organización y los usuarios que se autenticarán. Puede agregar estos datos con el programa ldapadd que hace parte de openldap-client. Programa que recibe datos en formato ldif, por ejemplo leidos de un archivo. Un primer archivo con datos de la organización puede ser org.ldif y contener:

	dn:     dc=www,dc=pasosdeJesus,dc=org
	objectClass:    dcObject
	objectClass:    organization
	o:      Pasos de Jesús
	dc:     correo

	dn: cn=admin,dc=correo,dc=pasosdeJesus,dc=org
	objectClass: organizationalRole
	cn: admin

	dn:ou=gente, dc=correo,dc=pasosdeJesus,dc=org
	objectClass:    top
	objectClass:    organizationalUnit
	ou:     gente

	dn:ou=grupos,dc=correo,dc=pasosdeJesus,dc=org
	objectClass:    top
	objectClass:    organizationalUnit
	ou:     grupos

	dn:ou=sendmail,dc=www,dc=pasosdeJesus,dc=org
	ou: sendmail
	objectClass: top
	objectClass: organizationalUnit
	userPassword: sendmail

Nota: Al agregar información verifique no dejar espacios en blanco al final de cada línea. Se pueden agregar org.ldif con:

	ldapadd -x -D "cn=admin,dc=www,dc=pasosdeJesus,dc=org" -W \
	-h www.pasosdeJesus.org -f org.ldif

Además de poder revisar los mensajes que slapd genere al ejecutarse en modo de depuración, podrá consultar los datos ingresados al directorio con:

	ldapsearch -x -b 'dc=www,dc=pasosdeJesus,dc=org' '(objectclass=*)'

4.4. Instalación y configuración de phpldapadmin

Instale el paquete y siga las instrucciones que de (por ejemplo activar php-ldap):

	doas pkg_add phpldapadmin

También debe asegurar que pueden emplearse los dispositivos de generación de números aleatorios en la jaula chroot de Apache (esto lo hace por defecto el instalador de adJ 5.5). Para esto verifique que en /etc/fstab al montar la partición /var este permitiendo dispositivos (que no este la opción nodev) y ejecute:

	cd /var/www
	doas mkdir -p dev
	cd dev
	/dev/MAKEDEV arandom

4.5. Referencias y lecturas recomendadas



[30] Si emplea un adJ 5.2 y planea conectarse desde clientes digamos en Ubuntu reciente requerirá el parche descrito en http://openbsd.7691.n7.nabble.com/ldapd-and-quot-The-Diffie-Hellman-prime-sent-by-the-server-is-not-acceptable-quot-td59635.html