Wir werden diesen Artikel beginnen, indem wir einige LDAP-Grundlagen skizzieren (was es ist, wo es verwendet wird und warum) und zeigen, wie man einen LDAP-Server einrichtet und einen Client konfiguriert, um sich dagegen zu authentifizieren, indem man Red Hat Enterprise Linux 7-Systeme verwendet.

Wie wir sehen werden, gibt es mehrere andere mögliche Anwendungsszenarien, aber in diesem Leitfaden werden wir uns ausschließlich auf die LDAP-basierte Authentifizierung konzentrieren. Bitte beachten Sie außerdem, dass wir aufgrund der Weite des Themas hier nur die Grundlagen behandeln werden, aber Sie können sich zur ausführlicheren Details auf die in der Zusammenfassung angegebene Dokumentation beziehen.
Aus demselben Grund werden Sie feststellen, dass ich mich entschieden habe, einige Verweise auf die Handbuchseiten von LDAP-Tools der Kürze halber auszulassen, aber die entsprechenden Erklärungen sind nur einen Fingertipp entfernt (man ldapadd zum Beispiel).
Das gesagt, lasst uns beginnen.
Unsere Testumgebung
Unsere Testumgebung besteht aus zwei RHEL 7-Rechnern:
Server: 192.168.0.18. FQDN: rhel7.mydomain.com Client: 192.168.0.20. FQDN: ldapclient.mydomain.com
Wenn Sie möchten, können Sie den in Teil 12: Automatisieren von RHEL 7-Installationen mit Kickstart installierten Rechner als Client verwenden.
Was ist LDAP?
LDAP steht für Lightweight Directory Access Protocol und besteht aus einem Satz von Protokollen, die es einem Client ermöglichen, über ein Netzwerk zentral gespeicherte Informationen abzurufen (wie ein Verzeichnis von Anmelde-Shells, absolute Pfade zu Home-Verzeichnissen und andere typische Systembenutzerinformationen, zum Beispiel), die von verschiedenen Orten aus zugänglich sein sollten oder einer großen Anzahl von Endbenutzern zur Verfügung stehen sollten (ein weiteres Beispiel wäre ein Verzeichnis von Privatadressen und Telefonnummern aller Mitarbeiter in einem Unternehmen).
Die zentrale Speicherung solcher (und weiterer) Informationen erleichtert deren Wartung und den Zugriff für alle, die die Berechtigung zur Nutzung erhalten haben.
Das folgende Diagramm bietet eine vereinfachte Darstellung von LDAP und wird weiter unten detailliert beschrieben:

Erklärung des obigen Diagramms im Detail.
- Ein Eintrag in einem LDAP-Verzeichnis repräsentiert eine einzelne Informationseinheit und wird eindeutig durch das sogenannte Distinguished Name identifiziert.
- Ein Attribut ist eine mit einem Eintrag verbundene Information (zum Beispiel Adressen, verfügbare Kontakttelefonnummern und E-Mail-Adressen).
- Jedem Attribut wird ein oder mehrere Werte zugewiesen, die aus einer durch Leerzeichen getrennten Liste bestehen. Ein Wert, der pro Eintrag eindeutig ist, wird als Relative Distinguished Name bezeichnet.
Das gesagt sei, lassen Sie uns mit den Server- und Client-Installationen fortfahren.
Installation und Konfiguration eines LDAP-Servers und Clients
In RHEL 7 wird LDAP von OpenLDAP implementiert. Verwenden Sie die folgenden Befehle, um den Server und den Client zu installieren:
# yum update && yum install openldap openldap-clients openldap-servers # yum update && yum install openldap openldap-clients nss-pam-ldapd
Nach Abschluss der Installation gibt es einige Dinge, auf die wir achten. Die folgenden Schritte sollten nur auf dem Server durchgeführt werden, es sei denn, es wird ausdrücklich anders angegeben:
1. Stellen Sie sicher, dass SELinux nicht im Weg steht, indem Sie die folgenden Booleans dauerhaft aktivieren, sowohl auf dem Server als auch auf dem Client:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0
Wo allow_ypbind für die LDAP-basierte Authentifizierung erforderlich ist und authlogin_nsswitch_use_ldap von einigen Anwendungen benötigt werden kann.
2. Aktivieren und starten Sie den Dienst:
# systemctl enable slapd.service # systemctl start slapd.service
Beachten Sie, dass Sie den Dienst auch mit systemctl deaktivieren, neu starten oder stoppen können:
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service
3. Da der Dienst slapd als Benutzer ldap ausgeführt wird (was Sie mit ps -e -o pid,uname,comm | grep slapd überprüfen können), sollte dieser Benutzer das Verzeichnis /var/lib/ldap besitzen, damit der Server Einträge ändern kann, die von administrativen Tools erstellt wurden, die nur als root ausgeführt werden können (dazu gleich mehr).
Bevor Sie den Besitz dieses Verzeichnisses rekursiv ändern, kopieren Sie die Beispieldatenbankkonfigurationsdatei für slapd hinein:
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # chown -R ldap:ldap /var/lib/ldap
4. Legen Sie einen OpenLDAP-Administrationsbenutzer an und weisen Sie ein Passwort zu:
# slappasswd
wie im nächsten Bild gezeigt:

