Introducción

En este escenario vamos a ver como configurar un servidor LDAP en nuestro escenario para que utilice el protocolo ldaps:// a la vez que el ldap:// utilizando el certificado x509 de la práctica de https o solicitando el correspondiente a través de gestiona. Realiza las modificaciones adecuadas en los clientes ldap de alfa para que todas las consultas se realicen por defecto utilizando ldaps://.

Preparamos el escenario

Obtenemos el certificado

Para llevar a cabo esta práctica, vamos a hacer uso de SSL/TLS para la comunicación entre el servidor LDAP que tenemos instalado en alfa y sus clientes. Por ello, vamos a necesitar un certificado X.509 para el servidor LDAP.

  • Realizamos una petición de certificado para el servidor LDAP a través de Gestiona.
openssl genrsa 4096 align="center" width="50%" height="50%">}} /etc/ssl/private/alfa.key
  • Creamos el CSR (Certificate Signing Request) para el servidor LDAP firmado por el CA del centro.
openssl req -new -key /etc/ssl/private/alfa.key -out /root/alfa.csr
  • Configuramos los datos del CSR.
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
  • Enviamos el CSR al CA del centro para que nos genere el certificado X.509.

  • Ya obtenidos el certificado y la clave privada, los copiamos a su ubicación correspondiente.

cp /root/alfa.crt /etc/ssl/certs/alfa.crt
cp /root/alfa.key /etc/ssl/private/alfa.key
  • Los añadimos a su directorio correspondiente, para de esta manera poder utilizarlos en el servidor LDAP.
mv gonzalonazareno.crt /etc/ssl/certs/
mv alfa.crt /etc/ssl/certs/
  • Para que el usuario LDAP pueda hacer uso de la clave, vamos a añadir ACL’s que le permitirán al usuario openldap tener acceso a ambos ficheros. Para ello, ejecutaremos lo siguiente:
setfacl -m u:openldap:r-x /etc/ssl/private
setfacl -m u:openldap:r-x /etc/ssl/private/alfa.key

Configuración del servidor LDAP

Ahora que ya tenemos el certificado X.509, vamos a proceder a configurar el servidor LDAP para que utilice SSL/TLS. Para ello, vamosamodificarl el fichero ldap_config.ldif con las siguientes líneas:

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 esta modificación se haga efectiva, aplicamos los cambios con el siguiente comando:

ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap_config.ldif

Y modificamos /etc/default/slapd para que el servidor LDAP escuche por el puerto 636.

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

Y reiniciamos el servicio.

systemctl restart slapd

Para comprobar que el puerto esta escuchando, ejecutamos el siguiente comando:

netstat -tulpn | grep slapd

El siguiente paso es configurar los clientos para que usen LDAPs como método predeterminado de consultas. Para ello, lo vamosa hacer a través del paquete ca-certificates. Copiaremos el certificado del CA del centro en el directorio /usr/local/share/ca-certificates/ y lo añadiremos a la lista de certificados de confianza.

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

Para probar que el certificado funciona, vamos a hacer una consulta al servidor LDAP desde el cliente LDAP de alfa:

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

Y también desde otro cliente, en este caso desde delta:

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

Para que alfa use el protocolo ldaps por defecto, lo haremos de la siguiente manera:

vi /etc/default/slapd

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

Y reiniciamos el servicio.

systemctl restart slapd

Si realizamos una consulta ldap, nos saltará elsiguiente error:

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

Por lo tanto, para que use por defecto ldaps, también debemos añadir o modificar la siguiente línea en el fichero /etc/ldap/ldap.conf:

BASE=dc=mariajesus,dc=gonzalonazareno,dc=org
URI=ldaps://alfa.mariajesus.gonzalonazareno.org

Ahora, si realizamos una consulta, nos devolverá los resultados:

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

Configuración del cliente Ubuntu

Para configurar el cliente Ubuntu, vamos a hacer uso del paquete ca-certificates. Copiaremos el certificado del CA del centro en el directorio /usr/local/share/ca-certificates/ y lo añadiremos a la lista de certificados de confianza.

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

Y actualizamos la lista de certificados de confianza.

update-ca-certificates

Ahora, vamos a configurar el cliente, como hicimos en este post. Por ello, vamos a modificar su configuración PAM, para crear un directorio /home de forma automática, con la siguiente línea:

session required pam_mkhomedir.so skel=/etc/skel/ umask=0077

Para su comprobación, he creado un usuario nuevo (coffee) y he iniciado sesión con él.

Si creamos un fichero, podemos ver que tenemos permisos de lectura y escritura.

Como última comprobación, vamos a ver que, desde alfa se han efectuado los cambios.

Configuración del cliente Rocky Linux

Para configurar el cliente Rocky Linux, instalaremos el paquete openldap-clients.

dnf install openldap-clients

Editamos el fichero /etc/pam.d/system-auth y añadimos la siguiente línea:

BASE=dc=mariajesus,dc=gonzalonazareno,dc=org
URI=ldap://alfa.mariajesus.gonzalonazareno.org

Y permitimos que acceda a su propia /home:

session sufficient pam_mkhomedir.so umask=0022 skel=/etc/skel/

Configurado esto, comprobamos que funciona correctamente.

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

Verificamos su autenticación.

ldapwhoami -x -D "uid=coffee,ou=Personas,dc=mariajesus,dc=gonzalonazareno,dc=org" -W

Instalaremos los paquetes necesarios para hacer login con LDAP.

dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir 

Y ejecutamos authselect select sssd with-mkhomedir --force para que se cree el directorio /home de forma automática.

Añadiremos las siguienteslíneas para la configuración de SSSD:

[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://alfa.mariajesus.gonzalonazareno.org
ldap_search_base = dc=mariajesus,dc=gonzalonazareno,dc=org
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/cacerts
cache_credentials = True
ldap_tls_reqcert = allow

[sssd]
services = nss, pam, autofs
domains = default

[nss]
homedir_substring = /home/nfs

Cambiamos sus permisos y reiniciamos el servicio.

chmod 600 /etc/sssd/sssd.conf 
systemctl restart sssd
systemctl enable sssd

Montamos el directorio del usuario coffee en el cliente.

[Unit]
Description=script de montaje NFS
Requires=NetworkManager.service
After=NetworkManager.service
[Mount]
What=172.16.0.1:/home/nfs
Where=/home/nfs
Options=_netdev,auto
Type=nfs
[Install]
WantedBy=multi-user.target

Reiniciamos los demonios y el servicio.

systemctl daemon-reload
systemctl start mnt-nfs.mount

Tras esto, comprobamos que funciona correctamente:

  • Nos conectamos a bravo.

  • Comprobamos desde alfa que se ha creado el directorio /home/nfs/coffee.