Escenario - Poblar un directorio LDAP empleando certificado x509

Introducción

En nuestro escenario vamos a realizar la configuración del servidor LDAP para que se comunique con el servidor de autenticación mediante certificados x509.

Creamos el certificado x509

Como parte principal y esencial de esta práctica, vamos a crear un certificado x509 para el servidor LDAP. Para ello, vamos a utilizar el comando openssl que nos permite generar certificados x509. Para ello ejecutaremos el siguiente comando:

openssl genrsa 4096 > /etc/ssl/private/alfa.key

Una vez ejecutado, debemos introducir los datos del certificado. Para ello, introduciremos los siguientes datos:

Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Sevilla
Locality Name (eg, city) []:Dos Hermanas
Organization Name (eg, company) [Internet Widgits Pty Ltd]:IES Gonzalo Nazareno
Organizational Unit Name (eg, section) []:Informática
Common Name (e.g. server FQDN or YOUR name) []:alfa.mariajesus.gonzalonazareno.org

1

Ya generado el fichero, lo pasamos a nuestra máquina host por medio de scp:

scp alfa.csr maria@172.22.2.125:/home/maria

2

Lo mandamos a la autoridad certificadora para que nos lo firme y, de ser que lo hayamos generado correctamente, nos devolverá un certificado firmado. Lo descargamos y lo copiamos en la máquina Alfa:

3

scp alfa.crt alfa:172.22.201.46:/home/maria

4

Movemos el certificado generado por la CA a la carpeta /etc/ssl/certs, movemos también el certificado del centro que podemos encontrar aquí y le damos los permisos adecuados para que el servidor LDAP pueda leerlo:

mv alfa.crt /etc/ssl/certs
mv gonzalonazareno.crt /etc/ssl/certs
chown root:root /etc/ssl/certs/gonzalonazareno.crt
chown root:root /etc/ssl/certs/alfa.crt
chmod 644 /etc/ssl/certs/alfa.crt

Como podemos ver, el certificado ya está firmado y listo para ser utilizado.

Configuración del servidor LDAP

Una vez que tenemos el certificado x509, vamos a configurar el servidor LDAP para que se comunique con el servidor de autenticación mediante certificados x509. Ahora lo que necesitamos configurar es el uso de ACLs para que el usuario que desee acceder al directorio LDAP, tenga que estar autenticado en el servidor de autenticación.

Primero deberemos instalar el paquete acl para poder utilizar las ACLs:

apt-get install acl

Una vez instalado, ejecutamos los siguientes comandos para dar permisos de lectura al usuario openldap sobre el directorio /etc/ssl/private y sobre el fichero alfa.key:

setfacl -m u:openldap:r-x /etc/ssl/private/
setfacl -m u:openldap:r-x /etc/ssl/private/alfa.key
getfacl /etc/ssl/private
getfacl /etc/ssl/private/alfa.key

5

Ahora vamos a modificar la configuracíon de LDAP, en el fichero ldif para incluir las rutas de los certificados y la configuración de las ACLs.

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/gonzalonazareno.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/alfa.key
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/alfa.crt

Para que este cambio sea efectivo, ejecutamos el siguiente comando:

ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldap.conf

6

El siguiente paso será modificar el fichero slapd para que el servidor pueda emplear, a través del puerto 636, el protocolo LDAPS y reiniciamos el servidor:

nano /etc/default/slapd

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

7

service slapd restart

8

Como podemos ver en la imagen anterior, podemos comprobar que el servidor LDAP está escuchando en el puerto 636.

Tras haber realizado estas configuraciones, vamos a copiar el certificado de la CA, es decir, del centro, en el directorio /usr/local/share/ca-certificates y ejecutamos el siguiente comando para que el servidor LDAP pueda leerlo:

cp /etc/ssl/certs/gonzalonazareno.crt /usr/local/share/ca-certificates
update-ca-certificates

9

Una vez terminado este proceso, envío a la máquina delta el certificado de la CA para que pueda leerlo:

scp -o ProxyJump=maria@172.22.201.46 gonzalonazareno.crt maria@192.168.0.3:/home/maria

Una vez copiado el certificado en la máquina delta, lo copiamos en el directorio /usr/local/share/ca-certificates y ejecutamos el comando update-ca-certificates para que el servidor LDAP pueda leerlo:

mv gonzalonazareno.crt /usr/local/share/ca-certificates
chown root:root /usr/local/share/ca-certificates/gonzalonazareno.crt
update-ca-certificates

10

Consultas desde alfa

Una vez que tenemos todo configurado, vamos a realizar una consulta desde la máquina alfa para comprobar que todo funciona correctamente.

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636

11

Y desde la máquina delta:

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636

12

Modificación de protocolo

Para que el servidor LDAP pueda utilizar el protocolo LDAPS, debemos modificar el fichero slapd y añadir la siguiente línea:

SLAPD_SERVICES="ldaps:///"

13

Y reiniciamos el servidor:

service slapd restart

14

Como podemos ver en la imagen anterior, cuando mostramos en la terminal el estado de servicio, nos muestra el protocolo que emplea el servidor LDAP.

Y para que delta solamente use el protocolo LDAPS, debemos modificar el fichero ldap.conf y añadir la siguiente línea:

nano /etc/ldap/ldap.conf
BASE= dc=mariajesus,dc=gonzalonazareno,dc=org
URL= ldaps://alfa.mariajesus.gonzalonazareno.org:636

15

Consultas desde delta

Una vez que tenemos todo configurado, vamos a realizar una consulta desde la máquina delta para comprobar que todo funciona correctamente.

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636

ldassearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org"

16

17

Configuramos ldaps en alfa

nano /etc/ldap/ldap.conf
BASE= dc=mariajesus,dc=gonzalonazareno,dc=org
URL= ldaps://alfa.mariajesus.gonzalonazareno.org:636

18

Nos conectamos a la máquina bravo y realizamos el mismo paso para traspasar los certificados de la CA.

scp -o ProxyJump=maria@172.22.201.46 gonzalonazareno.crt maria@172.16.0.200:/home/maria

mv gonzalonazareno.crt /usr/local/share/ca-certificates
chown root:root /usr/local/share/ca-certificates/gonzalonazareno.crt
update-ca-trust

19

Consultas desde bravo

Modificamos el fichero ldap.conf y añadimos la siguiente línea:

nano /etc/ldap/ldap.conf
BASE= dc=mariajesus,dc=gonzalonazareno,dc=org
URL= ldaps://alfa.mariajesus.gonzalonazareno.org:636

20

Realizamos las consultas desde la máquina bravo:

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636

ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org"