25.3. Configuración del servidor con slapd.conf

El sistema instalado contiene un archivo de configuración completo para el servidor LDAP en /etc/openldap/slapd.conf. Las entradas se describen brevemente y se explican los ajustes necesarios. Las entradas con una almohadilla (#) delante están inactivas. Este carácter de comentario debe eliminarse para activarlas.

25.3.1. Directivas globales en slapd.conf

Ejemplo 25.2. slapd.conf: directiva de inclusión para esquemas

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/rfc2307bis.schema
include         /etc/openldap/schema/yast.schema

La primera directiva de slapd.conf, que se muestra en el Ejemplo 25.2, “slapd.conf: directiva de inclusión para esquemas”, especifica el esquema con el que se organiza el directorio LDAP. La entrada core.schema es obligatoria. Al final de esta directiva se añaden esquemas necesarios adicionales. Puede obtener información en la documentación de OpenLDAP incluida.

Ejemplo 25.3. slapd.conf: pidfile y argsfile

pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

Estos dos archivos contienen el PID (ID de proceso) y algunos de los argumentos con los que ha comenzado el proceso slapd. No es necesario realizar ninguna modificación aquí.

Ejemplo 25.4. slapd.conf: Control de acceso

# Sample Access Control
#       Allow read access of root DSE
# Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
# access to dn="" by * read
  access to * by self write
              by users read
              by anonymous auth
#
# if no access controls are present, the default is:
#       Allow read by all
#
# rootdn can always write!

El Ejemplo 25.4, “slapd.conf: Control de acceso” es un extracto de slapd.conf que regula los permisos de acceso para el directorio LDAP en el servidor. Los ajustes que se realicen aquí en la sección global de slapd.conf son válidos mientras que no se declaren reglas de acceso personalizadas en la sección específica de la base de datos. Dichas reglas sobrescribirían las declaraciones globales. Tal y como se ha descrito, todos los usuarios cuentan con acceso de lectura al directorio pero sólo el administrador (rootdn) puede escribir en este directorio. La regulación del control de acceso en LDAP es un proceso extremadamente complejo. Las siguientes sugerencias pueden resultar útiles:

  • Cada regla de acceso cuenta con la siguiente estructura:

    access to <qué> by <quién> <acceso>
  • qué es un espacio reservado para el objeto o atributo al que se otorga acceso. Las ramas individuales del directorio se pueden proteger explícitamente con reglas independientes. También es posible procesar zonas del árbol de directorios con una regla mediante el uso de expresiones regulares. slapd evalúa todas las reglas en el orden en el que se muestran en el archivo de configuración. Las reglas más generales se deberían mostrar después de las más concretas (la primera regla que slapd considera válida se evalúa y las entradas siguientes se omiten.

  • quién determina a quién se debería otorgar acceso a las áreas determinadas con qué. Se pueden usar expresiones regulares. slapd aborta la evaluación de quién después de la primera coincidencia, de modo que las reglas más específicas deben encontrarse antes de las más generales. Las entradas que aparecen en la Tabla 25.2, “Grupos de usuarios y sus otorgamientos de acceso” son posibles.

    Tabla 25.2. Grupos de usuarios y sus otorgamientos de acceso

    Etiqueta

    Ámbito

    *

    Todos los usuarios sin excepción

    anonymous

    Usuarios no autenticados (“anónimos”)

    users

    Usuarios autenticados

    self

    Usuarios conectados con el objeto de destino

    dn.regex=<regex>

    Todos los usuarios que coinciden con la expresión regular

  • acceso especifica el tipo de acceso. Utilice las opciones que se muestran en la Tabla 25.3, “Tipos de acceso”.

    Tabla 25.3. Tipos de acceso

    Etiqueta

    Ámbito de acceso

    none

    Sin acceso

    auth

    Para contactar con el servidor

    compare

    A objetos para acceso de comparación

    búsqueda

    Para el empleo de filtros de búsqueda

    read

    Acceso de lectura

    write

    Acceso de escritura

    slapd compara el derecho de acceso pedido por el cliente con los otorgados en slapd.conf. Al cliente se le otorga acceso si las reglas le permiten un derecho igual o superior al necesario. Si el cliente pide derechos superiores que los declarados en las reglas, se le denegará el acceso.

En el Ejemplo 25.5, “slapd.conf: ejemplo de control de acceso” se muestra un ejemplo de un control de acceso simple que puede desarrollarse de manera arbitraria mediante expresiones regulares.

Ejemplo 25.5. slapd.conf: ejemplo de control de acceso

access to  dn.regex="ou=([^,]+),dc=suse,dc=de" 
by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write  
by user read 
by * none

Esta regla indica que sólo el administrador respectivo tiene acceso de escritura a una entrada ou individual. Todos los demás usuarios autenticados tienen acceso de lectura y los demás no tienen acceso.

[Tip]Establecimiento de reglas de acceso

Si no hay una regla access to o una directiva by coincidente, se denegará el acceso. Sólo se otorgarán los derechos de acceso declarados explícitamente. Si no se declara ninguna regla en absoluto, el principio por defecto es el acceso de escritura para el administrador y de lectura para el resto.

Puede encontrar información detallada y una configuración de ejemplo correspondiente a los derechos de acceso de LDAP en la documentación en línea del paquete openldap2 instalado.

Aparte de la posibilidad de administrar los permisos de acceso con el archivo de configuración del servidor central (slapd.conf), hay información de control de acceso (ACI). ACI permite el almacenamiento de la información de acceso para objetos individuales dentro del árbol LDAP. Este tipo de control de acceso aún no es común y los desarrolladores lo consideran todavía experimental. Consulte http://www.openldap.org/faq/data/cache/758.html para obtener más información.

25.3.2. Directivas específicas de base de datos en slapd.conf

Ejemplo 25.6. slapd.conf: directivas específicas de base de datos

database bdb 
checkpoint      1024    5
cachesize       10000
suffix "dc=suse,dc=de" 
rootdn "cn=admin,dc=suse,dc=de" 
# Cleartext passwords, especially for the rootdn, should 
# be avoided.  See slappasswd(8) and slapd.conf(5) for details. 
# Use of strong authentication encouraged.
rootpw secret 
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd/tools. Mode 700 recommended. 
directory /var/lib/ldap 
# Indices to maintain 
index   objectClass     eq

El tipo de base de datos, una de Berkeley en este caso, está determinado en la primera línea de la sección (consulte el Ejemplo 25.6, “slapd.conf: directivas específicas de base de datos”). checkpoint determina la cantidad de datos (en kb) que se mantiene en el registro de transacciones antes de que se escriban en la base de datos real y el tiempo (en minutos) entre dos acciones de escritura. cachesize define el número de objetos mantenidos en el caché de la base de datos. suffix determina la parte del árbol de LDAP de la que el servidor es responsable. El siguiente rootdn determina quién posee los derechos de administrador de este servidor. El usuario que aparezca aquí no necesita tener una entrada LDAP ni existir como usuario normal. La contraseña del administrador está definida con rootpw. En lugar de usar aquí secret, es posible introducir el algoritmo hash de la contraseña del administrador creado por slappasswd. La directiva directory indica el directorio (en el sistema de archivos) en el que los directorios de la base de datos se almacenan en el servidor. La última directiva, index objectClass eq, da como resultado el mantenimiento de un índice en todas las clases de objetos. Los atributos que los usuarios buscan con más frecuencia pueden añadirse aquí según su uso. Las reglas personalizadas de acceso definidas para la base de datos se usan en lugar de las reglas globales de acceso.

25.3.3. Inicio y detención de los servidores

Una vez que el servidor LDAP se haya configurado completamente y realizado todas las entradas según el patrón descrito en la Sección 25.4, “Gestión de datos en el directorio LDAP”, inicie el servidor LDAP como usuario Root introduciendo rcldap start. Para detener el servidor manualmente, introduzca el comando rcldap stop. Pida el estado del servidor LDAP que se esté ejecutando con rcldap status.

El editor de nivel de ejecución de YaST, descrito en la Sección 8.2.3, “Configuración de los servicios de sistema (nivel de ejecución) mediante YaST”, puede usarse para que el servidor se inicie y se detenga automáticamente cuando el sistema arranque y se detenga. También es posible crear los enlaces correspondientes a los guiones de inicio y detención con el comando insserv desde el indicador de comandos tal y como se describe en la Sección 8.2.2, “Guiones init”.