4.3. Configuración de OpenLDAP

Hay tres áreas a considerar para la configuración de OpenLDAP: el servidor (slapd.conf), el cliente (ldap.conf) y el directorio (schema). Esta sección configurará los requerimientos de un servidor SSL así como la autentificación de un cliente.

[Note]Nota

Un ejemplo completo del archivo de configuración del demonio slapd se encuentra en el Apéndice P, Archivo de configuración /etc/ldap/slapd.conf

4.3.1. Servidor

Se ha de añadir las siguientes líneas al archivo de configuración de slapd, slapd.conf.

Ejemplo 4.9. Líneas de configuración para un servidor SSL/TLS

# Certificado firmado de una entidad certificadora y
# el certificado del servidor

TLSCipherSuite HIGH:MEDIUM:+SSLv2 
TLSCACertificateFile /etc/ldap/ssl/cacert.pem 
TLSCertificateFile /etc/ldap/ssl/certs/servidorcert.pem 
TLSCertificateKeyFile /etc/ldap/ssl/private/servidorkey.pem

# Si desea que el cliente necesite autentificación,
# descomente la siguiente línea
TLSVerifyClient demand
# ... si no, descomente esta otra
# TLSVerifyClient never

4.3.2. Cliente

El archivo de configuración /etc/ldap/ldap.conf configura las opciones por defecto para los clientes LDAP.

Si se necesitan valores específicos para los usuarios, se puede crear el archivo ldaprc o .ldaprc en el home del usuario o en el directorio actual, lo que sobreescribirá la configuración global de LDAP.

Si se requiere la autentificación de los clientes, se necesita añadir el certificado y la llave privada del cliente al archivo ldaprc o .ldaprc.

4.3.2.1. Directivas de configuración del cliente LDAP

La siguiente tabla refleja las directivas referentes a la parte de configuración del cliente LDAP. Las ocurrencias de las palabras específicas para usuarios quieren decir que las directivas a las que afectan sólo son aplicadas en la configuración del archivo ldaprc o .ldaprc, no son directivas globales de LDAP.

Tabla 4.1. Directivas de configuración de clientes LDAP

DirectivaValorDescripción
BASEdnBase por defecto (Default Base - DN) a utilizar cuando se realizan operaciones ldap
BINDDNdnBase por defecto a la que cambiar cuando se realizan operaciones ldap específicas para usuarios
HOSTnombre[:puerto]Nombre de los servidores LDAP a los que conectarse (separados por espacios)
PORTnúmeroPuerto por defecto utilizado en las conexiones a un servidor LDAP. 636 = SSL
SIZELIMITnúmeroLímite de resultados devueltos en una búsqueda (0 = sin límite)
TIMELIMITnúmeroLímite en el tiempo de búsqueda (0 = sin límite)
TLSnivelSi el usuario ha de utilizar TLS por defecto ( never | hard ), el uso de esta directiva está desaconsejado; es incompatible con la petición StartTLS de LDAPv3
TLS_CACERTnombre de un archivoEspecifica el archivo que contiene todos los certificados pertenecientes a entidades certificadoras que el cliente reconoce
TLS_CACERTDIRdirectorioUsado si falla TLS_CACERT
TLS_REQCERTnivelEspecifica que tipo de comprobación se ha de realizar a un certificado de servidor ( never | allow | try | demand,hard )
TLS_CERTnombre de un archivoAutentificación de clientes: especifica el certificado del cliente específico del usuario
TLS_KEYnombre de un archivoAutentificación de clientes: especifica la llave privada, para la entrada TLS_CERT, específico del usuario

4.3.2.2. Ejemplo de un archivo ldap.conf

A continuación se muestra un ejemplo de configuración de un archivo ldap.conf:

[Note]Nota

En el Apéndice Q, Archivo de configuración /etc/ldap/ldap.conf se encuentra un ejemplo de configuración más extenso de este archivo.

Ejemplo 4.10. Ejemplo de configuración de un archivo ldap.conf

# 
# Configuración global de LDAP
# 
 
# Lea ldap.conf(5) para más detalles
# Este archivo se ha de poder leer por todo el mundo, pero no escribir. 
HOST miservidor.pt 
PORT 636 
 
TLS_CACERT /etc/ldap/ssl/certs/cacert.pem 
TLS_REQCERT demand

Esta configuración hará que los clientes se conecten a ldaps://miservidor.pt:636 sin necesidad de especificar el host ni el puerto en los comandos del cliente.

4.3.2.3. Ejemplo de un archivo ldaprc

El archivo ldaprc se utiliza para sobreescribir las opciones globales de LDAP y para establecer el el certificado y la llave privada utilizados para la autentificación del cliente.

Ejemplo 4.11. Ejemplo de configuración de un archivo ldaprc (en el home del usuario o en el directorio actual)

# 
# Configuraciones de usuario específicas para LDAP
# 
 
# Sobreescribe la directiva global (si se ha establecido) 
TLS_REQCERT demand 
 
# Autentificación del cliente
TLS_CERT /home/ldap-user/ssl/certs/client.cert.pem 
TLS_KEY /home/ldap-user/ssl/certs/keys/client.key.pem

Esta configuración mínima es todo lo que se necesita para la autentificación de un cliente.

4.3.3. Schema

En el archivo slapd.conf, los esquemas (schema) aparecen cerca de la parte superior del archivo. A continuación se muestra un ejemplo de algunos de los esquemas que se pueden establecer.

[Note]Nota

En el directorio /etc/ldap/schema se encuentran varias definiciones de esquemas para LDAP.

Ejemplo 4.12. Esquemas en un archivo de configuración slapd.conf

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/misc.schema
include         /etc/ldap/schema/openldap.schema
include         /etc/ldap/schema/inetorgperson.schema

4.3.4. Resumen de configuración

Existen varios grados de configuración SSL que se pueden establecer. La Tabla 4.2, “Resumen de configuración SSL en LDAP” resume las directivas y los valores que estas han de tomar para realizar desde una configuración básica (“Básica”) a una muy estricta (“La mejor”) en el servidor en cuanto a conexiones SSL se refiere.

Tabla 4.2. Resumen de configuración SSL en LDAP

ArchivoDirectivaBásicaOKBuenaMejorLa mejor
slapd.confTLSCACertificateFile o TLSCACertificatePathxxxxx
TLSCertificateFilexxxxx
TLSCertificateKeyFilexxxxx
TLSCipherSuite-xxxx
TLSVerifyClientneverneverallowtrydemand
ldap.confTLS_CACERT-xxxx
TLS_CACERTDIR (opcional)-xxxx
TLS_REQCERTneverneverallowtrydemand
ldaprc o .ldaprcTLS_CERT---xx
TLS_KEY---xx

LEYENDA:

-: no se usa

x: se usa y se ha de asignar un nombre de archivo o un directorio

Note: El valor por defecto de TLSVerifyClient es “never” y el valor por defecto de TLS_REQCERT es “demand