PAM-Konfiguration von sshd

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

account required        pam_unix2.so

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.