und erstellen Sie eine LDIF-Datei (ldaprootpasswd.ldif) mit folgendem Inhalt:
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD
wo:
- PASSWORD der gehashte String ist, der zuvor erhalten wurde.
- cn=config gibt globale Konfigurationsoptionen an.
- olcDatabase gibt einen spezifischen Datenbankinstanznamen an und befindet sich typischerweise innerhalb von /etc/openldap/slapd.d/cn=config.
Unter Bezugnahme auf den zuvor bereitgestellten theoretischen Hintergrund fügt die Datei ldaprootpasswd.ldif
einen Eintrag in das LDAP-Verzeichnis ein. In diesem Eintrag stellt jede Zeile ein Attribut: Wert-Paar dar (wobei dn, changetype, add und olcRootPW die Attribute sind und die Zeichen rechts von jedem Doppelpunkt ihre entsprechenden Werte sind).
Sie sollten dies im weiteren Verlauf im Hinterkopf behalten, und beachten Sie bitte, dass wir dieselben Common Names (cn=)
im Rest dieses Artikels verwenden, wobei jeder Schritt vom vorherigen abhängt.
5. Fügen Sie nun den entsprechenden LDAP-Eintrag hinzu, indem Sie die URI angeben, die auf den LDAP-Server verweist, wobei nur die Protokoll/Host/Port-Felder erlaubt sind.
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif
Die Ausgabe sollte ähnlich sein wie:

und importieren Sie einige grundlegende LDAP-Definitionen aus dem Verzeichnis /etc/openldap/schema
:
# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. Lassen Sie LDAP Ihre Domäne in seiner Datenbank verwenden.
Erstellen Sie eine weitere LDIF-Datei, die wir ldapdomain.ldif
nennen werden, mit folgendem Inhalt, wobei Sie Ihre Domäne (im Domain Component dc=) und das Passwort entsprechend ersetzen:
dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=mydomain,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=mydomain,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=mydomain,dc=com" write by * read
# ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Jetzt ist es an der Zeit, einige Einträge in unserem LDAP-Verzeichnis hinzuzufügen. Attribute und Werte sind durch einen Doppelpunkt (:)
in der folgenden Datei getrennt, die wir baseldapdomain.ldif
nennen werden:
dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectclass: organization o: mydomain com dc: mydomain dn: cn=Manager,dc=mydomain,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager dn: ou=People,dc=mydomain,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=mydomain,dc=com objectClass: organizationalUnit ou: Group
Fügen Sie die Einträge dem LDAP-Verzeichnis hinzu:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. Erstellen Sie einen LDAP-Benutzer namens ldapuser (adduser ldapuser), erstellen Sie dann die Definitionen für eine LDAP-Gruppe in ldapgroup.ldif
.
# adduser ldapuser # vi ldapgroup.ldif
Fügen Sie folgenden Inhalt hinzu.
dn: cn=Manager,ou=Group,dc=mydomain,dc=com objectClass: top objectClass: posixGroup gidNumber: 1004
wo gidNumber die GID in /etc/group für ldapuser ist) und laden Sie es:
# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif
9. Fügen Sie eine LDIF-Datei mit den Definitionen für den Benutzer ldapuser hinzu (ldapuser.ldif
):
dn: uid=ldapuser,ou=People,dc=mydomain,dc=com objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldapuser uid: ldapuser uidNumber: 1004 gidNumber: 1004 homeDirectory: /home/ldapuser userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M loginShell: /bin/bash gecos: ldapuser shadowLastChange: 0 shadowMax: 0 shadowWarning: 0
und laden Sie es:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

Ebenso können Sie den Benutzereintrag, den Sie gerade erstellt haben, löschen:
# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"
10. Erlauben Sie die Kommunikation durch die Firewall:
# firewall-cmd --add-service=ldap
11. Zuletzt, aber nicht zuletzt, ermöglichen Sie dem Client, sich über LDAP zu authentifizieren.
Um uns in diesem letzten Schritt zu helfen, werden wir das Dienstprogramm authconfig verwenden (eine Schnittstelle zur Konfiguration von Systemauthentifizierungsressourcen).
Mit dem folgenden Befehl wird das Home-Verzeichnis für den angeforderten Benutzer erstellt, falls es nach erfolgreicher Authentifizierung gegen den LDAP-Server nicht existiert:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

Zusammenfassung
In diesem Artikel haben wir erklärt, wie man eine grundlegende Authentifizierung gegen einen LDAP-Server einrichtet. Um das im vorliegenden Leitfaden beschriebene Setup weiter zu konfigurieren, verweisen Sie bitte auf Kapitel 13 – LDAP-Konfiguration im RHEL 7 Systemadministrator-Handbuch und achten Sie besonders auf die Sicherheitseinstellungen unter Verwendung von TLS.
Fühlen Sie sich frei, etwaige Fragen über das Kommentarformular unten zu stellen.
Source:
https://www.tecmint.com/setup-ldap-server-and-configure-client-authentication/