Das RRZE betreibt eine redundante LDAP-Server Infrastruktur mit dem primären Zweck der Authentifizierung von Benutzern angebundener Linux-Systeme. Obwohl dies der Haupteinsatzzweck ist, können prinzipiell auch andere Systeme/Software die Benutzerbasis zur Authentifizierung nutzen.
Diese Anleitung beschreibt die Voraussetzungen zur Nutzung des LinuxLDAP und den grundlegenden Aufbau der Daten im Verzeichnisdienst, so dass eine eigenständige Konfiguration der jeweils anzubinden Systeme/Software möglich ist.
Bitte haben Sie Verständnis, dass die Linux-Gruppe keinen Support bei der korrekten Konfiguration Ihrer nicht-Linux Systeme oder Software leisten kann.
Vorbereitung
Bitte prüfen Sie die vorbereitenden Schritte bevor Sie versuchen einzelne Teile der Anleitung durchzuführen.
In der Regel müssen diese Voraussetzungen für ein sinnvolles Umsetzen der Anleitung erfüllt sein.
Prüfen der Voraussetzungen
Bevor Sie weiter vorgehen, sollten Sie prüfen ob eine Anbindung ihres Systems/Software überhaupt sinnvoll möglich ist bzw. ob Sie eine Maschinenkennung benötigen oder nicht.
Restriktionen
Der RRZE LinuxLDAP Server gewährt keinen Zugriff auf die Passwort-Hashes der Benutzer!
Das bedeutet, das eine Authentifizierung nur mittels LDAP-BIND als der jeweils zu authentifizierende Benutzer möglich ist.
Einige Anwendungen bieten nur die Möglichkeit eine Art Admin-Zugang zum LDAP Server zu konfigurieren, um dann auf diesem Wege das Passwort des Benutzers mit dem im LDAP abgelegten Passwort zu vergleichen. Zum Schutz der Daten unserer Benutzer können wir diese Art der Authentifizierung nicht unterstützen.
Benutzerkennung vs. Maschinenkennung
Nach erfolgreichem LDAP-BIND haben Sie lesenden Zugriff auf Ihren eigenen Benutzereintrag im LDAP (und einige Teilbäume mit frei verfügbaren Daten, die hier keine Rolle spielen).
Neben diversen linuxspezifischen Attributen enthält der Benutzereintrag ebenfalls eine Liste der Gruppenzugehörigkeiten des Benutzers.
Sofern es Ihre Anwendung erlaubt, könnten Sie so bereits eine Benutzerauthentifizierung und Rechtevergabe basierend auf den Gruppenattributen des Benutzers einrichten.
In der Regel benötigen die meisten Anwendungen nach dem Login via LDAP-BIND jedoch (leider) einen Benutzer, mit dem Sie nach dem Posix-Standard (RFC2307) die Gruppenzugehörigkeiten mittels einer Suche über alle verfügbaren Gruppen ermitteln können. Sollte das bei Ihnen ebenfalls der Fall sein, so benötigen Sie einer Maschinenkennung, welche diese Rechte besitzt (siehe nächster Absatz).
Maschinenkennung für LinuxLDAP erhalten
Zur Regulierung des Zugangs zum LinuxLDAP wird eine sog. Maschinenkennung verwendet.
Die Maschinenkennung enthält den FQDN der Maschine auf dem Ihre Dienste laufen sollen und kann für alle Dienste auf diesem Rechner zur Authentifizierung gegen den LinuxLDAP verwendete werden.
Verwenden Sie eine spezifische Maschinenkennung nicht auf anderen Systemen!
Sollten uns Zugriffe von IPs auffallen, deren Reverse-DNS Eintrag nicht zur Maschinenkennung passt, so behalten wir uns vor diese Kennungen zu sperren.
Um eine entsprechende Maschinenkennung zu erhalten bzw. selbst anlegen zu können benötigen Sie einen Zugang als IT-Betreuer zu unserer Rechnerverwaltung. Wie Sie diesen erhalten und eine Maschinenkennung mittels unseres Kommandozeilentools anlegen können ist unter Installation des rrzelinux CLI Tools beschrieben.
Sofern Sie nicht selbst IT-Betreuer an Ihrer Einrichtung sind können Sie sich den Zugang auch von einem IT-Betreuer Ihrer Einrichtung anlegen und die Zugangsdaten aushändigen lassen.
Empfohlene Software
Um sich einen Überblick über die Struktur und des Verzeichnisdienstes zu schaffen und ggf. zu konfigurierende Suchfilter testen zu können empfehlen wir die Installation des Apache Directory Studio (ApacheDS).
Der Download kann von der offiziellen Homepage unter http://directory.apache.org/studio/ erfolgen.
Wir empfehlen den Einsatz der letzten 1.x Version (1.5.3 zum Stand 12.07.2017), welche bei den „Older Versions“ unter http://directory.apache.org/studio/download-old-versions.html zu finden ist.
Anbindung
Im Folgenden wird kurz der Aufbau des Verzeichnisdienstes beschrieben und danach einige Tipps zur Anbindung einiger Software-Produkte gegeben.
Aufbau des Verzeichnisdienstes
Aus Sicherheitsgründen erlaubt der LinuxLDAP ausschließlich den SSL gesicherten Zugriff in den Varianten LDAPS
und STARTLS
.
Alle relevanten Daten zur Benutzerauthentifizierung und -authorisierung finden sich in den Teilbäumen people
und group
.
Daraus ergeben sich die folgenden Eckdaten:
LDAPS-URL | ldaps://linuxldap.rrze.uni-erlangen.de:636 |
STARTTLS-URL | ldap://linuxldap.rrze.uni-erlangen.de:389 |
BASE-DN | ou=linux,dc=rrze,dc=uni-erlangen,dc=de |
PEOPLE | ou=people,ou=linux,dc=rrze,dc=uni-erlangen,dc=de |
GROUP | ou=group,ou=linux,dc=rrze,dc=uni-erlangen,dc=de |
Benutzereinträge
Benutzereinträge befinden sich flach im Teilbaum people
.
Jeder Benutzer hat nach einem BIND Zugriff auf die Daten seines eigenen Eintrags.
Die wichtigsten Attribute sind:
uid | Benutzerkennung für Login |
fauMemberOf | Gruppenmitgliedschaften (voller DN) |
fauUidType | Art der Kennung („user“ entspricht der IdM-Hauptkennung) |
gecos | Name des Benutzers (siehe GECOS) |
Anmerkungen zum Attribut fauUidType
Neben der Hauptkennung existieren auch diverse Sonderkennungen wie kp
(Kontaktpersonen), wm
(Webmaster), fu
(Funktionskennungen), usw.
Diese sind „unpersönlich“ und können somit unter bestimmten Umständen an andere Personen weitergegeben werden.
Der Wert user
markiert persönliche IdM-Hauptkennungen. Diese bleiben für Ihre gesamte Lebenszeit mit derselben Person verbunden und können nicht weitergegeben werden.
In der Regel empfiehlt sich daher praktisch immer eine Filterung auf (fauUidType=user)
vorzunehmen, um nur einen Login mittels der IdM-Hauptkennung zuzulassen.
Gruppeneinträge
Gruppeneinträge befinden sich flach im Teilbaum group
.
Die wichtigsten Attribute sind:
cn | Gruppenname |
memberUid | Benutzerkennungen der Mitglieder |
Tipps zur Anbindung
Hier finden Sie eine Sammlung gängiger Konfigurationsparameter.
Die Sammlung kann in Zukunft ggf. noch wachsen.
Muster | |
Pattern für Benutzer Login / BIND | uid=${uid},ou=people,ou=linux,dc=rrze,dc=uni-erlangen,dc=de |
Basis | Filter | |
Suche nach validem Benutzer | ou=people,ou=linux,dc=rrze,dc=uni-erlangen,dc=de | (&(fauUidType=user)(uid=${uid})) |
Suche nach validem Benutzer mit Gruppe | ou=people,ou=linux,dc=rrze,dc=uni-erlangen,dc=de | (& (fauUidType=user)(uid=${uid})(fauMemberOf=cn=${groupName},ou=group,ou=linux,dc=rrze,dc=uni-erlangen,dc=de) ) |
Suche nach Gruppenmitgliedschaften | ou=group,ou=linux,dc=rrze,dc=uni-erlangen,dc=de | (memberUid=${uid}) |