In unserem vorherigen Artikel haben wir OpenLDAP-Server auf CentOS 7 / RHEL 7 eingerichtet für die zentrale Authentifizierung. In Fortsetzung dessen werden wir nun OpenLDAP konfigurieren mit SSL für sichere Kommunikation. Bei dieser Konfiguration erfolgt die Kommunikation der LDAP-Clients über den sicheren Port 636 statt über den unsicheren Port 389.
Befolgen Sie diese Anleitung, um OpenLDAP zu konfigurieren mit SSL.
Voraussetzungen
1. OpenLDAP-Einrichtung.
2. Erstellen Sie einen Host-Eintrag des LDAP-Servers auf Ihren Client-Rechnern in /etc/hosts
zur Namensauflösung.
192.168.1.10 server.itzgeek.local server
ODER
Wenn Sie statt der IP-Adresse den Hostnamen verwenden möchten, konfigurieren Sie den DNS-Server unter CentOS 7/RHEL 7 um eine Hostnamenauflösung zu haben.
LDAP-Zertifikat erstellen
Wenn Sie vorhaben, LDAP über SSL zu verwenden, können Sie eine der folgenden Methoden anwenden, um es zu implementieren.
1. Selbstsigniertes Zertifikat – Es ist ein einfaches selbstsigniertes Zertifikat. LDAP-Clients müssen tls_reqcert allow
haben in /etc/nslcd.conf
um das Zertifikat nicht zu validieren.
2. CA-signiertes Zertifikat – Ihre internen CA- oder externen CA-Signaturzertifikate. Sie sollten das CA-Zertifikat, das Ihr LDAP-Serverzertifikat signiert hat, in /etc/openldap/cacerts/
platzieren Verzeichnis, damit LDAP-Clients Zertifikate validieren können.
Selbstsigniertes Zertifikat
Lassen Sie uns ein selbstsigniertes Zertifikat für unseren LDAP-Server erstellen. Der folgende Befehl generiert sowohl das Zertifikat als auch den privaten Schlüssel in /etc/openldap/certs/
Verzeichnis.
openssl req -new -x509 -nodes -out /etc/openldap/certs/itzgeekldap.crt -keyout /etc/openldap/certs/itzgeekldap.key -days 1460
Ausgabe:
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]
Legen Sie die Eigentümer- und Gruppenberechtigungen fest.
chown -R ldap:ldap /etc/openldap/certs/itzgeek*
Überprüfen Sie das erstellte LDAP-Zertifikat unter /etc/openldap/certs/
Verzeichnis.
ll /etc/openldap/certs/itzgeek*
Ausgabe:
-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
Erstellen Sie certs.ldif
Datei zum Konfigurieren von LDAP für die Verwendung einer sicheren Kommunikation mit einem selbstsignierten Zertifikat.
vi certs.ldif
Verwenden Sie die folgenden Informationen.
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
Importieren Sie die Konfigurationen auf den LDAP-Server.
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
Überprüfen Sie die Konfiguration
slaptest -u
Bei erfolgreicher Verifizierung sollten Sie die folgende Meldung erhalten.
config file testing succeeded
Benutzerdefiniertes CA-signiertes Zertifikat
Erstellen Sie den Stammschlüssel mit dem folgenden Befehl.
cd /etc/openldap/certs/ openssl genrsa -out itzgeekrootCA.key 2048
Erstellen Sie nun das selbstsignierte Stammzertifikat.
openssl req -x509 -new -nodes -key itzgeekrootCA.key -sha256 -days 1024 -out itzgeekrootCA.pem
Ausgabe:
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]
Erstellen Sie einen privaten Schlüssel für den LDAP-Server.
openssl genrsa -out itzgeekldap.key 2048
Wenn Sie über den privaten Schlüssel verfügen, erstellen Sie eine Zertifikatsignieranforderung.
openssl req -new -key itzgeekldap.key -out itzgeekldap.csr
Ausgabe:
Stellen Sie sicher, dass der allgemeine Name mit dem Hostnamen oder der IP-Adresse Ihres LDAP-Servers übereinstimmt.
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 []:
Signieren Sie jetzt eine Zertifikatsignieranforderung mit der benutzerdefinierten Stammzertifizierungsstelle.
openssl x509 -req -in itzgeekldap.csr -CA itzgeekrootCA.pem -CAkey itzgeekrootCA.key -CAcreateserial -out itzgeekldap.crt -days 1460 -sha256
Legen Sie die Eigentümer- und Gruppenberechtigungen fest.
chown -R ldap:ldap /etc/openldap/certs/itzgeek*
Überprüfen Sie das erstellte LDAP-Zertifikat unter /etc/openldap/certs/
Verzeichnis.
ll /etc/openldap/certs/itzgeek*
Ausgabe:
-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
Erstellen Sie certs.ldif
Datei zum Konfigurieren von LDAP für die Verwendung einer sicheren Kommunikation mit einem selbstsignierten Zertifikat.
vi certs.ldif
Verwenden Sie die folgenden Informationen.
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
Importieren Sie die Konfigurationen auf den LDAP-Server.
ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif
Überprüfen Sie die Konfiguration
slaptest -u
Bei erfolgreicher Verifizierung sollten Sie die folgende Meldung erhalten.
config file testing succeeded
Konfigurieren Sie OpenLDAP, um über SSL zu lauschen
Bearbeiten Sie /etc/sysconfig/slapd
Datei und konfigurieren Sie OpenLDAP so, dass es über SSL lauscht.
vi /etc/sysconfig/slapd
Aktualisieren Sie die folgende Zeile.
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"
Starten Sie den slapd-Dienst neu.
systemctl restart slapd
Überprüfen Sie den LDAP-Dienst. Der LDAP-Dienst sollte jetzt auch TCP-Port 636 überwachen.
netstat -antup | grep -i 636
Ausgabe:
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 11720/slapd tcp6 0 0 :::636 :::* LISTEN 11720/slapd
Firewall
Fügen Sie den LDAPS-Dienst zur Firewall hinzu (TCP 686).
firewall-cmd --permanent --add-service=ldaps firewall-cmd --reload
OpenLDAP-Client-Konfiguration für OpenLDAP über SSL
Installieren Sie die Client-Pakete mit dem Befehl yum.
yum install -y openldap-clients nss-pam-ldapd
Führen Sie die authconfig
aus Befehl zum Hinzufügen eines Clientcomputers zum LDAP-Server für Single Sign-On. Ersetzen Sie „server.itzgeek.local “ durch die IP-Adresse oder den Hostnamen Ihres LDAP-Servers.
Wenn Sie ein benutzerdefiniertes, von einer Zertifizierungsstelle signiertes oder von einer externen Zertifizierungsstelle signiertes Zertifikat in der OpenLDAP-Einrichtung verwendet haben, sollte der Hostname oder die IP-Adresse mit dem allgemeinen Namen des LDAP-Serverzertifikats übereinstimmen
authconfig --enableldap --enableldapauth --ldapserver=ldaps://server.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --disableldaptls --update
Sie müssten die folgenden Schritte basierend auf der Methode ausführen, die Sie OpenLDAP für die Verwendung von SSL konfiguriert haben.
Selbstsigniertes Zertifikat
Bearbeiten Sie die nslcd.conf
Datei.
vi /etc/nslcd.conf
Fügen Sie die folgende Zeile in der nslcd.conf
hinzu Datei. Die folgende Einstellung deaktiviert die von Clients durchgeführte Zertifikatsvalidierung, da wir ein selbstsigniertes Zertifikat verwenden.
tls_reqcert allow
Benutzerdefinierte CA-signiert oder externe CA-signiert
Kopieren Sie die itzgeekrootCA.pem
vom LDAP-Server oder platzieren Sie das Zwischenzertifikat oder die Zertifizierungsstelle, die von einer externen Zertifizierungsstelle bereitgestellt wird, in /etc/openldap/cacerts
Verzeichnis.
cd /etc/openldap/cacerts/ scp -pr 192.168.1.10:/etc/openldap/certs/itzgeekrootCA.pem /etc/openldap/cacerts
Erstellen Sie den C-Hash des CA-Zertifikats.
/etc/pki/tls/misc/c_hash /etc/openldap/cacerts/itzgeekrootCA.pem
Ausgabe:
997ee4fb.0 => /etc/openldap/cacerts/itzgeekrootCA.pem
Verknüpfen Sie nun rootCA.pem mit der angezeigten 8-stelligen Hexadezimalzahl.
ln -s /etc/openldap/cacerts/itzgeekrootCA.pem 997ee4fb.0
Starten Sie den LDAP-Client-Dienst neu.
systemctl restart nslcd
LDAP-Anmeldung bestätigen
Verwenden Sie den Befehl getent, um die LDAP-Einträge vom LDAP-Server abzurufen.
getent passwd raj
Ausgabe:
raj:x:9999:100:Raj [Admin (at) ITzGeek]:/home/raj:/bin/bash
Um das LDAP zu überprüfen, melden Sie sich mit dem LDAP-Benutzer „raj“ auf dem Client-Rechner an.
Screenshot:
Referenz
OpenFusion – OpenLDAP-Tipps und Tricks
CentOS – Forum
Das ist alles.