Nel nostro articolo precedente, abbiamo configurato il server OpenLDAP su CentOS 7 / RHEL 7 per l'autenticazione centralizzata. In seguito, configureremo ora OpenLDAP con SSL per una comunicazione sicura. In questa configurazione, le comunicazioni dei client LDAP avvengono sulla porta protetta 636 anziché sulla porta non protetta 389.
Segui questa guida per configurare OpenLDAP con SSL.
Prerequisiti
1. Impostazione di OpenLDAP.
2. Crea una voce host del server LDAP sulle tue macchine client in /etc/hosts
per la risoluzione dei nomi.
192.168.1.10 server.itzgeek.local server
O
Se prevedi di utilizzare il nome host invece dell'indirizzo IP, Configura il server DNS su CentOS 7 / RHEL 7 per avere una risoluzione del nome host.
Crea certificato LDAP
Se prevedi di utilizzare LDAP su SSL, puoi seguire uno dei metodi seguenti per implementarlo.
1. Certificato autofirmato:è un semplice certificato autofirmato. I client LDAP devono avere tls_reqcert allow
in /etc/nslcd.conf
di non convalidare il certificato.
2. Certificato firmato dalla CA:la tua CA interna o i certificati firmati dalla CA esterna. Dovresti inserire il certificato CA che ha firmato il certificato del tuo server LDAP in /etc/openldap/cacerts/
directory in modo che i client LDAP possano convalidare i certificati.
Certificato autofirmato
Creiamo un certificato autofirmato per il nostro server LDAP. Il comando seguente genera sia il certificato che la chiave privata in /etc/openldap/certs/
directory.
openssl req -new -x509 -nodes -out /etc/openldap/certs/itzgeekldap.crt -keyout /etc/openldap/certs/itzgeekldap.key -days 1460
Risultato:
Generating a 2048 bit RSA private key ...+++ .....................................+++ writing new private key to '/etc/openldap/certs/itzgeekldapkey.pem' ----- 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) [XX]: XX State or Province Name (full name) []: XX Locality Name (eg, city) [Default City]: XXXXXX Organization Name (eg, company) [Default Company Ltd]:ITzGeek Organizational Unit Name (eg, section) []:IT Infra Common Name (eg, your name or your server's hostname) []:server.itzgeek.local Email Address []:[email protected]
Imposta le autorizzazioni del proprietario e del gruppo.
chown -R ldap:ldap /etc/openldap/certs/itzgeek*
Verifica il certificato LDAP creato in /etc/openldap/certs/
directory.
ll /etc/openldap/certs/itzgeek*
Risultato:
-rw-r--r--. 1 ldap ldap 1302 Apr 1 14:18 /etc/openldap/certs/itzgeekldap.crt -rw-r--r--. 1 ldap ldap 1704 Apr 1 14:18 /etc/openldap/certs/itzgeekldap.key
Crea certs.ldif
per configurare LDAP per l'utilizzo della comunicazione protetta utilizzando un certificato autofirmato.
vi certs.ldif
Usa le informazioni di seguito.
dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/itzgeekldap.crt dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/itzgeekldap.key
Importa le configurazioni sul server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
Verifica la configurazione
slaptest -u
Dovresti ricevere il seguente messaggio in caso di verifica riuscita.
config file testing succeeded
Certificato personalizzato firmato da un'autorità di certificazione
Crea la chiave radice usando il comando seguente.
cd /etc/openldap/certs/ openssl genrsa -out itzgeekrootCA.key 2048
Ora crea il certificato radice autofirmato.
openssl req -x509 -new -nodes -key itzgeekrootCA.key -sha256 -days 1024 -out itzgeekrootCA.pem
Risultato:
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) [XX]:XX State or Province Name (full name) []:XXX Locality Name (eg, city) [Default City]:XXX Organization Name (eg, company) [Default Company Ltd]:ITzGeek Organizational Unit Name (eg, section) []:XXX Common Name (eg, your name or your server's hostname) []:ITzGeek Root CA Email Address []:[email protected]
Crea una chiave privata per il server LDAP.
openssl genrsa -out itzgeekldap.key 2048
Una volta che hai la chiave privata, crea una richiesta di firma del certificato.
openssl req -new -key itzgeekldap.key -out itzgeekldap.csr
Risultato:
Assicurati che il nome comune corrisponda al nome host o all'indirizzo IP del server LDAP.
Generating RSA private key, 2048 bit long modulus .........+++ .............................................................+++ e is 65537 (0x10001) [root@server certs]# openssl req -new -key itzgeekldap.key -out itzgeekldap.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) [XX]:XX State or Province Name (full name) []:XX Locality Name (eg, city) [Default City]:XXX Organization Name (eg, company) [Default Company Ltd]:ITzGeek Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:server.itzgeek.local Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Ora, firma una richiesta di firma del certificato utilizzando la CA radice personalizzata.
openssl x509 -req -in itzgeekldap.csr -CA itzgeekrootCA.pem -CAkey itzgeekrootCA.key -CAcreateserial -out itzgeekldap.crt -days 1460 -sha256
Imposta le autorizzazioni del proprietario e del gruppo.
chown -R ldap:ldap /etc/openldap/certs/itzgeek*
Verifica il certificato LDAP creato in /etc/openldap/certs/
directory.
ll /etc/openldap/certs/itzgeek*
Risultato:
-rw-r--r--. 1 ldap ldap 1285 Apr 1 16:54 /etc/openldap/certs/itzgeekldap.crt -rw-r--r--. 1 ldap ldap 1050 Apr 1 16:53 /etc/openldap/certs/itzgeekldap.csr -rw-r--r--. 1 ldap ldap 1675 Apr 1 16:51 /etc/openldap/certs/itzgeekldap.key -rw-r--r--. 1 ldap ldap 1679 Apr 1 16:49 /etc/openldap/certs/itzgeekrootCA.key -rw-r--r--. 1 ldap ldap 1399 Apr 1 16:49 /etc/openldap/certs/itzgeekrootCA.pem -rw-r--r--. 1 ldap ldap 17 Apr 1 16:54 /etc/openldap/certs/itzgeekrootCA.srl
Crea certs.ldif
per configurare LDAP per l'utilizzo della comunicazione protetta utilizzando un certificato autofirmato.
vi certs.ldif
Usa le informazioni di seguito.
dn: cn=config changetype: modify replace: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/openldap/certs/itzgeekrootCA.pem dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/itzgeekldap.crt dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/itzgeekldap.key
Importa le configurazioni sul server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
Verifica la configurazione
slaptest -u
Dovresti ricevere il seguente messaggio in caso di verifica riuscita.
config file testing succeeded
Configura OpenLDAP per l'ascolto su SSL
Modifica il /etc/sysconfig/slapd
file e configura OpenLDAP per l'ascolto su SSL.
vi /etc/sysconfig/slapd
Aggiorna la riga sottostante.
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
Riavvia il servizio slapd.
systemctl restart slapd
Verifica il servizio LDAP. Il servizio LDAP ora dovrebbe essere in ascolto anche sulla porta TCP 636.
netstat -antup | grep -i 636
Risultato:
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 11720/slapd tcp6 0 0 :::636 :::* LISTEN 11720/slapd
Firewall
Aggiungi il servizio LDAPS al firewall (TCP 686).
firewall-cmd --permanent --add-service=ldaps firewall-cmd --reload
Configurazione client OpenLDAP per OpenLDAP su SSL
Installa i pacchetti client usando il comando yum.
yum install -y openldap-clients nss-pam-ldapd
Esegui authconfig
comando per aggiungere una macchina client al server LDAP per il Single Sign-On. Sostituisci "server.itzgeek.local ” con il tuo indirizzo IP o nome host del tuo server LDAP.
Se hai utilizzato un certificato personalizzato firmato da una CA o un certificato esterno firmato da una CA nella configurazione di OpenLDAP, il nome host o l'indirizzo IP dovrebbe corrispondere al nome comune del certificato del server LDAP
authconfig --enableldap --enableldapauth --ldapserver=ldaps://server.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --disableldaptls --update
Dovresti eseguire i passaggi seguenti in base al metodo che hai configurato OpenLDAP per utilizzare SSL.
Certificato autofirmato
Modifica il nslcd.conf
file.
vi /etc/nslcd.conf
Aggiungi la seguente riga in nslcd.conf
file. L'impostazione seguente disabiliterà la convalida del certificato eseguita dai client poiché utilizziamo un certificato autofirmato.
tls_reqcert allow
Firma CA personalizzata o CA esterna firmata
Copia il itzgeekrootCA.pem
dal server LDAP o inserire il certificato intermedio o la CA fornita dalla CA esterna nel /etc/openldap/cacerts
directory.
cd /etc/openldap/cacerts/ scp -pr 192.168.1.10:/etc/openldap/certs/itzgeekrootCA.pem /etc/openldap/cacerts
Crea l'hash c del certificato CA.
/etc/pki/tls/misc/c_hash /etc/openldap/cacerts/itzgeekrootCA.pem
Risultato:
997ee4fb.0 => /etc/openldap/cacerts/itzgeekrootCA.pem
Ora, collega in modo simbolico rootCA.pem al numero esadecimale di 8 cifre mostrato.
ln -s /etc/openldap/cacerts/itzgeekrootCA.pem 997ee4fb.0
Riavvia il servizio client LDAP.
systemctl restart nslcd
Verifica accesso LDAP
Usa il comando getent per ottenere le voci LDAP dal server LDAP.
getent passwd raj
Risultato:
raj:x:9999:100:Raj [Admin (at) ITzGeek]:/home/raj:/bin/bash
Per verificare l'LDAP, accedere utilizzando l'utente LDAP "raj" sul computer client.
Schermata:
Riferimento
OpenFusion – Suggerimenti e trucchi OpenLDAP
CentOS – Forum
Questo è tutto.