Skip to main content

LDAPs

Configura el servidor LDAP de alfa 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://

Primero, en alfa, generamos un certificado público y privado para el servidor LDAP:

openssl genrsa 4096 > /etc/ssl/private/alfa.key
openssl req -new -key /etc/ssl/private/alfa.key -out alfa.csr

Saldrá algo como esto:

root@alfa:~# openssl genrsa 4096 > /etc/ssl/private/alfa.key
Generating RSA private key, 4096 bit long modulus (2 primes)
.........................................................................................................................................++++
.....................................++++
e is 65537 (0x010001)

root@alfa:~# openssl req -new -key /etc/ssl/private/alfa.key -out alfa.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
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.nazareth.gonzalonazareno.org
Email Address []:belennazareth29@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Después, debemos mandar el fichero alfa.csr a Gonzalo Nazareno (unidad certificadora) para que nos devuelvan nuestro certificado firmado y el suyo propio. Una vez lo tengamos, lo guardamos en /etc/ssl/certs/alfa.crt.

Movemos el fichero ya firmado a /etc/ssl/certs/:

mv alfa.crt /etc/ssl/certs/
mv gonzalonazareno.crt /etc/ssl/certs/

Le cambiamos el propietario y el grupo:

chown root: /etc/ssl/certs/alfa.crt
chown root: /etc/ssl/certs/gonzalonazareno.crt

Instalamos acl para poder acceder a los certificados:

sudo apt install acl

Le damos permisos a los certificados:

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

De resultado, debería salir algo como esto:

root@alfa:~# getfacl /etc/ssl/private         
getfacl: Removing leading '/' from absolute path names
# file: etc/ssl/private
# owner: root
# group: root
user::rwx
user:openldap:r-x
group::---
mask::r-x
other::---

root@alfa:~# getfacl /etc/ssl/private/alfa.key
getfacl: Removing leading '/' from absolute path names
# file: etc/ssl/private/alfa.key
# owner: root
# group: root
user::rw-
user:openldap:r-x
group::r--
mask::r-x
other::r--

root@alfa:~#

Creamos un fichero ldif para configurar el servidor LDAP:

nano ldap-tls.ldif
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

Lo aplicamos:

ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap-tls.ldif

Saldrá algo como esto:

root@alfa:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap-tls.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

root@alfa:~#

Modificamos el fichero de slapd para que utilice el protocolo ldaps://:

nano /etc/default/slapd
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

Copiamos el certificado de Gonzalo Nazareno a /usr/local/share/ca-certificates/:

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

Actualizamos los certificados:

update-ca-certificates
root@alfa:~# update-ca-certificates
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping duplicate certificate in gonzalonazareno.crt
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

Adding debian:gonzalonazareno.pem
done.
done.
root@alfa:~#

Reiniciamos el servicio:

systemctl restart slapd

Para comprobar el funcionamiento, podemos utilizar el comando ldapsearch:

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

DELTA UBUNTU

Copiamos el certificado de la unidad certificadora:

scp /etc/ssl/certs/gonzalonazareno.crt nazare@{ip delta}:

Movemos el certificado a /usr/local/share/ca-certificates/:

mv gonzalonazareno.crt /usr/local/share/ca-certificates/

Cambiamos los permisos:

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

Actualizamos los certificados:

update-ca-certificates

Instalamos ldap-utils para poder utilizar el comando ldapsearch:

sudo apt install ldap-utils

Modificamos la siguiente línea en el fichero /etc/ldap/ldap.conf:

nano /etc/ldap/ldap.conf
URI ldaps://alfa.nazareth.gonzalonazareno.org

Para comprobar el funcionamiento, podemos utilizar el comando ldapsearch:

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

BRAVO (ROCKY L)

Pasamos por scp el certificado de la unidad certificadora:

scp /etc/ssl/certs/gonzalonazareno.crt nazare@{ip bravo}:

Movemos el certificado a /usr/local/share/ca-certificates/:

mv gonzalonazareno.crt /usr/share/pki/ca-trust-source/anchors/

Cambiamos los permisos:

chown root: /usr/share/pki/ca-trust-source/anchors/gonzalonazareno.crt

Instalamos el cliente de LDAP:

dnf install openldap-clients

Editamos el fichero pam.d/common-auth para añaadir la siguiente línea y poder autenticarnos con LDAP:

nano /etc/pam.d/common-auth
auth    sufficient      pam_ldap.so

Editamos el fichero de configuración de LDAP:

nano /etc/openldap/ldap.conf
BASE    dc=nazareth,dc=gonzalonazareno,dc=org
URI ldaps://alfa.nazareth.gonzalonazareno.org

Editamos pam.d/common-session para que los usuarios LDAP puedan iniciar sesión:

nano /etc/pam.d/common-session
session sufficient pam_mkhomedir.so skel=/etc/skel umask=077

Hacemos una consulta a LDAP:

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

Instalamos los paquetes para loguearnos con LDAP:

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

Ejecutamos el siguiente comando para que mkhomedir cree los directorios de los usuarios:

authselect select sssd with-mkhomedir --force

Editamos el fichero de configuración de SSSD:

nano /etc/sssd/sssd.conf
[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://alfa.nazareth.gonzalonazareno.org
ldap_search_base = dc=nazareth,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 = /nfs/

En homedir_substring ponemos el directorio donde se encuentran los homes de los usuarios en el servidor NFS, la máquina alfa.

Copiamos el certificado de la unidad certificadora al directorio /etc/openldap/certs para que SSSD pueda validar el certificado:

cp /usr/share/pki/ca-trust-source/anchors/gonzalonazareno.crt /etc/openldap/certs/

Damos permisos al fichero ssd:

chmod 600 /etc/sssd/sssd.conf

Reiniciamos el servicio:

systemctl restart sssd
systemctl enable sssd