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.keyUna 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
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
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:

scp alfa.crt alfa:172.22.201.46:/home/maria
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.crtComo 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 aclUna 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
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.crtPara que este cambio sea efectivo, ejecutamos el siguiente comando:
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldap.conf
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:///"
service slapd restart
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
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/mariaUna 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
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
Y desde la máquina delta:
ldapsearch -x -b "dc=mariajesus,dc=gonzalonazareno,dc=org" -H ldaps://alfa.mariajesus.gonzalonazareno.org:636
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:///"
Y reiniciamos el servidor:
service slapd restart
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
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"

Configuramos ldaps en alfa
nano /etc/ldap/ldap.conf
BASE= dc=mariajesus,dc=gonzalonazareno,dc=org
URL= ldaps://alfa.mariajesus.gonzalonazareno.org:636
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
Consultas desde bravo
Modificamos el fichero ldap.conf y añadimos la siguiente línea:
nano /etc/ldap/ldap.confBASE= dc=mariajesus,dc=gonzalonazareno,dc=org
URL= ldaps://alfa.mariajesus.gonzalonazareno.org:636
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"