LDAP:Authentifizierung
Aus KissDoc
Inhaltsverzeichnis |
Client-Einstellungen
Wenn wir auf Daten vom LDAP-Server zugreifen wollen, dann ist das OS selbst auch ein Client, selbst wenn wir uns auf dem selben Rechner befinden, logisch. Als aller erstes sollten wir die /etc/ldap/ldap.conf auf die richtigen Einstellungen prüfen:
BASE dc=mydomain, dc=de URI ldap://127.0.0.1
Diese Datei ist aber für das Prozedere der Benutzerverwaltung nicht entscheidend.
nsswitch.conf
Der Name Service Switch (NSS) ist eine Schicht innerhalb der C-Libraries des Betriebssystems, die es ermöglicht, Informationsdienste wie z.B. Accountdaten die normalerweise unter /etc/ zu finden sind, nun über unseren LDAP zu versorgen. Dies geschieht vollkommen transparent. Neben dem normalerweise genutzten NIS (Network Information System)
und DNS (Domain Name Service) kann anstelle dieser Dateien auch
ein LDAP-Verzeichnis verwendet werden, um z.B. Benutzerdaten, Gruppendaten,
IP-Dienste, etc. vorzuhalten. Das entsprechende LDAP-Schema ist in RFC2307 spezifiziert.
Die Datei /etc/nsswitch.conf regelt die Zugriffe auf die Daten, die normalerweise in /etc/ angesiedelt sind. Für unsere Belange sind das die Dateien passwd, group und shadow. Die Einträge in der Datei sehen Dabei ungefähr so aus:
passwd: compat group: compat shadow: compat hosts: files dns # usw.
Nach der Angabe des Service folgen die Datensysteme, die Abgefragt werden sollen (in der Reihenfolge). Dabei gilt ohne Angabe files als Standard. Das Schlüsselwort compat ist dabei allerdings kein Datensystem, sondern nur eine Anweisung, das innerhalb des Datensystem weitere Mappings und ähnliches erlaubt werden, genaures dazu im manual oder bei lug-eggenfelden.org. Um die Authentifizierung von den Dateien auf LDAP umzustellen, verändern wir später die config wie folgt.
passwd: ldap files compat group: ldap files compat shadow: ldap files compat
Damit wird zuerst der LDAP befragt, wenn der nix hat, dann wird in den Dateien gesucht.
Hinweis:
Eine Beispieldatei findet man auch in /usr/share/doc/libnss-ldap/examples/nsswitch.ldap.
Gewissensfrage: Warum aber überhaupt noch Dateien? Man könnte ja die Meinung vertreten, das ein Root-Passwort im LDAP nichts verloren hat. Schliesslich ist der LDAP als Netzwerkdienst verfügbar. Wir wollen also nur noch den root-Account in den Dateien belassen. Ausserdem hat das den Vorteil, daß sich root immer noch anmelden kann, wenn der LDAP nicht verfügbar ist.
In den Dateien passwd, shadow und group werden also alle Einträge, bis auch root, entfernt. Vorher vielleicht ein Backup machen, falls was schief läuft.
Achtung:
Damit ist die Authentifizierung auf LDAP noch nicht abgeschlossen. Ehe man hier die Umstellung vornimmt, sollte man sowieo noch ein paar root-Logins offenhalten. Sonst kann man sich leicht vom System ausschliessen.
Noch zu klären:
Aus Performance- und Sicherheitsgründen sollte man eventuell in der /etc/nsswitch die Einträge ldap und files vertauschen. Erstens ist ein lokaler Zugriff schneller. Zweitens müssen Informationen, die den User root betreffen nicht erst vom LDAP erfragt werden, der weiss es eh nicht. Der Grund, war es noch andersrum steht ist folgender: ein useradd und groupadd beschreibt immer noch die lokale Datei, anstatt der LDAP zu füttern. Ich hoffte mit der compat-Syntax ala
root:x:0:0:root/:/bin/bash +::::::
das Problem zu lösen, hat aber nicht funktioniert. Ich arbeite dran ... :-)
libnss-ldap
Wir benötigen des weiteren das Package libnss-ldap, für die LDAP-Unterstüzung des Name-Switch-Service (NSS). Während der Installation wird man nach ein Paar Einstellungen wie IP des LDAP, dn(distinguished name) und LDAP-Version (die 3 nehmen) gefragt. Nach der Installation existiert dann ein neues Configfile /etc/libnss-ldap.conf. Falls also in der /etc/nsswitch.conf irgendwo ldap auftaucht, muss das System schliesslich wissen, wie es auf den LDAP zugreifen soll. In der /etc/libnss-ldap.conf sind noch folgende Einträge zu setzen, falls diese nicht schon bei der Installation automatisch gesetzt wurden:
base dc=mydomain, dc=de ldap_version 3 rootbinddn cn=admin,dc=mydomain,dc=de
Die Option rootbinddn regelt, mit welchem Account sich der Benutzer root (der vom OS) am LDAP-Server authentfiziert. In unserem Beispiel wird sich also root als Benutzer cn=admin,dc=mydomain,dc=de am LDAP melden. Das entsprechende Passwort zu diesem LDAP-Account wird automatisch aus der Datei /etc/ldap.secret bezogen. Das die Datei eine 0600 Maske hat, versteht sich von selbst. Das Passwort selbst sollte auch mit dem Passwort aus der /etc/ldap/slapd.conf übereinstimmen.
Die Datei /etc/libnss-ldap.conf regelt unter anderem auch die Formate, wie die anfragenden Programme (z.B. login oder passwd) ihre benötigten Informationen auf die LDAP-Strukur mappen. Hier ist aber normalerweise nix weiter anzupassen, da die MigrationTools sich an die entsprechende Formate halten.
Hinweis: Wie in einigen Foren nachzulesen war, muss das Passwort in der /etc/ldap.secret im Klartext vorliegen. Wenn man es mit {cript} verschlüsselt ablegt, müssten die Passwörter im LDAP wiederum im Klartext vorliegen !!! Klingt komisch, is aber (scheinbar) so. So ein Mist.
Also noch ein Grund mehr, das root-Passwort nicht im LDAP zu speichern.
pam_ldap.conf
Die Datei /etc/pam_ldap.conf arbeitet ähnlich wie die /etc/libnss-ldap.conf, ist für die PAM-Module zuständig. Auch hier sind wieder die Zugriffseinstellungen zu setzen - und in welchem Format Passwörter behandelt werden sollen. Das Passwort für den Admin-Account wird auch hier von /etc/ldap.secret bezogen.
base dc=mydomain, dc=de ldap_version 3 rootbinddn cn=admin,dc=mydomain,dc=de pam_passwort crypt
LDAP-Support für PAM
Zum Schluss müssen wir noch den LDAP-Support für PAM einbinden. Dazu wird in den entsprechenden Dateien in /etc/pam.d/ das entsprechende LDAP-Modul am Anfang der Konfiguration eingefügt.

