36.2. PAM-Konfiguration von sshd

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.3. Standardkonfiguration für den Abschnitt account

account required        pam_unix2.so

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.