Rocky Linux#
Caso práctico: Instalación de Rocky Linux#
Descargate la iso de Rocky Linux Minimal para la arquitectura X86_64
Utiliza un disco de 200 GB y 2G de RAM
Llama a esta maquina virtual «MV Rocky Linux».
Utilizad dos adaptadores de red: * Tarjeta red modo «Puente» : 10.4.X.Y/8 , DNS 8.8.8.8 , Gateway 10.0.0.2. (DHCP si usas portátil) * Tarjeta de red modo «Red interna» : 172.16.0.10/16
En el destino de la instalación, selecciona el disco duro si no esta ya seleccionado y deja la configuración de almacenamiento de forma Automática
Configura la red en (RED Y NOMBRE DE ANFITRIÓN), haz que el nombre del equipo sea compute-0-0
Crea la contraseña de root
Añade en /etc/hosts
172.16.0.10 compute-0-0 172.16.0.11 compute-0-1 172.16.0.12 compute-0-2 172.16.0.13 compute-0-3 En el caso de que necesites reconfigurar la red utiliza el comando **nmtui**
Caso práctico: Cluster con red interna#
Crea dos clones enlazados de «MV Rocky Linux» llámalos «compute-0-0» y «compute-0-1»
compute-0-0:
Tarjeta red modo «Puente» : 10.4.X.Y/8 (DHCP si usas portátil)
Tarjeta de red modo «Red interna» : 172.16.0.10/16
Haz que el usuario root pueda acceder por ssh sin pedir contraseña
compute-0-1
Deja solo una tarjeta de red en modo «Red interna» : 172.16.0.11/16 (tiene internet a través de compute-0-0), deshabilita la segunda tarjeta nmtui (IPv4 <disabled>)
Cambia el nombre por compute-0-1 (/etc/h0stname)
Haz que el usuario root pueda acceder desde compute-0-0 por ssh sin pedir contraseña
Crea un servicio como hicimos en ubuntu-server, pero haz que el script se ejecute desde:
/usr/local/bin/enrutar.sh #si tienes algún problema prueba a deshabilitar systemctl disable firewalld
Instala el servidor LDAP en compute-0-0
Servidor Rocky Linux#
Vamos a instalar el servidor ldap en compute-0-0:
dnf update
El plus repo esta deshabilitado por defecto en rocky linux
dnf config-manager --set-enabled plus
dnf clean all
dnf -y install openldap-servers openldap-clients
Podemos confirmar que todo esta instalado ejecutando:
rpm -qa | grep ldap
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl enable --now slapd
systemctl restart slapd
Comprueba que esta corriendo e instalado
systemctl status slapd
Generamos la contraseña del admin para ello ejecutamos
slappasswd
En mi caso con alumno obtengo
{SSHA}ZjYOkjfHrwAx/mjrOndWyUIzyuaXSZJf
La directiva TheolcRootPW puede usarse para especificar la password del DN para el rootdn
cat changerootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}ZjYOkjfHrwAx/mjrOndWyUIzyuaXSZJf
ldapadd -Y EXTERNAL -H ldapi:/// -f changerootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
Importamos lo esquemas básicos
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
$ cat setdomainname.ldif
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=ldap,dc=tunombre,dc=local
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin, dc=ldap,dc=tunombre,dc=local
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}ZjYOkjfHrwAx/mjrOndWyUIzyuaXSZJf
Aplicamos setdomainname.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f setdomainname.ldif
Vamos a crear las unidades organizativas
$ cat adddomain.ldif
dn: dc=ldap,dc=tunombre,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: My example Organisation
dc: ldap
dn: cn=admin, dc=ldap,dc=tunombre,dc=local
objectClass: organizationalRole
cn: admin
description: OpenLDAP Manager
dn: ou=usuarios,dc=ldap,dc=tunombre,dc=local
objectClass: organizationalUnit
ou: usuarios
dn: ou=grupos,dc=ldap,dc=tunombre,dc=local
objectClass: organizationalUnit
ou: grupos
Aplicamos los cambios:
ldapadd -x -D "cn=admin,dc=ldap,dc=tunombre,dc=local" -W -f adddomain.ldif
Para añadir nuevos usuarios
cat addtestuser.ldif
dn: uid=tunombre1,ou=usuarios,dc=ldap,dc=tunombre,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: tunombre1
sn: tunombre1
userPassword: alumno
loginShell: /bin/bash
uidNumber: 1010
gidNumber: 501
homeDirectory: /home/tunombre1
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
Lo añadimos:
sudo ldapadd -x -D cn=admin,dc=ldap,dc=tunombre,dc=local -W -f addtestuser.ldif
Para añadir un grupo
$ cat grupo.ldif
dn: cn=tuapellido,ou=grupos,dc=ldap,dc=tunombre,dc=local
objectClass: posixGroup
cn: tuapellido
gidNumber: 501
Para añadir la información al ldap
sudo ldapadd -x -D cn=admin,dc=ldap,dc=tunombre,dc=local -W -f grupo.ldif
Comprobamos ejecutado en compute-0-0:
[root@compute-0-0 ~] ldapsearch -xLLL -b "dc=ldap,dc=tunombre,dc=local"
Configuración de los certificados TLS
dnf -y install openssl #instalamos el paquete openssl para crear certificados
Vamos a General nuestro propio certificado CA requerido para la comunicación segura del LDAP
cd /etc/pki/CA/
touch index.txt
echo 01 > serial
Generamos la clave privada para el certificado CA
openssl genrsa -out ldap.example.com.key 4096
Usamos nuestra clave privada para general el certificado CA
openssl req -new -key ldap.tunombre.local.key -out ldap.tunombre.local.csr
ES
Madrid
Madrid
IESQuevedo
INF
ldap.tunombre.local
tu_correo@educa.madrid.org
Vamos a crear un certificado SAN para evitar crear multiples certificados para cada cliente del ldap, para ello introduciremos los clientes que vamos a utilizar para hacer la conexión segura
$cat server_cert_ext.cnf
[v3_ca]
basicConstraints = CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP.1 = 172.16.0.10
IP.2 = 172.16.0.11
IP.3 = 172.16.0.12
IP.4 = 172.16.0.13
IP.5 = 172.16.0.14
DNS.1 = 8.8.8.8
Necesitaremos otra clave privada para el servidor LDAP con el nombre «ldap.tunombre.local.key» para ello
cd /etc/pki/CA/private
openssl genrsa -out ldap.tunombre.local.key 4096
También necesitaremos crear una solicitud de firma del certificado (csr)
openssl req -new -key ldap.tunombre.local.key -out ldap.tunombre.local.csr
Por ultimo creamos nuestro certificado del servidor ldap, utilizando CSR, la clve CA y el certificado CA creado anteriormente, este certificado sera valido por 365 días y esta encriptado con un algoritmo sha256
cd /etc/pki/CA/
openssl ca -keyfile ca.key -cert ca.cert.pem -in private/ldap.tunombre.local.csr -out private/ldap.tunombre.local.crt -extensions v3_ca -extfile server_cert_ext.cnf
Podemos ver que index.txt ha sido actualizado
cat index.txt
Para verificar el certificado del cliente
openssl verify -CAfile ca.cert.pem private/ldap.tunombre.local.crt
Podemos ver que contine la lista de IPs y DNS que le proporcionamos
openssl x509 -noout -text -in private/ldap.tunombre.local.crt | grep -A 1 "Subject Alternative Name"
Copiamos los certificados dentro de la configuración del ldap
cp -v private/ldap.tunombre.local.crt private/ldap.tunombre.local.key /etc/openldap/certs/
cp -v ca.cert.pem /etc/openldap/cacerts/
chown -R ldap:ldap /etc/openldap/certs
chown -R ldap:ldap /etc/openldap/cacerts
Podemos comprobar que estos son los valores por defecto en los que slapcat buscara los certificados
slapcat -b "cn=config" | egrep "olcTLSCertificateFile|olcTLSCertificateKeyFile"
Vamos a modificar los valores olcTLSCertificateFile y olcTLSCertificateKeyFile
$ cat tls7.ldif
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.tunombre.local.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.tunombre.local.key
ldapmodify -Y EXTERNAL -H ldapi:// -f tls7.ldif
$ cat tls7_1.ldif
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.tunombre.local.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.tunombre.local.key
$ cat tls7_1.ldif
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/cacerts/ca.cert.pem
Aplicamos los cambios
ldapmodify -Y EXTERNAL -H ldapi:// -f tls7_1.ldif
Validamos los nuevos valores
slapcat -b "cn=config" | egrep "olcTLSCertificateFile|olcTLSCertificateKeyFile|olcTLSCACertificateFile"
Habilitados la configuración del TLS en LDAP, para ello añadimos en /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/certs
TLS_CACERT /etc/openldap/cacerts/ca.cert.pem
TLS_REQCERT allow
Activamos los cambios
systemctl status slapd
Permitimos el trafico del firewall entrante
firewall-cmd --add-service=ldap
firewall-cmd --add-service=ldaps
firewall-cmd --reload
probamos:
ldapsearch -x -ZZ
Cliente Rocky Linux#
dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir
$ cat /etc/sssd/sssd.conf
[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldap.tunombre.local
ldap_search_base = dc=ldap,dc=tunombre,dc=local
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/certs
cache_credentials = True
ldap_tls_reqcert = allow
enumerate = true
[sssd]
services = nss, pam, autofs
domains = default
[nss]
homedir_substring = /home
$ chmod 600 /etc/sssd/sssd.conf
$ systemctl restart sssd
$ systemctl enable sssd
Añanade en /etc/hosts
172.16.0.10 ldap.tunombre.local
#instalamos
dnf install authconfig -y
authconfig --enableldap --enableldapauth --ldapserver=ldap.tunombre.local --ldapbasedn="dc=ldap,dc=tunombre,dc=local" --enablemkhomedir --update
Fíjate que en /etc/openldap/ldap.conf ha introducido las siguientes lineas
BASE dc=ldap,dc=tunombre,dc=local
URI ldap://ldap.tunombre.local
Bibliografía: https://www.golinuxcloud.com/configure-openldap-with-tls-certificates/#Create_private_key_for_CA_certificate