PAM/de

PAM, steht für Pluggable Authentication Modules (anknüpfbare Zugangs Module) und ist ein modularer Ansatz für Autorisation. Es ermöglicht (Drittanbieter-) Diensten, ein Authentifizierungsmodul für ihren Dienst bereitzustellen, das dann auf PAM-fähigen Systemen verwendet werden kann. Dienste, die PAM zur Authentifizierung verwenden, können diese Module sofort verwenden, ohne dass eine Neuerstellung erforderlich ist.

Einleitung
Die Authentifizierungsverwaltung (Teil der Zugriffsverwaltung) auf einem Linux-Server kann über PAM (Pluggable Authentication Modules) abgewickelt werden. Mit PAM müssen Dienste keine Authentifizierungsdienste selbst bereitstellen. Sie verlassen sich stattdessen auf die im System verfügbaren PAM-Module. Jeder Dienst kann eine andere PAM-Konfiguration verwenden, wenn er möchte, obwohl die Authentifizierung meistens von Diensten ähnlich gehandhabt wird. Durch den Aufruf von PAM-Modulen können Dienste die Zwei-Faktor-Authentifizierung sofort unterstützen, sofortige zentralisierte Authentifizierungs-Repositorys verwenden und vieles mehr.

PAM bietet eine flexible, modulare Architektur für die folgenden Dienste:


 * Authentifizierungsverwaltung - Überprüfung ob ein Benutzer, der versucht, ein Benutzerkonto zu authentifizieren, tatsächlich der Benutzer ist.
 * Kontenverwaltung - Überprüfung ob das Kennwort des Benutzers abgelaufen ist oder ob der Benutzer auf diesen Dienst zugreifen darf.
 * Sitzungsverwaltung - Ausführen bestimmter Aufgaben beim Anmelden oder Abmelden eines Benutzers (Überwachung, Einhängen von Dateisystemen usw.).
 * Passwortverwaltung - Eine Schnittstelle für das Zurücksetzen von Passwörtern und dergleichen.

Die Techniken hinter PAM
Administratoren die mit PAM arbeiten, erkennen ziemlich schnell die Grundsätze nach dem PAM funktioniert.

Die erste ist "Backend-Unabhängigkeit". Anwendungen, die PAM-fähig sind, müssen keine Logik für den Umgang mit Back-Ends enthalten, wie Datenbanken, LDAP-Dienste, Kennwortdateien, WS-Security-fähige Web-Services oder andere noch nicht erfundene Back-Ends. Durch die Verwendung von PAM trennen Anwendungen die Back-End-Integrationslogik von ihrer eigenen. Sie müssen lediglich PAM-Funktionen aufrufen.

Ein anderes Prinzip ist "Konfigurationsunabhängigkeit". Administratoren müssen nicht lernen, wie sie Dutzende verschiedener Anwendungen für die Interaktion mit einem LDAP-Server für die Authentifizierung konfigurieren. Stattdessen verwenden sie dieselbe Konfigurationsstruktur, die von PAM bereitgestellt wird.

Das abschließende Prinzip, das Teil des PAM-Namens ist, ist seine steckbare Architektur. Wenn neue Backends integriert werden müssen, muss der Administrator nur die Bibliothek für dieses Backend installieren (indem er im rechten Verzeichnis des Systems abgelegt wird) und dieses Modul konfigurieren (die meisten Module verwenden eine einzelne Konfigurationsdatei). Ab diesem Zeitpunkt ist das Modul für Anwendungen einsetzbar. Administratoren können die Authentifizierung für die Verwendung dieses Back-End konfigurieren und müssen die Anwendung normalerweise nur neu starten.

Wie funktioniert PAM
Anwendungen, die PAM mit der PAM-Bibliothek (libpam) verwenden möchten, rufen die erforderlichen Funktionen auf, die die oben genannten Dienste widerspiegeln. Ansonsten muss die Anwendung keine spezifischen Funktionen für diese Dienste implementieren, da dies alles von PAM gehandhabt wird. Wenn sich ein Benutzer beispielsweise gegenüber einer Webanwendung authentifizieren möchte, ruft diese Webanwendung PAM auf (Weitergabe der Benutzer-ID und möglicherweise eines Kennworts oder einer Anforderung) und überprüft die PAM-Rückgabe, um festzustellen, ob der Benutzer authentifiziert ist und Zugriff auf die Anwendung hat. Es ist PAMs Aufgabe, grundsätzlich herauszufinden, wogegen sie die Authentifizierung durchführen soll (z. B. eine zentrale Datenbank oder ein LDAP-Server).

