[[Vorlage(Archiviert )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] 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 [[Vorlage(Tasten, enter)]] 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 === {{{#!vorlage Warnung 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: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: {{{#!code bash ~# /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. {{{#!vorlage Befehl getent passwd }}} Es sollten die Benutzerkonten vom LDAP-Repository angezeigt werden. Funktionierts? {{{#!vorlage Befehl su }}} # tag: Netzwerk, Server, System