Dieser Artikel richtet sich an Kandidaten zur ergänzenden Vorbereitung des zweiten Teils der Prüfung LPIC-2 des Linux Professional Institutes LPI. Er betrachtet in kurzer Form einige Begriffe und Schlüsselfunktionen im Zusammenhang mit PAM (Artikel als PDF).
PAM (Pluggable Authentication Modules) ist eine modulare Methode der Authentifizierung, auf die von den verschiedensten Diensten zugegriffen werden kann. Programme wie login, ftp, su, cron, cups, samba, sshd u.v.m. können sich auf PAM stützen. Ein großer Vorteil von PAM ist, dass nicht jedes Programm seine eigene Authentifizierungsmethode implementieren muss. Dies reduziert nicht nur den Aufwand, sondern auch das Riskio der Kompromitierung. Würde eine Anwendung ohne PAM-Authentifizierung die Authentifizierungsmethode wechseln, so müsste das Programm neu kompiliert werden. Achtung! Eine unbedachte bzw. fehlerhafte Änderung an der PAM-Konfiguration kann dazu führen, dass man aus dem System komplett ausgesperrt wird. Deshalb immer eine zweite Konsole offen halten, bevor man die neue Konfiguration auf der ersten Konsole testet.
Konfiguration
Wegen seines modularen Aufbaus ist PAM vielseitig und flexibel einsetzbar. Jede Anwendung bzw. jeder Dienst, der PAM nutzt, hat eine eigene Konfigurationsdatei im Verzeichnis /etc/pam.d. Ersatzweise können auch alle Dienste in einer einzigen Datei, /etc/pam.conf konfiguriert werden (mit leicht abweichender Syntax), dann darf /etc/pam.d jedoch nicht existieren.
Ruft eine Anwendung PAM auf, bestimmt PAM mit der zugehörigen Konfigurationsdatei die Authentifizierungsmethode(n) und sendet den Erfolg bzw. Misserfolg des Versuchs an den Dienst zurück. Dabei wird die Datei Zeile für Zeile abgearbeitet. Jede Zeile besteht aus 3 bzw. 4 Spalten:
# Aufbau einer Konfigurationsdatei in /etc/pam.d:
Modul-Typ Control-Flag Modul-Pfad Argumente(optional)
Konfigurationsdateien bestehen i.d.R. aus mehreren Zeilen, die eine nach der anderen abgearbeitet werden. Betrachten wir zunächst nur eine einzelne Zeile aus /etc/pam.d/login. Modul-Typ ist “auth”, das Control-Flag ist “required”. Angewandt wird das Modul “securetty.so” ohne Argumente (leer)
# Modul-Typ Control-Flag Modul-Pfad Argumente (optional)
auth required pam_securetty.so
Modul-Typen:
Es gibt 4 Modul-Typen (auch PAM-Dienste genannt):
auth, account, session, password
Die genaue Aufgabe der Modultypen ist in der Manpage “pam.d” ausführlich erklärt. Hier nur jeweils eine kurze Beschreibung der Modultypen:
auth: Fragt den Nutzer nach einem Passwort und kann Gruppenrechte zuweisen
account: Kann den Zugang einschränken, z.B. aufgrund der Tageszeit oder von Systemressourcen
session: Vollzieht Aufgaben, bevor dem Nutzer Zugang gewährt wird z.B. das Einbinden von Verzeichnissen
password: Hält Authentifizierungsmechanismen auf dem neuesten Stand (fragt z.B. bei abgelaufenen Passwörtern die Angabe eines neuen an)
Control Flags (Wichtigkeit):
Die 4 wichtigsten “Control Flags” definieren, wie eine PAM-Bibliothek auf den Erfolg bzw. Misserfolg eines Authentifizierungsversuchs zu reagieren hat:
required, requisite, optional, sufficient
required: Die Bedingung für den assoziierten Modultyp muss erfüllt sein, damit die Authentifizierung als erfolgreich zurückgemeldet werden kann. Schlägt die Authentifizierung fehl, wird trotzdem die komplette Liste abgearbeitet, bevor das Ergebnis an den Nutzer rückgemeldet wird. Versucht sich z.B. der Nutzer susi als “suse” anzumelden, wird trotzdem erst das Passwort abgefragt. Erst dann wird “nicht erfolgreich” zurückgemeldet.
requisite: Wie required, nur wird die Liste nicht abgearbeitet,wenn die Authentifizierung fehlschlägt. Der Vorgang wird abgebrochen, die Rückmeldung erfolgt umgehend. Oft verwendet, wenn der Benutzer z.B. versucht, sich über ein unsicheres Medium einzuloggen. So wird verhindert, dass das Passwort gar nicht erst abgefragt wird und abgefangen werden kann.
optional: Wie der Name sagt. Optional, nicht für den Erfolg der Authentifizierung vorausgesetzt.
sufficient: Wurde die Bedingung des assoziierten Modul-Typs erfüllt, gilt die Authentifizierung als erfolgreich. Im Gegensatz zu required und requisite wird der Rest der Liste (Bedingungen) nicht mehr abgearbeitet.
Modul-Pfad und Argumente:
PAM-Module sind i.d.R. im Verzeichnis /lib/security zu Hause. Eine Auswahl wichtiger Module:
pam_unix.so
Standardmodul für die Authentifizierung
pam_cracklib.so
Prüft die Stärke eines Passworts
pam_limits.so
Setzt Ressourcenlimits für eine Session
pam_listfile.so
Regelt Zugriff aufgrund einer Liste
Dem Modul können spezifische Argumente mit auf den Weg gegeben werden. Ein Beispiel ist das Argument “nullok”, welches die Verwendung leerer Passwörter erlaubt.
Weiterführende Infos/Links:
man pam
man pam.d
LinuxNetzer Blog: Alle LPIC-202 Artikel

Artikel