Betrachten Sie zum Verständnis der Theorie, auf der PAM basiert, die PAM-Konfiguration von sshd als praktisches Beispiel:
Beispiel 36.1. PAM-Konfiguration für sshd
#%PAM-1.0 auth include common-auth auth required pam_nologin.so account include common-account password include common-password session include common-session # Enable the following line to get resmgr support for # ssh sessions (see /usr/share/doc/packages/resmgr/README.SuSE) # session optional pam_resmgr.so fake_ttyname
Die typische PAM-Konfiguration einer Anwendung (in diesem Fall sshd) enthält
vier include-Anweisungen, die auf die Konfigurationsdateien von vier
Modultypen verweisen: common-auth,
common-account, common-password
und common-session. In diesen vier Dateien ist die
Standardkonfiguration für die einzelnen Modultypen gespeichert. Wenn Sie
diese Dateien aufnehmen, anstatt jedes Modul für die einzelnen
PAM-Awendungen separat aufzurufen, erhalten Sie automatisch eine
aktualisierte PAM-Konfiguration, wenn der Administrator die
Standardeinstellungen ändert. Vorher mussten alle Konfigurationsdateien für
alle Anwendungen manuell angepasst werden, wenn Änderungen an PAM
vorgenommen oder neue Anwendungen installiert wurden. Jetzt wird die
PAM-Konfiguration mithilfe von zentralen Konfigurationsdateien ausgeführt
und alle Änderungen werden automatisch über die PAM-Konfiguration der
einzelnen Dienste weitergegeben.
Mit der ersten include-Datei
(common-auth) werden zwei Module vom Typ
auth aufgerufen: pam_env und
pam_unix2. Siehe Beispiel 36.2, „Standardkonfiguration für den Abschnitt auth“.
Beispiel 36.2. Standardkonfiguration für den Abschnitt auth
auth required pam_env.so auth required pam_unix2.so
Mit dem ersten Modul, pam_env, wird die Datei
/etc/security/pam_env.conf geladen, um die in dieser
Datei angegebenen Variablen festzulegen. Hiermit kann die Variable
DISPLAY auf den richtigen Wert gesetzt werden, da
dem Modul pam_env der bekannt ist, von wo aus der
Anmeldevorgang stattfindet. Mit dem zweiten Modul,
pam_unix2, werden der Anmeldename und das Passwort des
Benutzers mit /etc/passwd und
/etc/shadow abgeglichen.
Wenn die in common-auth angegebenen Dateien erfolgreich
abgearbeitet wurden, wird mit dem dritten Modul
pam_nologin überprüft, ob die Datei
/etc/nologin vorhanden ist. Ist dies der Fall, darf
sich kein anderer Benutzer außer root anmelden. Der gesamte Stapel der
auth-Module wird abgearbeitet, bevor sshd eine
Rückmeldung darüber erhält, ob der Anmeldevorgang erfolgreich war. Wenn alle
Module des Stapels die Flagge required aufweisen, müssen
sie alle erfolgreich abgearbeitet werden, bevor sshd eine Meldung bezüglich
des positiven Ergebnisses erhält. Falls bei einem der Module ein Fehler
auftritt, wird der vollständige Modulstapel abgearbeitet und erst dann wird
sshd bezüglich des negativen Ergebnisses benachrichtigt.
Nachdem alle Module vom Typ auth erfolgreich abgearbeitet
wurden, wird eine weitere include-Anweisung verarbeitet, in diesem Fall die
in Beispiel 36.3, „Standardkonfiguration für den Abschnitt account“. Die Datei
common-account enthält lediglich ein Modul,
pam_unix2. Wenn pam_unix2 als
Ergebnis zurückgibt, dass der Benutzer vorhanden ist, erhält sshd eine
Meldung mit dem Hinweis auf diesen erfolgreichen Vorgang und der nächste
Modulstapel (password) wird verarbeitet, wie in Beispiel 36.4, „Standardkonfiguration für den Abschnitt password“ dargestellt.
Beispiel 36.4. Standardkonfiguration für den Abschnitt password
password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok #password required pam_make.so /var/yp
Auch hier beinhaltet die PAM-Konfiguration von sshd nur eine
include-Anweisung, die auf die Standardkonfiguration für
password Module in der Datei
common-password verweist. Diese Module müssen
erfolgreich abgearbeitet werden (Kontrollflag required),
wenn die Anwendung die Änderung eines Authentifizierungstokens anfordert.
Für die Änderung eines Passworts oder eines anderen Authentifizierungstokens
ist eine Sicherheitsprüfung erforderlich. Dies erfolgt über das Modul
pam_pwcheck. Das anschließend verwendete Modul
pam_unix2 überträgt alle alten und neuen Paswörter von
pam_pwcheck, sodass der Benutzer die Authentifizierung
nicht erneut ausführen muss. Dadurch ist es zudem unmöglich, die von
pam_pwcheck durchgeführten Prüfungen zu umgehen. Die
Module vom Typ password sollten immer dann verwendet
werden, wenn die vorherigen Module vom Typ account oder
auth so konfiguriert sind, dass bei einem abgelaufenen
Passwort eine Fehlermeldung angezeigt wird.
Beispiel 36.5. Standardkonfiguration für den Abschnitt session
session required pam_limits.so session required pam_unix2.so
Im letzten Schritt werden die in der Datei
common-session gespeicherten Module vom Typ
session aufgerufen, um die Sitzung gemäß den
Einstellungen für den betreffenden Benutzer zu konfigurieren.
pam_unix2 wird zwar erneut verarbeitet, hat jedoch
aufgrund der Option none, die in der entsprechenden
Konfigurationsdatei des Moduls pam_unix2.conf angegeben
ist, keine praktischen Konsequenzen. Mit dem Modul
pam_limits wird die Datei
/etc/security/limits.conf geladen, mit der
Nutzungseinschränkungen für bestimmte Systemressourcen definiert werden
können. Die session-Module werden beim Abmelden des
Benutzers ein zweites Mal aufgerufen.