Authentifizierung mit PAM

Inhaltsverzeichnis

19.1. Struktur einer PAM-Konfigurationsdatei
19.2. PAM-Konfiguration von sshd
19.3. Konfiguration von PAM-Modulen
19.4. Konfigurieren von PAM mit pam-config
19.5. Weiterführende Informationen

Zusammenfassung

Während des Authentifizierungsprozesses verwendet Linux PAM (Pluggable Authentication Modules, einfügbare Authentifizierungsmodule) als Schicht für die Vermittlung zwischen Benutzer und Anwendung. PAM-Module sind systemweit verfügbar, sodass sie von jeder beliebigen Anwendung angefordert werden können. In diesem Kapitel wird beschrieben, wie der modulare Authentifizierungsmechanismus funktioniert und wie er konfiguriert wird.

Häufig möchten Systemadministratoren und Programmierer den Zugriff auf bestimmte Teile des Systems einschränken oder die Nutzung bestimmter Funktionen einer Anwendung begrenzen. Ohne PAM müssen die Anwendungen bei jedem neu eingeführten Authentifizierungsmechanismus, wie LDAP, Samba oder Kerberos, angepasst werden. Dieser Prozess ist jedoch sehr zeitaufwändig und fehleranfällig. Eine Möglichkeit, diese Nachteile zu vermeiden, ist eine Trennung zwischen den Anwendungen und dem Authentifizierungsmechanismus und das Delegieren der Authentifizierung an zentral verwaltete Module. Wenn ein neues Authentifizierungsschema erforderlich ist, genügt es, ein geeigneterf PAM-Modus für die Verwendung durch das betreffende Programm anzupassen oder zu schreiben.

Jedes Programm, das mit dem PAM-Mechanismus arbeitet, verfügt über eine eigene Konfigurationsdatei im Verzeichnis /etc/pam.d/programmname. Mit diesen Dateien werden die für die Authentifizierung verwendeten PAM-Module definiert. Darüber hinaus sind im Verzeichnis /etc/security globale Konfigurationsdateien für PAM-Module gespeichert, in denen die genaue Verhaltensweise der Module definiert ist (Beispiele: pam_env.conf und time.conf). Jede Anwendung, die ein PAM-Modul verwendet, ruft eine Reihe von PAM-Funktionen auf, mit denen dann die Informationen in den verschiedenen Konfigurationsdateien verarbeitet und das Ergebnis an die anfordernde Anwendung zurückgegeben wird.

Zur Vereinfachung der Erstellung und Verwaltung von PAM-Modulen stehen Dateien mit gängigen Standardkonfigurationen für die Funktionen auth, account, password und session bereit. Diese werden den PAM-Konfigurationen der einzelnen Anwendungen entnommen. Aktualisierungen der globalen PAM-Konfigurationsmodule in common-* werden daher auf alle PAM-Konfigurationsdateien übertragen. Die manuelle Aktualisierung jeder einzelnen PAM-Konfigurationsdatei durch den Administrator entfällt somit.

Die globalen, allgemeinen PAM-Konfigurationsdateien werden mit dem Tool pam-config verwaltet. Dieses Tool fügt der Konfiguration automatisch neue Module hinzu, ändert die Konfiguration vorhandener Module oder löscht einzelne Module oder Optionen aus den Konfigurationen. Manuelle Vorgänge bei der Verwaltung der PAM-Konfigurationen werden dadurch minimiert oder gar nicht mehr benötigt.

Struktur einer PAM-Konfigurationsdatei

Jede Zeile in einer PAM-Konfigurationsdatei enthält maximal vier Spalten:

<Type of module> <Control flag> <Module path> <Options>
  

PAM-Module werden als Stapel verarbeitet. Die unterschiedlichen Modultypen dienen verschiedenen Zwecken. So wird beispielsweise mit einem Modul das Passwort und mit einem anderen Modul der Standort überprüft, von dem aus auf das System zugegriffen wird. Mit einem dritten Modul können beispielsweise benutzerspezifische Einstellungen abgelesen werden. PAM sind ungefähr vier verschiedene Modultypen bekannt:

auth

