Website-Suche

RHCSA-Serie: Einrichten der LDAP-basierten Authentifizierung in RHEL 7 – Teil 14


Wir beginnen diesen Artikel mit der Erläuterung einiger LDAP-Grundlagen (was es ist, wo es verwendet wird und warum) und zeigen, wie man einen LDAP-Server einrichtet und einen Client so konfiguriert, dass er sich mit bei ihm authentifiziert Red Hat Enterprise Linux 7-Systeme.

Wie wir sehen werden, gibt es noch mehrere weitere mögliche Anwendungsszenarien, in diesem Leitfaden konzentrieren wir uns jedoch ausschließlich auf die LDAP-basierte Authentifizierung. Bitte bedenken Sie außerdem, dass wir uns hier aufgrund der Weitläufigkeit des Themas nur auf die Grundlagen befassen. Ausführlichere Informationen finden Sie jedoch in der Dokumentation in der Zusammenfassung.

Aus dem gleichen Grund werden Sie feststellen, dass ich mich der Kürze halber entschieden habe, mehrere Verweise auf Manpages von LDAP-Tools wegzulassen, die entsprechenden Erklärungen sind jedoch nur einen Fingertipp entfernt (man ldapadd, z Beispiel).

Das heißt, fangen wir an.

Unsere Testumgebung

Unsere Testumgebung besteht aus zwei RHEL 7-Boxen:


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 die in Teil 12: RHEL 7-Installationen mit Kickstart automatisieren installierte Maschine als Client verwenden.

Was ist LDAP?

LDAP steht für Lightweight Directory Access Protocol und besteht aus einer Reihe von Protokollen, die es einem Client ermöglichen, über ein Netzwerk auf zentral gespeicherte Informationen (z. B. ein Verzeichnis von Login-Shells) zuzugreifen , absolute Pfade zu Privatverzeichnissen und andere typische Systembenutzerinformationen (z. B.), die von verschiedenen Orten aus zugänglich oder für eine große Anzahl von Endbenutzern verfügbar sein sollten (ein anderes Beispiel wäre ein Verzeichnis mit Privatadressen und Telefonnummern aller Mitarbeiter in eine Firma).

Durch die zentrale Aufbewahrung solcher (und weiterer) Informationen können diese einfacher verwaltet und von jedem, dem die Nutzungsberechtigung erteilt wurde, leichter darauf zugegriffen werden.

Das folgende Diagramm bietet ein vereinfachtes Diagramm von LDAP und wird im Folgenden ausführlicher beschrieben:

Erläuterung des obigen Diagramms im Detail.

  1. Ein Eintrag in einem LDAP-Verzeichnis stellt eine einzelne Einheit oder Information dar und wird durch einen sogenannten Distinguished Name eindeutig identifiziert.
  2. Ein Attribut ist eine mit einem Eintrag verknüpfte Information (z. B. Adressen, verfügbare Kontakttelefonnummern und E-Mail-Adressen).
  3. Jedem Attribut werden ein oder mehrere Werte zugewiesen, die in einer durch Leerzeichen getrennten Liste bestehen. Ein pro Eintrag eindeutiger Wert wird als Relative Distinguished Name bezeichnet.

Fahren wir nun mit der Server- und Client-Installation fort.

Installieren und Konfigurieren eines LDAP-Servers und -Clients

In RHEL 7 wird LDAP durch OpenLDAP implementiert. Um den Server und den Client zu installieren, verwenden Sie jeweils die folgenden Befehle:


yum update && yum install openldap openldap-clients openldap-servers
yum update && yum install openldap openldap-clients nss-pam-ldapd

Sobald die Installation abgeschlossen ist, schauen wir uns einige Dinge an. Die folgenden Schritte sollten nur auf dem Server ausgeführt werden, sofern nicht ausdrücklich anders angegeben:

1. Stellen Sie sicher, dass SELinux nicht im Weg ist, 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

Wobei allow_ypbind für die LDAP-basierte Authentifizierung erforderlich ist und authlogin_nsswitch_use_ldap möglicherweise von einigen Anwendungen benötigt wird.

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 slapd-Dienst als LDAP-Benutzer 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 Verwaltungstools erstellt wurden, die nur als Root ausgeführt werden können (mehr dazu in a Minute).

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. Richten Sie einen OpenLDAP-Administratorbenutzer ein und vergeben Sie ein Passwort:


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 :

  1. PASSWORD ist die zuvor erhaltene Hash-Zeichenfolge.
  2. cn=config gibt globale Konfigurationsoptionen an.
  3. olcDatabase gibt einen bestimmten Datenbankinstanznamen an und ist normalerweise in /etc/openldap/slapd.d/cn=config zu finden.

Bezugnehmend auf den zuvor bereitgestellten theoretischen Hintergrund fügt die Datei ldaprootpasswd.ldif einen Eintrag zum LDAP-Verzeichnis hinzu. In diesem Eintrag stellt jede Zeile ein Attribut:Wert-Paar dar (wobei dn, changetype, add und olcRootPW die Attribute sind und die Zeichenfolgen rechts von jedem Doppelpunkt ihre entsprechenden Werte sind).

Möglicherweise möchten Sie dies im Hinterkopf behalten, wenn wir fortfahren. Bitte beachten Sie, dass wir im weiteren Verlauf dieses Artikels dieselben allgemeinen Namen (cn=) verwenden, wobei jeder Schritt vom vorherigen abhängt .

5. Fügen Sie nun den entsprechenden LDAP-Eintrag hinzu, indem Sie den URI angeben, der sich auf den LDAP-Server bezieht, wobei nur die Felder Protokoll/Host/Port zulässig sind.


ldapadd -H ldapi:/// -f ldaprootpasswd.ldif 

Die Ausgabe sollte etwa so aussehen:

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 Domain in seiner Datenbank verwenden.

Erstellen Sie eine weitere LDIF-Datei, die wir ldapdomain.ldif nennen werden, mit folgendem Inhalt, wobei Sie Ihre Domäne (in der Domänenkomponente dc=) und Ihr 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

Laden Sie es dann wie folgt:


ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Jetzt ist es an der Zeit, einige Einträge zu unserem LDAP-Verzeichnis hinzuzufügen. Attribute und Werte werden in der folgenden Datei, die wir baseldapdomain.ldif nennen, durch einen Doppelpunkt (:) getrennt:


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 zum 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) und 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

(wobei 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 lade es:


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

Ebenso können Sie den soeben erstellten Benutzereintrag löschen:


ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"

10. Kommunikation durch die Firewall zulassen:


firewall-cmd --add-service=ldap

11. Zu guter Letzt ermöglichen Sie dem Client die Authentifizierung über LDAP.

Um uns in diesem letzten Schritt zu helfen, verwenden wir das Dienstprogramm authconfig (eine Schnittstelle zum Konfigurieren von Systemauthentifizierungsressourcen).

Mit dem folgenden Befehl wird das Home-Verzeichnis für den angeforderten Benutzer erstellt, falls es nach erfolgreicher Authentifizierung gegenüber dem 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 Sie die Basisauthentifizierung gegenüber einem LDAP-Server einrichten. Um das in diesem Handbuch beschriebene Setup weiter zu konfigurieren, lesen Sie bitte Kapitel 13 – LDAP-Konfiguration im RHEL 7-Systemadministratorhandbuch, wobei Sie besonders auf die Sicherheitseinstellungen mit TLS achten sollten.

Fühlen Sie sich frei, Ihre Fragen über das Kommentarformular unten zu hinterlassen.