Escenario - LDAPs
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
openldaptener 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
alfaque se ha creado el directorio/home/nfs/coffee.