Betrachten Sie zum Verständnis der Theorie, auf der PAM basiert, die PAM-Konfiguration von sshd als praktisches Beispiel:
Beispiel 16.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 16.2, „Standardkonfiguration für den Abschnitt auth
“.
Beispiel 16.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 Standort bekannt ist, an dem 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 aufgerufen 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 verarbeitet, bevor sshd eine Rückmeldung darüber erhält, ob der Anmeldevorgang erfolgreich war. Wenn alle Module des Stapels die Flag required
aufweisen, müssen sie alle erfolgreich verarbeitet 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 verarbeitet und erst dann wird sshd bezüglich des negativen Ergebnisses benachrichtigt.
Nachdem alle Module vom Typ auth
erfolgreich verarbeitet wurden, wird eine weitere include-Anweisung verarbeitet, in diesem Fall die in Beispiel 16.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 16.4, „Standardkonfiguration für den Abschnitt password
“ dargestellt.
Beispiel 16.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 abgeschlossen werden (Steuerflag required
), wenn die Anwendung die Änderung eines Authentifizierungs-Token anfordert. Für die Änderung eines Passworts oder eines anderen Authentifizierungs-Token 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 16.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.