3.1. /etc/default/slapd

En este archivo se configuran los aspectos relativos a la ejecución del demonio slapd: parámetros pasados en el arranque, usuario y grupo de ejecución del demonio, etc. En las siguientes secciones se verán los cambios realizados.

[Note]Nota

Un ejemplo completo de este archivo de configuración se encuentra en el Apéndice R, Archivo de configuración /etc/default/slapd

3.1.1. Cambio del usuario y grupo de ejecución de slapd

Por defecto, el demonio slapd se ejecuta como usuario root (vea el Ejemplo 2.3, “Comprobación de que slapd está en la lista de procesos actuales” para más detalles), comportamiento que no es recomendable por las implicaciones de seguridad que acarrea. En esta sección se describirán los pasos necesarios para ejecutar el demonio slapd con un usuario y un grupo específicos.

3.1.1.1. Creación del usuario y grupo para slapd

Antes de poder ejecutar el demonio slapd con un usuario y grupo específico, se ha de crear el usuario y grupo en el sistema, en caso de no existir.

El tipo de usuario y grupo que se crearán son los llamados “de sistema”, y se denominarán “slapd”. Para crearlos ejecute:

Ejemplo 3.1. Creación de un grupo y usuario de sistema para slapd

# addgroup --system slapd
Añadiendo el grupo slapd (133)...
Hecho.
# adduser --home /var/lib/ldap --shell /bin/false --no-create-home --ingroup slapd --system
adduser: Aviso: El directorio home que Usted especificó ya existe.
Añadiendo usuario del sistema slapd...
Añadiendo nuevo usuario slapd (126) con grupo slapd.
No se crea el directorio home.

Como se puede apreciar en el Ejemplo 3.1, “Creación de un grupo y usuario de sistema para slapd”, el home del usuario slapd es el directorio /var/lib/ldap (donde se almacena la base de datos de OpenLDAP, entre otras cosas), no posee shell asociada y está dentro del grupo slapd que se acaba de crear.

3.1.1.2. Cambio de propietario/grupo en los archivos de slapd

[Warning]Aviso

Antes de continuar con este paso, ha de parar el demonio slapd para evitar comportamientos no esperados:

Ejemplo 3.2. Modo de parar el demonio slapd

# /etc/init.d/slapd stop
Stopping OpenLDAP: slapd.

Antes de ejecutar el demonio slapd con el nuevo usuario y grupo creados, es necesario cambiar el propietario y el grupo de algunos archivos y directorios relacionados con slapd, para que este funcione con normalidad. Los cambios han de realizarse en los siguientes directorios, así como en los archivos que albergan:

  • /etc/ldap

  • /var/lib/slapd

  • /var/lib/ldap

  • /var/run/slapd

Para ello se ha de ejecutar:

Ejemplo 3.3. Cambio del propietario/grupo en archivos relacionados con slapd

# /bin/chown -R slapd.slapd /etc/ldap /var/lib/slapd /var/lib/ldap /var/run/slapd slapd

En estos momentos slapd ya casi está preparado para ejecutarse con el nuevo usuario.

3.1.1.3. Especificar el usuario/grupo con el que ejecutar slapd

El último paso consiste en indicar al demonio slapd con qué usuario y grupo se ha de ejecutar a partir de ahora. Esta característica se configura asignando los valores correspondientes a las variables SLAPD_USER y SLAPD_GROUP del archivo /etc/default/slapd.

Continuando con la configuración de ejemplo seguida en las secciones anteriores los valores que han de tener estas variables son:

Ejemplo 3.4. Asignación del usuario y grupo con que se ejecutará slapd

SLAPD_USER="slapd"
SLAPD_GROUP="slapd"

3.1.1.4. Arrancando el demonio slapd

Ahora sólo queda arrancar de nuevo el demonio slapd para que se ejecute con el nuevo usuario:

Ejemplo 3.5. Arrancando el demonio slapd

