Betrachten Sie zum Verständnis der Theorie, auf der PAM basiert, die PAM-Konfiguration von sshd als praktisches Beispiel:
Beispiel 19.1. PAM-Konfiguration für sshd
#%PAM-1.0 auth required pam_nologin.so auth include common-auth account include common-account password include common-password session required pam_loginuid.so session include common-session # Enable the following line to get resmgr support for # ssh sessions (see /usr/share/doc/packages/resmgr/README) #session optional pam_resmgr.so fake_ttyname
Das zuerst aufgerufene Modul ist pam_nologin
. Es prüft, ob die Datei /etc/nologin
existiert. Wenn ja, darf sich nur der Benutzer root
anmelden.
Die typische PAM-Konfiguration einer Anwendung (in diesem Fall sshd) enthält vier Anweisungen, die sich auf die Konfigurationsdateien von vier Modultypen beziehen: 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 jeweilige PAM-Konfiguration separat hinzuzufügen, 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.
Die erste include-Datei (common-auth
) ruft zwei Module des Typs auth
auf: pam_env.so
und pam_unix2.so
. Weitere Informationen hierzu finden Sie unter Beispiel 19.2, „Standardkonfiguration für den Abschnitt auth“.
Beispiel 19.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.
Der ganze Stapel von auth
-Modulen wird verarbeitet, bevor sshd Rückmeldungen darüber erhält, ob die Anmeldung erfolgreich war. Wenn alle Module des Stapels die Flagge 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 19.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 19.4, „Standardkonfiguration für den Abschnitt password“ dargestellt.
Beispiel 19.4. Standardkonfiguration für den Abschnitt password
password requisite pam_pwcheck.so nullok cracklib password required pam_unix2.so nullok use_authtok
Auch hier beinhaltet die PAM-Konfiguration von sshd nur eine include-Anweisung, die sich auf die Standardkonfiguration für password
-Module in der Datei common-password
bezieht. Diese Module müssen erfolgreich abgeschlossen werden (Steuerflaggen requisite
und 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 nach dem Ändern des Passworts nicht erneut ausführen muss. Mit dieser Prozedur ist es zudem unmöglich, die von pam_pwcheck
durchgeführten Prüfungen zu umgehen. Immer, wenn der account
- oder der auth
-Typ so konfiguriert sind, dass sie abgelaufene Passwörter melden, müssen auch die password
-Module verwendet werden.
Beispiel 19.5. Standardkonfiguration für den Abschnitt session
session required pam_limits.so session required pam_unix2.so session optional pam_umask.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. 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. Das Modul pam_unix2
wird erneut verarbeitet. Das Modul pam_umask
kann zur Festlegung der Dateimoduserstellungsmaske verwendet werden. Da dieses Modul mit dem Flag Optional
versehen ist, wirkt sich ein Fehler in diesem Modul nicht auf die erfolgreiche Ausführung des gesamten Sitzungsmodulstapels aus. Die session
-Module werden beim Abmelden des Benutzers ein zweites Mal aufgerufen.