3.3. LDAP-Verzeichnisdienst#
Nubus für UCS speichert domänenweite Daten in einem LDAP-Verzeichnisdienst, der OpenLDAP verwendet. Dieses Kapitel behandelt die erweiterte OpenLDAP-Konfiguration und die LDAP-Koordination. Eine Nubus für UCS Domäne verwendet häufig mehrere LDAP-Server. Informationen zur Konfiguration der eingesetzten LDAP-Server finden Sie unter Den LDAP-Server konfigurieren.
3.3.1. Schema und Replikation#
Dieser Abschnitt beschreibt LDAP-Schemata, LDAP-Erweiterungen und die Schema-Replikation in einer Nubus für UCS Domäne.
3.3.1.1. LDAP-Schemata#
Schemadefinitionen legen die Objektklassen und Attribute fest, die ein Verzeichnisdienst speichern und verwalten kann. OpenLDAP speichert Schemadefinitionen in Textdateien und bindet sie in seine Konfigurationsdatei ein.
Nubus für UCS verwendet nach Möglichkeit Standardschemata, um die Interoperabilität mit anderen LDAP-Anwendungen zu unterstützen. Außerdem stellt es Univention-spezifische Schema-Erweiterungen für Attribute wie den Richtlinienmechanismus bereit.
3.3.1.2. LDAP Schema-Erweiterungen#
Für benutzerdefinierte LDAP-Erweiterungen stellt Nubus für UCS ein eigenes LDAP-Schema bereit. Die LDAP-Objektklasse univentionFreeAttributes stellt 20 Attribute von univentionFreeAttribute1 bis univentionFreeAttribute20 für uneingeschränkte Erweiterungsattribute bereit. Sie können diese Objektklasse mit jedem LDAP-Objekt verwenden, zum Beispiel mit einem Benutzerobjekt.
Wenn Sie LDAP Schema-Erweiterungen als Teil eines Softwarepakets bereitstellen, können Sie sie paketieren und über ein Univention Directory Listener-Modul an alle Backup Directory Node-Systeme in der Domäne verteilen. Weitere Informationen finden Sie unter Packaging LDAP Schema Extensions in Univention Developer Reference [6].
3.3.1.3. LDAP Schema-Replikation#
Der Listener- und Notifier-Mechanismus automatisiert die LDAP-Schema-Replikation. Weitere Informationen finden Sie unter Domänenreplikation mit Listener und Notifier. Da die Schema-Replikation vor der LDAP-Objektreplikation abläuft, schlägt die Objektreplikation nicht wegen fehlender Objektklassen oder Attribute fehl. Durch diese Automatisierung müssen Sie nicht jeden OpenLDAP-Server in der Domäne manuell aktualisieren.
Wenn der OpenLDAP-Server auf dem Primary Directory Node startet, berechnet er für alle Verzeichnisse, die Schemadefinitionen enthalten, eine Prüfsumme. Der Server vergleicht diese Prüfsumme mit der zuvor in /var/lib/univention-ldap/schema/md5 gespeicherten Prüfsumme.
Der Univention Directory Listener startet die Schema-Replikation. Bevor er beim Univention Directory Notifier eine neue Transaktions-ID anfordert, fragt er die aktuelle Schema-ID ab. Wenn diese Schema-ID höher ist als die Schema-ID auf dem Listener-System, ruft der Listener das aktuelle Teilschema vom LDAP-Server des Notifier-Systems durch eine LDAP-Suche ab.
Der Listener schreibt das resultierende Teilschema im LDIF-Format nach /var/lib/univention-ldap/schema.conf. Anschließend startet er den lokalen OpenLDAP-Server neu. Nachdem der Listener die Schema-Replikation abgeschlossen hat, wird die LDAP-Objektreplikation fortgesetzt.
Siehe auch
- Domänenreplikation mit Listener und Notifier
für Informationen über den Listener- und Notifier-Mechanismus.
3.3.2. Betrieb und Wartung#
Dieser Abschnitt beschreibt die Protokollierung, Einstellungen für Zeitüberschreitungen der Verbindung und LDAP-Backup-Aufgaben.
3.3.2.1. Protokollierung von LDAP-Änderungen zur Erkennung von Manipulationen#
Das Paket univention-directory-logger protokolliert alle Änderungen am LDAP-Verzeichnis. Da jeder Datensatz einen Hash des vorherigen Datensatzes enthält, können Sie Änderungen an der Logdatei wie gelöschte Einträge erkennen.
Um das Paket univention-directory-logger zu installieren, folgen Sie den Anweisungen unter Installation mittels Management UI oder Installation über die Befehlszeile.
Sie können bestimmte Verzeichniszweige von der Protokollierung ausschließen. Konfigurieren Sie diese Zweige mit nummerierten UCR-Variablen wie ldap/logging/exclude1, ldap/logging/exclude2 und ldap/logging/exclude3. Setzen Sie jede Variable auf ein DN-Fragment, zum Beispiel cn=temporary,cn=univention,$ldap_base. Standardmäßig schließt der Logger den temporären Objektcontainer cn=temporary,cn=univention aus.
Nachdem Sie diese UCR-Variablen geändert haben, starten Sie den Univention Directory Listener-Dienst neu, wie in Listing 3.4 gezeigt. Prüfen Sie dann das Ergebnis in /var/log/univention/directory-logger.log, indem Sie ein Objekt in einem ausgeschlossenen Zweig ändern und bestätigen, dass die Logdatei keinen neuen Eintrag für diese Änderung enthält.
$ systemctl restart univention-directory-listener.service
Das Paket univention-directory-logger schreibt Logeinträge nach /var/log/univention/directory-logger.log. Listing 3.5 zeigt das Format der Logeinträge.
START
Old Hash: […]
DN:[…]
ID: […]
Modifier: […]
Timestamp: […]
Action: […]
Old Values:
[…]
New Values:
[…]
END
Die Felder in Listing 3.5 haben die folgenden Bedeutungen:
Old Hash:Kennzeichnet die Hashsumme des vorherigen Datensatzes.
DN:Kennzeichnet den Distinguished Name (DN) des LDAP-Objekts.
ID:Kennzeichnet die Transaktions-ID für Listener/Notifier.
Modifier:Kennzeichnet den Distinguished Name (DN) des ändernden Kontos.
Timestamp:Zeigt den Zeitstempel im Format
dd.mm.yyyy hh:mm:ssan.Action:Kennzeichnet, ob die Aktion das Objekt hinzufügt, ändert oder löscht.
Old Values:Listet die vorherigen Attributwerte auf. Dieses Feld ist leer, nachdem Nubus ein Objekt hinzugefügt hat.
New Values:Listet die neuen Attributwerte auf. Dieses Feld ist leer, nachdem Nubus ein Objekt gelöscht hat.
Nubus berechnet für jeden protokollierten Datensatz eine Hashsumme und schreibt sie in die daemon.info Facility des Syslog-Dienstes.
UCS 4.4 erratum 536 fügt die Transaktions-ID des Eintrags als Präfix vor jeder Zeile in /var/log/univention/directory-logger.log hinzu, wie in Listing 3.6 gezeigt. Auf Systemen mit einer älteren Paketversion von univention-directory-logger behält das Paket standardmäßig das bisherige Verhalten ohne Präfix bei. Setzen Sie den Wert der UCR-Variable ldap/logging/id-prefix auf yes, um das Präfix zu aktivieren. Mit dieser Transaktions-ID können Sie zusammengehörige Zeilen für Log-Analysen und Monitoring korrelieren.
ID 342: START
ID 342: Old Hash: 70069d51a7e2e168d7c7defd19349985
ID 342: DN: uid=Administrator,cn=users,dc=example,dc=com
ID 342: ID: 342
ID 342: Modifier: cn=admin,dc=example,dc=com
ID 342: Timestamp: 15.04.2020 09:20:40
ID 342: Action: modify
ID 342:
ID 342: Old values:
ID 342: description: This is a description test
ID 342: entryCSN: 20200415091936.317108Z#000000#000#000000
ID 342: modifyTimestamp: 20200415091936Z
ID 342:
ID 342: New values:
ID 342: description: This is a description test
ID 342: entryCSN: 20200415092040.430976Z#000000#000#000000
ID 342: modifyTimestamp: 20200415092040Z
ID 342: END
3.3.2.2. Zeitüberschreitung für inaktive LDAP-Verbindungen#
Die UCR-Variable ldap/idletimeout definiert die Dauer der Zeitüberschreitung für inaktive LDAP-Verbindungen in Sekunden. Wenn Sie den Wert auf 0 setzen, erzwingt der Server keine Zeitüberschreitung. Standardmäßig beträgt die Zeitüberschreitung sechs Minuten.
3.3.2.3. Tägliches Backup von LDAP-Daten#
Ein Cron-Job sichert die LDAP-Verzeichnisdaten täglich auf dem Primary Directory Node und auf allen Backup Directory Node-Systemen. Wenn Sie Samba verwenden, sichert der Cron-Job auch dessen Datenverzeichnis.
Das System speichert LDAP-Daten im LDIF-Format in /var/univention-backup/ mit Dateinamen nach dem Muster ldap-backup_DATE.ldif.gz. Nur der Benutzer root kann diese Dateien lesen. Samba-Dateien speichert das System in /var/univention-backup/samba/.
Verwenden Sie die UCR-Variable backup/clean/max_age, um festzulegen, wie lange das System alte Backup-Dateien aufbewahrt. Wenn Sie backup/clean/max_age auf 365 setzen, löscht das System Backup-Dateien, die älter als 365 Tage sind. Wenn Sie die Variable nicht setzen, löscht das System alte Backup-Dateien nicht automatisch. Prüfen Sie nach dem Backup, dass in /var/univention-backup/ eine neue Backup-Datei mit Zeitstempel vorhanden ist. Wenn Sie Samba verwenden, prüfen Sie außerdem, dass in /var/univention-backup/samba/ eine neue Backup-Datei vorhanden ist.
3.3.2.4. LDAP-Server neu starten#
Um den LDAP-Server neu zu starten, verwenden Sie den Befehl in Listing 3.7. Während des Neustarts ist der LDAP-Server vorübergehend nicht verfügbar.
$ systemctl restart slapd.service
3.3.3. Zugriffskontrolle#
Dieser Abschnitt beschreibt Einstellungen für die LDAP-Zugriffskontrolle, anonymen Zugriff, verschachtelte Gruppen und delegierte Passwortrücksetzungen.
3.3.3.1. Konfiguration der LDAP-Zugriffskontrolle#
Serverseitige Access Control Lists (ACLs) steuern den Zugriff auf Informationen im LDAP-Verzeichnis. Die zentrale Konfigurationsdatei /etc/ldap/slapd.conf definiert diese ACLs. Die Univention Configuration Registry verwaltet diese Konfiguration.
Eine Vorlage aus mehreren Dateien verwaltet slapd.conf. Um ACL-Elemente hinzuzufügen, erstellen oder erweitern Sie eine Vorlage in /etc/univention/templates/files/etc/ldap/slapd.conf.d/ zwischen 60univention-ldap-server_acl-master und 70univention-ldap-server_acl-master-end. Sie können auch die vorhandenen UCR-Vorlagen erweitern. Informationen dazu, wie Sie vorhandene UCR-Vorlagen ändern, finden Sie unter UCR-Vorlagen anpassen.
Nachdem Sie die Vorlage geändert haben, führen Sie ucr commit /etc/ldap/slapd.conf aus. Führen Sie dann LDAP-Server neu starten aus. Überprüfen Sie die ACL-Änderung mit einem Testkonto mit Zugriff und einem Testkonto ohne Zugriff.
Wenn Sie LDAP-ACL-Erweiterungen als Teil von Softwarepaketen bereitstellen, können Sie sie paketieren und über ein Univention Directory Listener-Modul an alle LDAP-Server in der Domäne verteilen. Weitere Informationen finden Sie unter Packaging LDAP ACL Extensions in Univention Developer Reference [6].
3.3.3.2. Anonymer Lesezugriff#
Standardmäßig erlaubt eine neue Installation von Nubus für UCS keinen anonymen Zugriff auf das LDAP-Verzeichnis. Verwenden Sie die UCR variable ldap/acl/read/anonymous, um zu steuern, ob der LDAP-Server anonymen Lesezugriff erlaubt. Verwenden Sie die UCR variable ldap/acl/read/ips, um anonymen Lesezugriff nur von bestimmten IP-Adressen zu erlauben.
Nachdem Sie diese UCR-Variablen geändert haben, führen Sie LDAP-Server neu starten aus. Testen Sie anschließend den anonymen Zugriff von einem erlaubten und von einem nicht erlaubten Client.
Nachdem sich ein Benutzer am LDAP-Server authentifiziert hat, kann dieser Benutzer alle Attribute seines eigenen Benutzerkontos lesen.
Das interne Konto mit der Root-DN hat ebenfalls vollständigen Schreibzugriff.
Nubus für UCS enthält standardmäßig auch zusätzliche ACLs. Diese ACLs sperren den Zugriff auf sensible Attribute, zum Beispiel Benutzerpasswörter, und definieren die Zugriffsregeln, die das System für den Betrieb benötigt, zum Beispiel den Zugriff auf Computerkonten während der Anmeldung. Nur Mitglieder der Gruppe Domain Admins können diese sensiblen Informationen lesen oder schreiben.
3.3.3.3. Umgang mit verschachtelten Gruppen#
Nubus für UCS unterstützt verschachtelte Gruppen. Verwenden Sie die UCR-Variable ldap/acl/nestedgroups, um verschachtelte Gruppen für LDAP-ACLs zu deaktivieren. Das Deaktivieren verschachtelter Gruppen kann Verzeichnisabfragen beschleunigen, aber LDAP-ACLs werten dann die Mitgliedschaft in verschachtelten Gruppen nicht mehr aus.
Nachdem Sie diese UCR-Variable geändert haben, führen Sie LDAP-Server neu starten aus. Testen Sie anschließend den Zugriff mit einem Konto, das Berechtigungen über eine verschachtelte Gruppe erhält.
Siehe auch
- Verschachtelte Gruppen
für weitere Informationen über verschachtelte Gruppen.
3.3.3.4. Delegation des Rechts zum Zurücksetzen von Benutzerpasswörtern#
Um das Zurücksetzen von Passwörtern zu delegieren, installieren Sie das Paket univention-admingrp-user-passwordreset. Anweisungen zur Paketinstallation finden Sie unter Installation mittels Management UI oder Installation über die Befehlszeile. Installieren Sie das Paket auf dem Primary Directory Node und den Backup Directory Nodes. Während der Installation startet der LDAP-Server neu und ist vorübergehend nicht verfügbar. Das Paket führt ein Join-Skript aus, das die Gruppe User Password Admins erstellt, falls diese Gruppe noch nicht existiert.
Zusätzliche LDAP-ACLs geben Mitgliedern dieser Gruppe die Berechtigung, die Passwörter anderer Benutzer zurückzusetzen. Das Paket aktiviert diese ACLs während der Installation. Wenn Sie statt User Password Admins eine andere Gruppe verwenden möchten, setzen Sie den Distinguished Name (DN) dieser Gruppe in der UCR-Variable ldap/acl/user/passwordreset/accesslist/groups/dn.
Standardmäßig kann nur der Benutzer Administrator auf das Benutzer Modul zugreifen. Während der Installation erstellt das Paket die Richtlinie default-user-password-admins und verknüpft sie mit den Mitgliedern der Gruppe User Password Admins.
So erlauben Sie das delegierte Zurücksetzen von Passwörtern:
Fügen Sie jeden delegierten Administrator der konfigurierten Delegationsgruppe hinzu.
Weisen Sie die Richtlinie
default-user-password-adminsoder eine gleichwertige Richtlinie dem LDAP-Container zu, in dem Sie das Zurücksetzen von Passwörtern erlauben möchten.
Nachdem Sie die Konfiguration abgeschlossen haben, können Mitglieder der Delegationsgruppe Passwörter für Benutzer im zugewiesenen Container zurücksetzen. Diese Richtlinie erlaubt Gruppenmitgliedern außerdem, nach Benutzern zu suchen und alle Attribute eines Benutzerobjekts anzuzeigen. Wenn ein Benutzer ohne ausreichende LDAP-Zugriffsrechte versucht, andere Attribute als das Passwort zu ändern, verweigert der Univention Directory Manager die Änderung und zeigt die Meldung Zugriff verweigert an.
Weitere Informationen zur Gruppenmitgliedschaft finden Sie unter Reiter Gruppen - Benutzerverwaltung. Weitere Informationen zur Richtlinienzuweisung und delegierten Verwaltung finden Sie unter Richtlinien zuweisen und Delegierte Administration für Verwaltungsmodule.
Sie können das Zurücksetzen von Passwörtern über diese Gruppe für sensible Benutzer oder Gruppen verhindern, zum Beispiel für Administratoren der Domäne. Verwenden Sie die UCR-Variablen ldap/acl/user/passwordreset/protected/uid und ldap/acl/user/passwordreset/protected/gid, um geschützte Benutzer und Gruppen zu definieren. Trennen Sie mehrere Werte durch Kommas.
Nachdem Sie diese UCR-Variablen geändert haben, führen Sie LDAP-Server neu starten aus. Prüfen Sie anschließend, dass delegierte Administratoren keine Passwörter für einen geschützten Benutzer oder für ein Mitglied einer geschützten Gruppe zurücksetzen können. Standardmäßig erlaubt diese Delegation Gruppenmitgliedern nicht, Passwörter von Mitgliedern der Gruppe Domain Admins zu ändern.
Wenn Sie beim Ändern eines Passworts Zugriff auf zusätzliche LDAP-Attribute benötigen, fügen Sie die Attributnamen zur UCR-Variable ldap/acl/user/passwordreset/attributes hinzu. Verwenden Sie eine kommagetrennte Liste von LDAP-Attributnamen. Eine Standardinstallation von Nubus für UCS setzt diese Variable bereits für den Standardablauf zum Zurücksetzen von Passwörtern. Fügen Sie Attribute nur hinzu, wenn Ihr Arbeitsablauf während Passwortänderungen zusätzliche LDAP-Attribute erfordert.
Nachdem Sie diese UCR-Variable geändert haben, führen Sie LDAP-Server neu starten aus. Prüfen Sie anschließend, dass der Arbeitsablauf zum Zurücksetzen von Passwörtern für delegierte Administratoren weiterhin funktioniert.
Siehe auch
- Benutzer Modul
im Nubus Handbuch 1.x [4] für Informationen über das Verwaltungsmodul Users.
- Reiter Gruppen - Benutzerverwaltung.
im Nubus Handbuch 1.x [4] für Referenzinformationen über die Registerkarte Gruppen im Verwaltungsmodul Users.
- Richtlinien zuweisen
im Nubus Handbuch 1.x [4] für Informationen zur Richtlinienzuweisung.
3.3.4. Client-Zugriff und Interoperabilität#
Dieser Abschnitt beschreibt LDAP-Befehlszeilenwerkzeuge, die Integration von Name Service Switch und das Verhalten des Verzeichnisdienstes mit Samba in Nubus für UCS.
3.3.4.1. LDAP-Befehlszeilenwerkzeuge#
Zusätzlich zum LDAP-Zugriff in der Management UI können Sie mit mehreren Programmen über die Befehlszeile auf das LDAP-Verzeichnis zugreifen.
Das Werkzeug univention-ldapsearch vereinfacht authentifizierte Suchen im LDAP-Verzeichnis. Geben Sie einen Suchfilter als Argument an. Das Beispiel in Listing 3.8 sucht nach dem Benutzer Administrator anhand der Benutzer-ID.
$ univention-ldapsearch uid=Administrator
Der Befehl slapcat speichert die aktuellen LDAP-Daten in einer Textdatei im LDIF-Format. Das Beispiel in Listing 3.9 schreibt die Daten in ldapdata.txt.
$ slapcat -f /etc/ldap/slapd.conf > ldapdata.txt
3.3.4.2. Name Service Switch und LDAP-NSS-Modul#
Der Name Service Switch in der GNU-C-Standardbibliothek bietet eine modulare Schnittstelle zur Auflösung der Namen von Benutzern, Gruppen und Rechnern.
Standardmäßig verwendet Nubus für UCS das LDAP-NSS-Modul, um auf Domänendaten wie Benutzerinformationen zuzugreifen. Das Modul fragt den in der UCR-Variable ldap/server/name angegebenen LDAP-Server ab. Wenn dieser Server nicht verfügbar ist, kann das Modul den in ldap/server/addition angegebenen Server abfragen.
Die UCR-Variable nssldap/bindpolicy steuert, wie sich das Modul verhält, wenn der LDAP-Server nicht verfügbar ist. Standardmäßig versucht das Modul erneut, eine Verbindung herzustellen. Wenn Sie die Variable auf soft setzen, versucht das Modul es nicht erneut. Diese Einstellung verbessert die Startleistung des Systems in einer isolierten Testumgebung.
3.3.4.3. Konfiguration des Verzeichnisdienstes bei Verwendung von Samba/AD#
Standardmäßig akzeptiert der OpenLDAP-Server Anfragen auf den Ports 7389 und 7636 zusätzlich zu den Standardports 389 und 636.
Wenn Sie Samba/AD verwenden, belegt der Samba/AD-Domain-Controller-Dienst die Ports 389 und 636. In diesem Fall verwendet OpenLDAP nur die Ports 7389 und 7636. univention-ldapsearch verwendet automatisch den Standardport.