PAM-Authentifizierung über LDAP

0 | 28204 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "PAM-Authentifizierung über LDAP" mit Ihrem Wissen!

Anzeige Hier werben

In diesem Artikel möchte ich die Einrichtung der Authentifizierung über LDAP unter Linux mithilfe von PAM beschreiben. Das wird beispielhaft an SSH geschehen. Jegliche andere Dienste (so auch die lokale Anmeldung) sollten identisch eingerichtet werden können.

Nötige Linux-Grundlagen

PAM

Mit PAM hat Linux das nötige Tool um die Authentifizierung durch andere Mechanismen als nur die normalen Dateien (/etc/passwd etc) zu ermöglichen. Mithilfe von pam_ldap ist auch eine Authentifizierung über LDAP möglich.

glibc/nsswitch.conf

Um User/Gruppen von IDs in Namen umwandeln zu können benutzt Linux normalerweise die Dateien /etc/passwd bzw. /etc/groups. Da diese Methode aber sehr schnell an ihre Grenzen gestoßen ist besitzt die glibc ein modulares System zum Laden der nötigen Informationen. In der Datei /etc/nsswitch.conf kann man angeben welche Module benutzt werden um welche Informationen zu laden. Neben Benutzern und Gruppen können hier auch Mail-Aliase, Hosts, und vieles mehr angegeben werden.

Für LDAP gibt es auch hier ein Modul (nss_ldap), welches die Benutzerinformationen über LDAP abruft und der glibc zurückliefert. Jedes Programm, das die glibc benutzt, kann somit die LDAP-Informationen benutzen, wie als wären sie lokal eingetragen. Da die glibc nahezu überall verwendet wird sollte das nahezu alle Programme eines Linux-Systems betreffen.

Konfiguration

OpenLDAP

Die Grundkonfiguration eines OpenLDAP-Servers wird in unserem Artikel Einrichtung von OpenLDAP hinreichend beschrieben, weshalb ich hier nicht auf die genauere Konfiguration eingehen werde. Für Linux/UNIX-Accounts ist es wichtig die Objekt-Klassen posixAccount bzw. posixGroup zu verwenden, welche sich im nis-Schema befinden.

Für die Verwendung eines entfernten LDAP-Servers ist es wichtig, dass dieser in der /etc/ldap.conf angegeben ist. Bei mir schaut die Konfiguration so aus:

 
Text
1
2
host ldap.webmasterpro.de
base dc=webmasterpro,dc=de # Basis DN, hier erden später die User/Gruppen gesucht
Anlegen der Benutzer

Um die Authentifizierung des Benutzers zu ermöglichen, muss die Objektklasse (objectClass) posixAccount zu einem bestehenden Objekt hinzugefügt werden, oder ein neues Objekt angelegt werden.

Hierbei werden zusätzlich zu den bestehenden Pflichtangaben (z.B. cn) folgende neue Angaben benötigt:

  • uid - Loginkennung des Benutzers.
  • uidNumber - Eindeutige ID des Benutzers.
  • gidNumber - Die ID der Hauptgruppe des Benutzers. Im Regelfall ist dies die ID der Gruppe "users".
  • homeDirectory - Das Heimatverzeichnis des Benutzers. Zum Beispiel /home/mustermann/.

Zusätzlich muss der Benutzer natürlich noch ein Passwort besitzen mit dem er sich Authentifizieren kann. Dieses wird im Attribut userPassword festgelegt. Hierbei empfiehlt es sich selbstverständlich, das Passwort zu verschlüsseln (siehe auch Artikel OpenLDAP sichern). Alle weiteren, durch das Schema posixUser, definierten Angaben sind Optional. Hier lohnt sich unter Umständen ein Blick in die Schemadokumentation, um weitere nützliche Angaben zu definieren.

Beispiel: LDIF Datei für einen Benutzer

Hinweis: Sollen sie Ihr bestehendes Login System ersetzen müssen Sie darauf achten, dass die Felder uidNumber und gidNumber mit den alten Daten übereinstimmen, da ansonsten der Zugriff auf bestehende Dateien Probleme bereiten könnte.

Anlegen der Gruppen

Für die Definition von Benutzergruppen ist die Objektklasse posixGroup zuständig. Sie benötigt als zusätzliche Pflichtangabe lediglich das Attribut gidNumber.

Um Benutzer zu Ihren Gruppen hinzuzufügen müssen sie das Attribut memberUid mit dem gewünschten Benutzernamen als Wert angeben. Dies ist allerdings nur für zusätzliche Gruppenmitgliedschaften notwendig.
Die Hauptgruppe wird wie im Abschnitt "Anlegen der Benutzer" definiert.

Beispiel: LDIF Datei für die Gruppe wheel

pam_ldap/nss_ldap

Die beiden Pakete müssen nur über den distributionseigenen Paketmanager installiert werden. Es ist keine spezielle Konfiguration nötig.

/etc/pam.d/sshd

Für die Konfiguration von PAM für SSH sollte die folgende Beispieldatei reichen. Hier wird LDAP verwendet und als Fallback die normale Authentifizierung benutzt. Die Datei selbst ist direkt aus dem bei pam_ldap beiliegenden Beispiel genommen (/kopiert). Mit PAM sind natürlich weitaus komplexere Konfigurationen nötig, für uns reicht aber hier ein einfaches Beispiel.

Beispielkonfiguration für PAM  
Text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#%PAM-1.0
auth       required     /lib/security/pam_nologin.so
auth       sufficient    /lib/security/pam_ldap.so
auth       required     /lib/security/pam_unix_auth.so try_first_pass
account    sufficient   /lib/security/pam_ldap.so
account    required     /lib/security/pam_unix_acct.so
password   required     /lib/security/pam_cracklib.so
password   sufficient   /lib/security/pam_ldap.so
password   required     /lib/security/pam_pwdb.so use_first_pass
session    required     /lib/security/pam_unix_session.so

/etc/nssswitch.conf

Hier muss eingestellt werden, dass zum Auflösen der Benutzer/Gruppen auch LDAP verwendet wird (auch, weil die normale Methode über Dateien nicht deaktiviert werden sollte). Hierzu sind die Einträge zu passwd, shadow und group zu ändern, wie im folgenden Beispiel gezeigt.

Nötige Änderungen an /etc/nssswitch.conf  
Text
1
2
3
passwd:      files ldap
shadow:      files ldap
group:       files ldap

Login per PAM

Nun kann man sich auf dem Rechner mit einem in LDAP eingetragenen Benutzer anmelden. Wichtig ist, dass eine Homeverzeichnis lokal vorhanden ist. Wie man dieses auch noch auf einen entfernten Server verlegen kann wird in einem späteren Artikel behandelt.

Weitere Artikel zu LDAP auf Webmasterpro


Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 2 Personen an der Seite "PAM-Authentifizierung über LDAP" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "PAM-Authentifizierung über LDAP" hier bearbeiten.

Mitarbeiter