Die Stärke von PAM besteht darin, dass jeder PAM-Module für die Integration in jeden PAM-fähigen Dienst oder jede Anwendung erstellen kann. Wenn ein Unternehmen einen neuen Dienst für die Authentifizierung freigibt, muss es lediglich ein PAM-Modul bereitstellen, das mit seinem Dienst interagiert. Anschließend kann jede Software, die PAM verwendet, sofort mit diesem Dienst arbeiten. Es ist nicht erforderlich, diese Softwaretitel neu zu erstellen oder zu verbessern.

Konfiguration
Ein weiterer wichtiger Aspekt von PAM ist, dass es die Verkettung mehrerer Module unterstützt. Schauen wir uns eine PAM-Konfigurationsdatei für einen unbenannten Dienst an:

Wir sehen, dass die Konfigurationsdatei in den vier von PAM unterstützten Servicedomänen strukturiert ist: Authentifizierung, Kontenverwaltung, Kennwortverwaltung und Sitzungsverwaltung.

Jeder der Abschnitte in der Konfigurationsdatei ruft ein oder mehrere PAM-Module auf. Beispielsweise setzt die Umgebungsvariable, die von nachfolgenden Modulen verwendet werden kann. Der vom PAM-Modul bereitgestellte Rückkehrcode zusammen mit der Steueranweisung (im obigen Beispiel erforderlich oder optional) ermöglicht PAM die Entscheidung, wie weiter verfahren werden soll.

Steueranweisungen
PAM unterstützt die folgenden Steueranweisungen.

Durch die Verkettung von Modulen können mehrere Authentifizierungen durchgeführt, mehrere Aufgaben beim Erstellen einer Sitzung ausgeführt werden und vieles mehr.

Verwalten der PAM-Konfigurationsdateien
Da die PAM-Konfigurationsdateien die Authentifizierungsschritte in einer Anwendung steuern, ist es äußerst wichtig, die Konfigurationsdateien sicher zu verwalten. Diese werden im Allgemeinen in gespeichert.

In größeren Unternehmen oder sicherheitsrelevanten Systemen sollte jede Änderung der PAM-Konfigurationsdateien ordnungsgemäß geprüft werden.

Dasselbe gilt für den Ort, an dem die PAM-Module selbst gespeichert werden ( oder ).

PAM und Gentoo
Anwendungen, die PAM bedingt unterstützen, verwenden das USE-Flag. Es ist zwar möglich, Gentoo-Systeme ohne PAM auszuführen (durch Setzen von ), in der Standardeinstellung ist jedoch die PAM-Unterstützung aktiviert.

When upgrading remote systems it is possible to leave the system inaccessible. To avoid this after an upgrade while being still logged in to the machine:


 * 1) check that logging is up and running
 * 2) check necessary configuration updates in  and
 * 3) check news items whether breaking changes were introduced, e.g. PAM related news Item
 * 4) check that changing passwords works flawlessly, e.g.  for root/ any user and cancel before actually changing the password
 * 5) restart SSH server in case it got updated
 * 6) check that a new login to the remote machine works

What could happen:


 * without logging errors during the checks cannot be analyzed
 * errors out because of PAM module errors
 * SSH prohobits login because of PAM misconfiguration/ module errors, e.g. plain connection closed
 * password policies changed, e.g. prohibiting root without password

Example of how to parse system configuration
In this forum post in 2021 given by GDH-gentoo, the configuration of a system is tracked down step-by-step, in order to find which service creates the directory on a user login.

Siehe auch

 * Artikel, in dem erläutert wird, wie ein benutzerdefiniertes PAM-Modul installiert und konfiguriert wird, das sich über die SSH-Public-Key-Infrastruktur authentifiziert
 * für den veralteten Vorgänger von
 * Artikel, in dem erläutert wird, wie ein benutzerdefiniertes PAM-Modul installiert und konfiguriert wird, das sich über die SSH-Public-Key-Infrastruktur authentifiziert
 * für den veralteten Vorgänger von
 * für den veralteten Vorgänger von
 * für den veralteten Vorgänger von
 * für den veralteten Vorgänger von

Weiterführendes Material

 * Working with PAM, ein Abschnitt im Gentoo Entwicklerhandbuch