ubuntuusers.de

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:

AusdruckBeispielwertKommentar
Hostldap.ubuntuusers.deDie Host-Adresse vom LDAP Server, die IP (hier 10.0.0.2) statt des Hostnamens beschleunigt die Authentifizierung geringfügig.
BASEDNdc=ubuntuusers,dc=deSuchbasis auf dem Server (engl. Base Distinguished Name)
ROOTBINDDNcn=Administrator,dc=ubuntuusers,dc=deDer LDAP Server Administrator Account Name
ldap_version3Heute meist Version 3, allerdings ist Version 2 des LDAP Protokolls noch vertreten.
secretgeheimesPWdas 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> 

Diese Revision wurde am 12. November 2013 18:08 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, System