LDAP Client Authentifizierung
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
In manchen Netzen gibt es einen LDAP-Server, der für die Authentifizierung zuständig ist. LDAP (Lightweight Directory Access Protocol) ist ein Protokoll für einen Verzeichnisdienst (eine Art Adressbuch). Es wird jedoch auch immer beliebter, LDAP für die Benutzerauthentifizierung oder für Konfigurationen von Diensten wie DHCP oder DNS zu benutzen. Wenn ein LDAP-Server im Netz bereits für die Authentifizierung läuft, soll diese Anleitung helfen, eine bestehende Ubuntu-Installation so zu konfigurieren, dass sich am LDAP-Server angemeldet werden kann.
Installation¶
Folgende Pakete müssen installiert [1] werden:
libnss-ldap
libpam-ldap
nscd (universe)
portmap
Die Pakete nscd und portmap sind Abhängigkeiten, welche unerlässlich sind, um sich an einem LDAP Server zu authentifizieren. Sie benötigen keine weitere Konfiguration.
Benutzung/Konfiguration¶
Bei der Installation der Pakete werden einige Daten wie cn des Administrators der LDAP-Datenbank abgefragt, ebenso wie Hostname/IP des LDAP-Servers. Diese können auch jederzeit nach der Installation verändert werden. Daher ist es am einfachsten, während der Installation die Abfragen einfach mit ⏎ zu bestätigen.
Vorüberlegungen¶
Bevor man sich an die Konfiguration macht, sollte man einige Informationen bereits wissen oder in Erfahrung gebracht haben:
Ausdruck | Beispielwert | Kommentar |
Host | ldap.ubuntuusers.de | Die Host-Adresse vom LDAP Server, die IP (hier 10.0.0.2) statt des Hostnamens beschleunigt die Authentifizierung geringfügig. |
BASEDN | dc=ubuntuusers,dc=de | Suchbasis auf dem Server (engl. Base Distinguished Name) |
ROOTBINDDN | cn=Administrator,dc=ubuntuusers,dc=de | Der LDAP Server Administrator Account Name |
ldap_version | 3 | Heute meist Version 3, allerdings ist Version 2 des LDAP Protokolls noch vertreten. |
secret | geheimesPW | das LDAP - Passwort des LDAP-Administrator-Benutzerkontos (ROOTBINDDN) |
Unterschied zwischen PAM LDAP-Modul und NSS-Modul¶
Es gibt grundsätzlich zwei Möglichkeiten, über die PAM das LDAP zu benutzen. Als erste Möglichkeit kann man das "pam_ldap"-Modul aus dem "libpam-ldap"-Paket nutzen. Bei dieser Methode versucht sich der Client bei der Passwort-Überprüfung auf dem LDAP-Server anzumelden. Bei der zweiten Möglichkeit werden die Passwort-"Hashes" vom LDAP-Server zum Client mit Hilfe von NSS exportiert. Bei dieser Methode wird dann das traditionelle "pam_unix"-Modul zur Authentifikation genutzt. Beide Methoden haben Vor- und Nachteile, "pam_ldap" würde beispielsweise das Ändern des Passworts vom Client aus ermöglichen.
PAM - Modul - Konfiguration¶
PAM (Pluggable Authentication Modules [for Linux]) ist eine praktische Sammlung von Modulen, die die Authentifizierung für Benutzer, aber auch Maschinen oder Dienste übernehmen. Folgend werden einige Module dahingehend verändert, damit eine erfolgreiche Benutzerauthentifizierung mittels LDAP möglich und effizient wird. Wenn ein Verzeichnis (/etc/pam.d/) existiert, ist in der Regel /etc/pam.conf leer, da alles modular konfiguriert wird, um individuell auf Wünsche der Authentifizierung eingehen zu können. Damit die Authentifizierung funktioniert, müssen die bestehenden Einträge in /etc/pam.d/common-* auskommentiert und folgende hinzugefügt werden:
/etc/pam.d/common-auth¶
auth sufficient pam_ldap.so auth required pam_unix.so use_first_pass nullok_secure
auth ist für die Sicherheit zuständig, d.h. ob der Benutzer, der er vorgibt zu sein, auch wirklich dieser ist und somit ein Passwort verlangt.
/etc/pam.d/common-account¶
account sufficient pam_ldap.so account required pam_unix.so use_first_pass # account [default=bad success=ok user_unknown=ignore] pam_ldap.so | Diese Eintrag sollte genommen werden falls man in der /etc/ldap.conf mit den Optionen pam_groupdn und pam_member_attribute arbeitet, da sonst diese Optionen nicht greifen.
account prüft die Berechtigung, ob ein Benutzer den Dienst verwenden darf oder ob vielleicht sein Passwort abgelaufen ist.
/etc/pam.d/common-password¶
password sufficient pam_ldap.so password required pam_unix.so use_first_pass nullok obscure min=4 max=8 md5
password spezifiziert, wie ein Passwort gewechselt wird und wie dieses zusammengesetzt werden muss.
/etc/pam.d/common-session¶
session required pam_unix.so session optional pam_foreground.so
session übernimmt alle wichtigen Prioritätsaufgaben und regelt die Prozesse wie das Zur-Verfügung-Stellen des Heimatverzeichnisses ("home").
/etc/ldap/ldap.conf¶
HOST 10.0.0.2 # IP des LDAP Servers BASE dc=ubuntuusers,dc=de # BASE DN
In der ldap.conf sind die wichtigsten LDAP-Angaben untergebracht, die weit ins Detail verfeinert werden können. Zunächst reicht es jedoch wenn, dort die Adresse des LDAP-Servers und die Suchbasis, in der man sich authentifizieren will, angegeben wird. Durch das Konfigurationsscript wird die URI des LDAP-Servers verlangt. Die Vorgabe in dieser Zeile lautet ldapi:///, anschließend wird die IP-Adresse (IP:Port) des LDAP-Servers verlangt, dabei muss ldapi:/// auf ldap:// geändert werden.
Ubuntu 8.04¶
Hier werden die Angaben, die bei der Installation gemacht werden, in die Datei /etc/ldap.conf geschrieben. Diese Datei kann auch problemlos weiter genutzt werden, sie bietet im Gegensatz zur /etc/ldap/ldap.conf mehr voreingestellte Optionen, die bei Bedarf einfach einkommentiert werden können. Die /etc/ldap/ldap.conf kann somit unberührt bleiben. Vor einem Neustart des Systems sollte aber auch hier die bind_policy auf soft gesetzt werden, da das System sonst nicht weiter bootet, wenn es den LDAP-Server nicht finden kann.
/etc/pam_ldap.conf¶
host 10.0.0.2 base dc=ubuntuusers,dc=de rootbinddn cn=Administrator,dc=ubuntuusers,dc=de # der Adminaccountname des LDAP Servers
Damit auch das LDAP-PAM-Modul weiß, wo es sich verbinden muss, werden hier ebenfalls Host, Suchbasis und Administratorkonto angegeben.
/etc/pam_ldap.secret¶
geheimesPW
Das Passwort des in rootbinddn angegebenen Administrators. Diese Datei sollte nicht für jeden lesbar sein!
NSS - Modul - Konfiguration¶
NSS (System Databases and Name Service Switch configuration) gibt im System an, wo sich welche Datenbanken (Aliase, Benutzer, Gruppen, Netzwerke...etc.) befinden und in welcher Reihenfolge sie abgefragt oder genutzt werden sollen. So kann man für jede Datenbank individuell angeben, wie der LookUp-Prozess funktionieren soll. (/etc/nsswitch.conf)
/etc/libnss-ldap.conf¶
host 10.0.0.2 base dc=ubuntuusers,dc=de ldap_version 3
Auch hier werden die Suchbasis und der Host angegeben.
/etc/libnss-ldap.secret¶
geheimesPW
Das Passwort sollte auch hier in einer Datei gespeichert sein, die vor fremden Zugriffen geschützt ist!
/etc/nsswitch.conf¶
Achtung!
Nachdem man die nsswitch.conf editiert hat, könnte kein sudo mehr erfolgreich sein, wenn man sich vertan hat oder etwas anderes nicht stimmt, denn dann möchte Ubuntu bereits auf den LDAP-Server zugreifen. Sorgfalt ist also geboten. Wenn man sich trotz aller Vorsicht ausgesperrt, hilft nur noch ein Start im Rettungsmodus oder von einer Live-CD, um den Fehler zu korrigieren oder die alte nsswitch.conf wiederherzustellen. Im Artikel Recovery Modus ist auch ein weiterer Hinweis, wie man an das Root-Filesystem gelangt, um Fehler zu korrigieren oder Einträge rückgängig zu machen.
passwd: files ldap group: files ldap shadow: files ldap hosts: files dns networks: files
Dienste neu laden¶
Damit der LDAP-Server von den Clients auch benutzt wird, müssen nach den Konfigurationsanpassungen einige Dienste neu gestartet werden:
1 2 3 | ~# /etc/init.d/nscd restart ~# /etc/init.d/portmap restart ~# /etc/init.d/libnss-ldap restart |
Anschließend wird der LDAP-Server zur Authentifizierung herangezogen.
Testen¶
Jetzt ist es an der Zeit, die Konfiguration zu testen.
getent passwd
Es sollten die Benutzerkonten vom LDAP-Repository angezeigt werden.
Funktionierts?
su <benutzerID des LDAP-Servers>