Inhaltsverzeichnis
Zusammenfassung
PAM (engl. Pluggable Authentication Modules) wird unter Linux verwendet, um bei der Authentifizierung zwischen Benutzer und Anwendung zu vermitteln. PAM-Module stehen zentral zur Verfügung und können von jeder Applikation aufgerufen werden. Wie diese modulare Authentifizierung konfiguriert wird und wie sie arbeitet, ist Inhalt dieses Kapitels.
Systemadministratoren und Entwickler möchten den Zugriff auf bestimmte Systembereiche oder die Nutzung bestimmter Funktionalitäten einer Anwendung beschränken. Ohne PAM würde dies bedeuten, dass alle Anwendungen immer wieder an neue Authentifizierungsschemen wie LDAP oder Samba angepasst werden müssten. Dieses Vorgehen ist zeitraubend und fehleranfällig. Löst man hingegen die Authentifizierung von der Anwendung und delegiert sie an zentrale Module, entfallen diese Nachteile. Soll ein neues Authentifizierungsschema angewandt werden, muss lediglich ein PAM-Modul angepasst/entwickelt werden, auf das die Anwendung zurückgreifen kann.
Für jedes Programm, das PAM nutzt, liegt eine eigene Konfigurationsdatei
unter /etc/pam.d/<Programmname>.
In diesen Dateien ist festgelegt, welche PAM-Module zur Benutzerauthentifizierung
verwendet werden sollen. Globale Konfigurationsdateien der meisten
PAM-Module unter /etc/security legen
das genaue Verhalten dieser Module fest (Beispiele:
pam_env.conf, pam_pwcheck.conf,
pam_unix2.conf, time.conf).
Eine Anwendung, die ein PAM-Modul nutzt, ruft einen bestimmten
Satz an PAM-Funktionen auf, die die Informationen aus den verschiedenen
Konfigurationsdateien verarbeiten und das Ergebnis an die aufrufende
Anwendung weiterleiten.
Eine Zeile einer PAM-Konfigurationsdatei baut sich aus maximal vier Spalten auf:
<Modultyp> <Kontroll-Flag> <Modulpfad> <Optionen>
PAM-Module werden stapelweise abgearbeitet. Die verschiedenen Module haben unterschiedliche Aufgaben. Ein Modul übernimmt die Passwortprüfung, ein anderes prüft, von woher der Zugriff erfolgt und ein weiteres fragt benutzerspezifische Systemeinstellungen ab.
PAM kennt vier verschiedene Typen von Modulen:
authModule dieses Typs dienen der Überprüfung, ob der Benutzer authentisch ist. Diese Überprüfung geschieht traditionell durch Passwortabfrage, kann aber auch per Chipkarte oder über Prüfung eines biometrischen Merkmals (Fingerabdruck, Irisscan) erfolgen.
accountModule dieses Typs überprüfen, ob der Benutzer berechtigt ist, den angefragten Dienst überhaupt zu benutzen. So sollte sich zum Beispiel niemand mit abgelaufenem Account auf einem System einloggen können.
passwordModule dieses Typs dienen der Änderung des Authentifizierungsmerkmals. Dies ist in den meisten Fällen ein Passwort.
sessionModule dieses Typs sind zur Verwaltung und Konfiguration von Benutzer-Sessions gedacht. Diese Module werden vor und nach der Authentifizierung gestartet, um Loginversuche zu protokollieren und dem Benutzer seine eigene Umgebung zuzuweisen (Mailzugang, Home-Verzeichnis, Systemlimits usw.)
Die zweite Spalte enthält die Kontroll-Flags, mit denen die gewünschten Module aufgerufen werden:
required
Das Modul muss erfolgreich abgearbeitet werden, damit die
Authentifizierung fortschreiten kann. Bei Fehlschlagen eines
required Moduls werden noch alle anderen Module
dieses Typs abgearbeitet, bevor der Benutzer eine Meldung über das
Fehlschlagen seines Authentifizierungsversuchs erhält.
requisite
Diese Module müssen ebenso wie die required Module
erfolgreich abgearbeitet werden. Bei einem Fehlschlag erhält der
Benutzer unmittelbares Feedback und es werden keine weiteren Module mehr
abgearbeitet. Im Erfolgsfall werden weitere Module genau wie bei
required abgearbeitet. Dieses Flag kann als ein
einfacher Filter eingesetzt werden, um bestimmte Bedingungen abzufragen,
die für eine korrekte Authentifizierung notwendig sind.
sufficient
Wird ein Modul dieses Typs erfolgreich abgearbeitet, erhält das
aufrufende Programm sofort eine Erfolgsmeldung und es werden keine
weiteren Module mehr abgearbeitet, wenn kein voranstehendes
required-Modul fehlgeschlagen ist. Schlägt ein
sufficient-Modul fehl, hat dies keine Folgen und die
folgenden Module werden der Reihe nach weiter abgearbeitet.
optionalErfolg oder Fehlschlag hat keinerlei Auswirkung. Diese Eigenschaft wird zum Beispiel bei Modulen verwendet, die anzeigen sollen, ob ein Benutzer E-Mail erhalten hat, aber keine weiteren Auswirkungen haben.
Wenn diese Flag benutzt wird, wird die als Argument angegebene Datei hier eingefügt.
Der Modulpfad wird nicht explizit angegeben, wenn die Module im
Standardverzeichnis /lib/security
(bzw. unter /lib64/security bei
allen von SUSE LINUX unterstützten 64-bit Plattformen) zu finden sind. Als
vierter Eintrag kann einem Modul noch eine Option wie zum Beispiel
debug (Debugmodus) oder nullok (leere
Passwörter sind erlaubt) übergeben werden.