15.4. Beispiele für PAM-Konfigurationsdateien

Eine Konfigurationsdatei einer PAM-Anwendung sieht z.B. wie folgt aus:

#%PAM-1.0
auth      required  pam_securetty.so
auth      required  pam_unix.so shadow nullok
auth      required  pam_nologin.so
account   required  pam_unix.so
password  required  pam_cracklib.so retry=3
password  required  pam_unix.so shadow nullok use_authtok
session   required  pam_unix.so

Die erste Zeile ist ein Kommentar, was durch das Hash-Zeichen (#) am Anfang der Zeile erkenntlich ist.

Die Zeilen zwei bis vier stellen drei Module in den Stack für die Authentifizierung bei der Anmeldung.

auth      required  pam_securetty.so

Wenn der Benutzer sich als Root anzumelden versucht, stellt dieses Modul sicher, dass das Terminal, an dem er sich anmeldet, in der Datei /etc/securetty aufgeführt ist, falls solch eine Datei existiert.

auth      required  pam_unix.so shadow nullok

Dieses Modul fragt den Benutzer nach einem Passwort und überprüft dieses Passwort anhand der in /etc/passwd und, falls vorhanden, in /etc/shadow gespeicherten Informationen. Das Modul pam_unix.so erkennt gespeicherte Shadow-Passwörter und verwendet sie zur Authentifizierung von Benutzern. Im Abschnitt 6.5 finden Sie weitere Informationen.

Das Argument nullok weist das Modul pam_unix.so an, ein leeres Passwort zuzulassen.

auth      required  pam_nologin.so

Das ist der letzte Schritt der Authentifizierung. Es wird geprüft, ob die Datei /etc/nologin existiert. Falls nologin existiert, und der Benutzer nicht als Root angemeldet ist, schlägt die Authentifizierung fehl.

AnmerkungAnmerkung
 

In diesem Beispiel werden alle drei auth Module überprüft, auch wenn schon beim ersten auth Modul Fehler auftreten. Der Grund dafür ist: wenn ein Benutzer weiß, weshalb seine Authentifizierung abgelehnt wurde, ist es für ihn einfacher, diese zu umgehen.

account   required  pam_unix.so

Dieses Modul übernimmt jegliche Prüfung des Benutzeraccounts. Wenn z.B. Shadow-Passwörter aktiviert worden sind, überprüft das Modul pam_unix.so, ob der Account abgelaufen ist oder ob der Benutzer keine Passwortänderung vorgenommen hat und die Nachfrist für eine Änderung abgelaufen ist.

password  required  pam_cracklib.so retry=3

Ist ein Passwort abgelaufen, fordert die Passwort-Komponente des pam_cracklib.so Moduls zur Eingabe eines neuen Passworts auf. Zusätzlich wird das neue Passwort getestet, um festzustellen, ob es einfach durch ein Wörterbuch-basiertes Programm zum Erkennen von Passwörtern erkannt werden kann. Schlägt der Test einmal fehl, hat der Benutzer aufgrund des Arguments retry=3 zwei weitere Möglichkeiten, ein besseres Passwort zu erstellen.

password  required  pam_unix.so shadow nullok use_authtok

Diese Zeile legt fest, dass bei einer Änderung des Benutzer-Passworts durch das Programm die password Komponente des pam_unix.so Moduls verwendet wird. Das passiert nur, wenn der Teil auth des pam_unix.so Moduls bestimmt, dass das Passwort geändert werden muss.

Das Argument shadow teilt dem Modul mit, beim Updaten eines Benutzer-Passworts ein Shadow-Passwort zu erstellen.

Das Argument nullok weist das Modul an, dem Benutzer zu erlauben sein Passwort von einem leeren Passwort zu ändern. Andernfalls wird ein Null-Passwort als Account-Sperre betrachtet.

Das letzte Argument dieser Zeile ist use_authtok und ein gutes Beispiel für die Wichtigkeit der Reihenfolge beim Stapeln von PAM-Modulen. Dieses Argument weist das Modul an, den Benutzer nicht zur Eingabe eines neuen Passworts aufzufordern. Stattdessen wird jedes Passwort akzeptiert, das von vorherigen Passwort-Modulen verwendet wurde. Auf diese Weise müssen allen neuen Passwörter den pam_cracklib.so Test für sichere Passwörter durchlaufen, bevor sie akzepiert werden.

session required pam_unix.so

Die letzte Zeile gibt an, dass das Modul pam_unix.so für die Verwaltung der Sitzung verwendet werden soll. Dieses Modul protokolliert bei jedem Start und Ende einer Sitzung den Benutzernamen und den Service-Typ in die Datei /var/log/messages. Wenn Sie weitere Funktionen benötigen, kann es durch das Stapeln mit anderen Sitzungsmodulen ergänzt werden.

Die nächste Beispielkonfigurationsdatei erläutert das auth Modulstapeln für den rlogin Dienst.

#%PAM-1.0
auth      required    pam_nologin.so
auth      required    pam_securetty.so
auth      required    pam_env.so
auth      sufficient  pam_rhosts_auth.so
auth      required    pam_stack.so service=system-auth

Zunächst überprüft pam_nologin.so, ob /etc/nologin existiert. Ist dies der Fall, kann sich niemand anmelden, mit Ausnahme des Rootbenutzers.

auth      required    pam_securetty.so

Anschließend verhindert pam_securetty.so, dass Root-Anmeldungen auf unsicheren Terminals vorgenommen werden können. Damit werden praktisch alle Root-Anmeldungen über rlogin aus Sicherheitsgründen verhindert.

TippTipp
 

Um sich als Root von einem Remote-Rechner aus anzumelden, benutzen Sie OpenSSH. Für mehr Informationen zum SSH Protokoll sehen Sie Kapitel 19.

auth      required    pam_env.so

Diese Zeile lädt das Modul pam_env.so, das die in /etc/security/pam_env.conf angegebenen Umgebungsvariablen festlegt.

auth      sufficient  pam_rhosts_auth.so

Das pam_rhosts_auth.so Modul authentifiziert den Benutzer unter Verwendung von .rhosts im Hauptverzeichnis des Benutzers. Sollte dies erfolgreich sein, wird PAM die Authentifizierung als erfolgreich ansehen. Sollte pam_rhosts_auth.so fehlschlagen, wird dieser Versuch der Authentifizierung ignoriert.

auth      required    pam_stack.so service=system-auth

Wenn die Authentifizierung des Benutzers durch pam_rhosts_auth.so gescheitert ist, führt das pam_stack.so Modul eine normale Passwort-Authentifizierung durch.

Das Argument service=system-auth bedeutet, dass der Benutzer die PAM-Konfiguration zur System- Authentifizierung in /etc/pam.d/system-auth durchlaufen muss.

TippTipp
 

Wenn Sie den Prompt beim Eingeben des Passworts nicht anzeigen möchten, nachdem die securetty Prüfung fehlgeschlagen ist, können Sie das pam_securetty.so Modul von required in requisite ändern.