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].
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:
# 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:
$ sudo ldapd -n
Para iniciar el servidor LDAP en modo de depuración para ver posibles errores:
$ sudo 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:
sudo 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
Instale el paquete con:
# 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:
sudo 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
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=*)'
Instale el paquete y siga las instrucciones que de (por ejemplo
activar php-ldap
):
# 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 sudo mkdir -p dev cd dev /dev/MAKEDEV arandom
Las siguientes páginas man: ldapd(8). ldapctl(8). ldapd.conf(5).
http://www.cyberciti.biz/faq/test-ssl-certificates-diagnosis-ssl-certificate/.
http://www.tumfatig.net/20120817/monitoring-openbsds-ldap-daemon/.
http://openbsd.7691.n7.nabble.com/dev-random-as-chrooted-named-s-entropy-source-current-td64344.html.
[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