# /etc/init.d/slapd start
Starting OpenLDAP: slapd.
# /bin/ps auxf
USER       PID %CPU %MEM   VSZ  RSS TTY   STAT START TIME COMMAND
slapd 1   12728  0.0  0.6 12216 3556 ?     S    15:02 0:00 /usr/sbin/slapd -g slapd -u slapd 2
slapd 3   12729  0.0  0.6 12216 3556 ?     S    15:02 0:00  \_ /usr/sbin/slapd -g slapd -u slapd 4
slapd 5   12730  0.0  0.6 12216 3556 ?     S    15:02 0:00      \_ /usr/sbin/slapd -g slapd -u slapd 6
1 3 5

Usuario con el que se está ejecutando slapd.

2 4 6

Parámetros de ejecución de slapd, se puede apreciar que se ha indicado el usuario (-u slapd) y grupo (-g slapd) de ejecución del demonio.

3.1.2. Especificación de las interfaces donde escuchar

La configuración por defecto del demonio slapd hace que escuche en todas las interfaces de red presentes en el sistema. Esta característica no es deseable, por este motivo se verá la forma de modificarla.

La especificación de las interfaces de red, así como el protocolo utilizado en cada una de ellas (ldap, ldaps, ldai), se realiza en el archivo /etc/default/slapd. Dentro de este, la variable SLAPD_SERVICES poseerá las interfaces donde se desea que escuche slapd. El Ejemplo 3.6, “Estableciendo las interfaces donde ha de escuchar slapd” muestra como hacerlo.

Ejemplo 3.6. Estableciendo las interfaces donde ha de escuchar slapd

SLAPD_SERVICES="ldap://gsr.pt:389/ ldaps://gsr.pt:636/"
[Note]Nota

El protocolo “ldap” especifica las interfaces y los puertos donde escuchará slapd con la característica de que las conexiones que se establezcan a la misma no harán uso de encriptación.

El protocolo “ldaps” especifica las interfaces y los puertos donde escuchará slapd con la característica de que las conexiones que se establezcan a la misma harán uso de encriptación.

Adicionalmente se puede establecer un nuevo protocolo de comunicaciones, “ldapi”, destinado a las peticiones realizadas desde sockets Unix.

Una vez se han asignado las interfaces necesarias, se ha de reiniciar el demonio slapd:

Ejemplo 3.7. Reinicio del demonio slapd

# /bin/netstat -puta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address    State   PID/Program name
tcp        0      0 *:ldap 1           *:*                LISTEN 12728/slapd
# /etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.
# /bin/netstat -puta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address    Foreign Address   State   PID/Program name
tcp        0      0 gsr.pt:ldap 2     *:*               LISTEN 12817/slapd
tcp        0      0 gsr.pt:ldaps 3     *:*               LISTEN 12817/slapd
# /bin/ps auxfw

USER  PID   %CPU %MEM  VSZ  RSS TTY STAT START TIME COMMAND
slapd 12817 0.0  0.6 12216 3552 ?   S    15:19 0:00 /usr/sbin/slapd -h ldap://gsr.pt:389/ 4
                                                    |                  ldaps://gsr.pt:636/
                                                    |               -g slapd -u slapd
slapd 12818 0.0  0.6 12216 3552 ?   S    15:19 0:00  \_ /usr/sbin/slapd -h ldap://gsr.pt:389/ 5
                                                       |                   ldaps://gsr.pt:636/
                                                       |                -g slapd -u slapd
slapd 12819 0.0  0.6 12216 3552 ?   S    15:19 0:00     \_ /usr/sbin/slapd -h ldap://gsr.pt:389/ 6
                                                                              ldaps://gsr.pt:636/
                                                                           -g slapd -u slapd

1

Inicialmente el demonio slapd escucha en el puerto 389 en todas la interfaces.

2 3

Una vez reiniciado con la nueva configuración, el demonio slapd escucha en las interfaces requeridas.

4 5 6

La lista de parámetros pasados al demonio slapd ha aumentado, ahora se especifica el host donde ha de escuchar y con qué protocolo.

[Note]Nota

La salida del comando /bin/ps se ha retocado para mejorar la legibilidad.