Dieser Modultyp dient der Überprüfung der Authentizität des Benutzers. Dies erfolgt in der Regel über die Abfrage des Passworts, es kann jedoch auch mithilfe einer Chipkarte oder biometrischer Daten (z. B. Fingerabdruck oder Scannen der Iris) erreicht werden.

Konto

Mit Modulen dieses Typs wird überprüft, ob der Benutzer allgemein zur Verwendung des angeforderten Diensts berechtigt ist. Solch eine Prüfung sollte beispielsweise durchgeführt werden, um sicherzustellen, dass keine Anmeldung mit einem Benutzernamen eines nicht mehr gültigen Kontos erfolgen kann.

password

Mit diesem Modultyp kann die Änderung eines Authentifizierungs-Token aktiviert werden. In den meisten Fällen handelt es sich hierbei um ein Passwort.

session

Mit diesem Modultyp werden Benutzersitzungen verwaltet und konfiguriert. Sie werden vor und nach der Authentifizierung gestartet, um Anmeldeversuche in Systemprotokollen aufzuzeichnen und die spezielle Umgebung des Benutzers (Mailkonten, Home-Verzeichnis, Systemgrenzen usw.) zu konfigurieren.

Die zweite Spalte enthält Steuerflaggen, mit denen das Verhalten der gestarteten Module beeinflusst wird:

required

Ein Modul mit dieser Flagge muss erfolgreich verarbeitet werden, damit die Authentifizierung fortgesetzt werden kann. Wenn ein Modul mit der Flagge required ausfällt, werden alle anderen Module mit derselben Flagge verarbeitet, bevor der Benutzer eine Meldung bezüglich des Fehlers beim Authentifizierungsversuch erhält.

requisite

Module mit dieser Flagge müssen ebenfalls erfolgreich verarbeitet werden, ähnlich wie Module mit der Flagge required. Falls jedoch ein Modul mit dieser Flagge ausfällt, erhält der Benutzer sofort eine entsprechende Rückmeldung und es werden keine weiteren Module verarbeitet. Bei einem erfolgreichen Vorgang werden die anderen Module nachfolgend verarbeitet genau wie alle Module mit der Flagge required. Die Flagge requisite kann als Basisfilter verwendet werden, um zu überprüfen, ob bestimmte Bedingungen erfüllt sind, die für die richtige Authentifizierung erforderlich sind.

sufficient

Wenn ein Modul mit dieser Flagge erfolgreich verarbeitet wurde, erhält die anfordernde Anwendung sofort eine Nachricht bezüglich des erfolgreichen Vorgangs und keine weiteren Module werden verarbeitet, vorausgesetzt, es ist zuvor kein Fehler bei einem Modul mit der Flagge required aufgetreten. Ein Fehler eines Moduls mit der Flagge sufficient hat keine direkten Auswirkungen auf die Verarbeitung oder die Verarbeitungsreihenfolge nachfolgender Module.

optional

Ein Fehler oder die erfolgreiche Verarbeitung hat bei diesem Modul keine direkten Folgen. Dies kann für Module sinnvoll sein, die nur der Anzeige einer Meldung (beispielsweise um dem Benutzer mitzuteilen, dass er eine E-Mail erhalten hat) dienen, ohne weitere Aktionen auszuführen.

include

Wenn diese Flagge festgelegt ist, wird die als Argument angegebene Datei an dieser Stelle eingefügt.

Der Modulpfad muss nicht explizit angegeben werden, solange sich das Modul im Standardverzeichnis /lib/security befindet (für alle von openSUSE® unterstützten 64-Bit-Plattformen lautet das Verzeichnis /lib64/security). Die vierte Spalte kann eine Option für das angegebene Modul enthalten, wie beispielsweise debug (zum Aktivieren der Fehlersuche) oder nullok (um die Verwendung leerer Passwörter zu ermöglichen).

[Note]Gemischte 64-Bit- und 32-Bit-Installationen

Bei Verwendung eines 64-Bit-Betriebssystems ist es möglich, auch eine Laufzeitumgebung für 32-Bit-Anwendungen zu implementieren. Installieren Sie in diesem Fall unbedingt beide Versionen der jeweiligen pam-Module, wenn Sie neue Module installieren.