PAM

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page PAM and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

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.
Notiz
PAM bietet keine Dienstleistungen für Berechtigungen an. In der Regel erfolgen Berechtigungen innerhalb einer Anwendung. Einige Anwendungen unterstützen gruppenbasierte Berechtigungen (wenn Sie Mitglied einer Gruppe sind, können Sie die entsprechenden Berechtigungen erhalten). Ein verbreiteter (aber nicht so häufiger als PAM) Ansatz ist die Unterstützung von NSS (Name Service Switch). NSS ähnelt PAM in seinen Gestaltungsprinzipien. Tatsächlich werden Berechtigungen auf Linux-Systemen über die NSS-Bibliotheken abgewickelt.

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:

DATEI /etc/pam.d/someserviceBeispiel-PAM-Konfigurationsdatei für einen Dienst namens "someservice"
# Authentication
auth         required        pam_env.so
auth         required        pam_ldap.so
# Account management
account      required        pam_ldap.so
# Password management
password     required        pam_ldap.so
# Session management
session      optional        pam_loginuid.so
session      required        pam_selinux.so close
session      required        pam_env.so
session      required        pam_log.so level=audit
session      required        pam_selinux.so open multiple
session      optional        pam_mail.so

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 pam_env.so 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.

Control Description
required Das bereitgestellte PAM-Modul muss erfolgreich sein, damit der gesamte Dienst (z. B. Authentifizierung) erfolgreich ist. Wenn ein PAM-Modul ausfällt, werden noch andere PAM-Module aufgerufen (obwohl bereits sicher ist, dass der Dienst selbst abgelehnt wird).
requisite Das bereitgestellte PAM-Modul muss erfolgreich sein, damit der gesamte Dienst erfolgreich ist. Im Gegensatz zu required wird die Kontrolle sofort zurückgegeben, wenn das PAM-Modul ausfällt, und der Dienst selbst wird abgelehnt.
sufficient Wenn das bereitgestellte PAM-Modul erfolgreich ist, wird der gesamte Dienst gewährt. Der Rest der PAM-Module wird nicht geprüft. Wenn jedoch das PAM-Modul ausfällt, wird der Rest der PAM-Module behandelt, und der Ausfall dieses bestimmten PAM-Moduls wird ignoriert.
optional Der Erfolg oder Misserfolg dieses bestimmten PAM-Moduls ist nur wichtig, wenn es das einzige Modul im Stack ist.

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 /etc/pam.d/ 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 (/lib/security oder /lib64/security).

PAM und Gentoo

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

Siehe auch

  • PAM (Sicherheitshandbuch)
  • PAM ssh agent module Artikel, in dem erläutert wird, wie ein benutzerdefiniertes PAM-Modul installiert und konfiguriert wird, das sich über die SSH-Public-Key-Infrastruktur authentifiziert
  • The Google authenticator In diesem Artikel wird erläutert, wie Sie die Authentifizierungsanwendung von Google für die Authentifizierung über PAM installieren und verwenden

Weiterführendes Material