So konfigurieren und verwenden Sie PAM unter Linux

Linux-PAM (kurz für Steckbare Authentifizierungsmodule (leistungsstark aus der Unix-PAM-Architektur) ist eine leistungsstarke Suite gemeinsam genutzter Bibliotheken, mit denen ein Benutzer dynamisch bei Anwendungen (oder Diensten) in einem Linux-System authentifiziert wird.

Es integriert mehrere Low-Level-Authentifizierungsmodule in eine High-Level-API, die Anwendungen bei der dynamischen Authentifizierung unterstützt. Auf diese Weise können Entwickler unabhängig vom zugrunde liegenden Authentifizierungssystem Anwendungen schreiben, für die eine Authentifizierung erforderlich ist.

Viele moderne Linux-Distributionen unterstützen Linux-PAM (im Weiteren bezeichnet als “PAM“) standardmäßig. In diesem Artikel wird erläutert, wie Sie Advanced konfigurieren PAM im Ubuntu und CentOS Systeme.

Bevor wir fortfahren, beachten Sie Folgendes:

  • Als Systemadministrator ist es am wichtigsten zu beherrschen, wie PAM-Konfigurationsdateien die Verbindung zwischen Anwendungen (Diensten) und den steckbaren Authentifizierungsmodulen (PAMs) definieren, die die eigentlichen Authentifizierungsaufgaben ausführen. Sie müssen die interne Arbeitsweise von PAM nicht unbedingt verstehen.
  • PAM hat das Potenzial, die Sicherheit Ihres Linux-Systems ernsthaft zu verändern. Eine fehlerhafte Konfiguration kann den Zugriff auf Ihr System teilweise oder vollständig deaktivieren. Zum Beispiel ein versehentliches Löschen einer oder mehrerer Konfigurationsdateien unter /etc/pam.d/* und / oder /etc/pam.conf kann Sie aus Ihrem eigenen System aussperren!

Das Überprüfen eines Programms ist PAM-fähig

Zu beschäftigen PAMmuss eine Anwendung / ein Programm “PAM bewusst“; Es muss speziell für die Verwendung von PAM geschrieben und kompiliert worden sein. Um herauszufinden, ob ein Programm „PAM-bewusst”Oder nicht, überprüfen Sie, ob es mit der PAM-Bibliothek kompiliert wurde ldd Befehl.


Zum Beispiel sshd:

$ sudo ldd /usr/sbin/sshd | grep libpam.so

    libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)

So konfigurieren Sie PAM unter Linux

Die Hauptkonfigurationsdatei für PAM ist /etc/pam.conf und das /etc/pam.d/ Das Verzeichnis enthält die PAM-Konfigurationsdateien für jede PAM-fähige Anwendung / jeden PAM-fähigen Dienst. PAM ignoriert die Datei, wenn das Verzeichnis vorhanden ist.

Die Syntax für die Hauptkonfigurationsdatei lautet wie folgt. Die Datei besteht aus einer Liste von Regeln, die in einer einzelnen Zeile geschrieben sind (Sie können Regeln mithilfe von erweitern “” Escapezeichen) und Kommentare werden vorangestellt “#” markieren und bis zum nächsten Zeilenende verlängern.

Das Format jeder Regel ist eine durch Leerzeichen getrennte Sammlung von Token (bei den ersten drei wird die Groß- und Kleinschreibung nicht berücksichtigt). Wir werden diese Token in den folgenden Abschnitten erklären.

service type control-flag module module-arguments 

wo:

  • Bedienung: tatsächlicher Anwendungsname.
  • Art: Modultyp / Kontext / Schnittstelle.
  • Kontrollflagge: Gibt das Verhalten der PAM-API an, falls das Modul seine Authentifizierungsaufgabe nicht erfolgreich ausführen kann.
  • Modul: der absolute Dateiname oder relative Pfadname der PAM.
  • Modulargumente: durch Leerzeichen getrennte Liste von Token zur Steuerung des Modulverhaltens.

Die Syntax jeder Datei in /etc/pam.d/ ähnelt der Hauptdatei und besteht aus Zeilen der folgenden Form:

type control-flag module module-arguments

Dies ist ein Beispiel für eine Regeldefinition (ohne Modulargumente) in der /etc/pam.d/sshd Datei, die Nicht-Root-Anmeldungen nicht zulässt, wenn / etc / nologin existiert:

account required pam_nologin.so

Grundlegendes zu PAM-Verwaltungsgruppen und Kontrollflags

PAM Authentifizierungsaufgaben sind in vier unabhängige Verwaltungsgruppen unterteilt. Diese Gruppen verwalten verschiedene Aspekte der Anforderung eines typischen Benutzers nach einem eingeschränkten Dienst.

Ein Modul ist einem dieser Verwaltungsgruppentypen zugeordnet:

  • Konto: Dienste zur Kontobestätigung bereitstellen: Ist das Kennwort des Benutzers abgelaufen?; Ist diesem Benutzer der Zugriff auf den angeforderten Dienst gestattet?
  • Authentifizierung: Authentifizieren Sie einen Benutzer und richten Sie Benutzeranmeldeinformationen ein.
  • Passwort: sind für die Aktualisierung der Benutzerkennwörter verantwortlich und arbeiten mit Authentifizierungsmodulen zusammen.
  • Session: Verwalten von Aktionen, die zu Beginn und am Ende einer Sitzung ausgeführt werden.

PAM ladbare Objektdateien (die Module) befinden sich im folgenden Verzeichnis: / lib / security / oder / lib64 / security abhängig von der Architektur.

Das wird unterstützt Kontrollflags sind:

  • Requisit: Fehler gibt sofort die Kontrolle an die Anwendung zurück und gibt die Art des ersten Modulfehlers an.
  • erforderlich: Alle diese Module sind erforderlich, um erfolgreich zu sein libpam um den Erfolg an die Anwendung zurückzugeben.
  • ausreichend: Wenn alle vorhergehenden Module erfolgreich waren, führt der Erfolg dieses Moduls zu einer sofortigen und erfolgreichen Rückkehr zur Anwendung (ein Fehler dieses Moduls wird ignoriert).
  • Optional: Der Erfolg oder Misserfolg dieses Moduls wird im Allgemeinen nicht aufgezeichnet.

Zusätzlich zu den oben genannten Schlüsselwörtern gibt es zwei weitere gültige Kontrollflags:

  • einschließen: Fügen Sie alle Zeilen eines bestimmten Typs aus der Konfigurationsdatei ein, die als Argument für dieses Steuerelement angegeben wurde.
  • Teilstapel: Fügen Sie alle Zeilen eines bestimmten Typs aus der Konfigurationsdatei ein, die als Argument für dieses Steuerelement angegeben wurde.

So beschränken Sie den Root-Zugriff auf den SSH-Dienst über PAM

Als Beispiel konfigurieren wir, wie PAM verwendet wird, um den Root-Benutzerzugriff auf ein System über SSH- und Anmeldeprogramme zu deaktivieren. Hier möchten wir den Root-Benutzerzugriff auf ein System deaktivieren, indem wir den Zugriff auf Login- und SSHD-Dienste einschränken.

Wir können die verwenden /lib/security/pam_listfile.so Modul, das große Flexibilität bei der Einschränkung der Berechtigungen bestimmter Konten bietet. Öffnen und bearbeiten Sie die Datei für den Zieldienst in der /etc/pam.d/ Verzeichnis wie gezeigt.

$ sudo vim /etc/pam.d/sshd
OR
$ sudo vim /etc/pam.d/login

Fügen Sie diese Regel in beiden Dateien hinzu.

auth    required       pam_listfile.so 
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

Erklären der Token in der obigen Regel:

  • auth: ist der Modultyp (oder Kontext).
  • erforderlich: ist ein Steuerflag, das bedeutet, dass das Modul, wenn es verwendet wird, bestanden werden muss, da sonst das Gesamtergebnis fehlschlägt, unabhängig vom Status anderer Module.
  • pam_listfile.so: ist ein Modul, mit dem Dienste basierend auf einer beliebigen Datei verweigert oder zugelassen werden können.
  • onerr = erfolgreich: Modulargument.
  • item = Benutzer: Modulargument, das angibt, was in der Datei aufgeführt ist und auf das überprüft werden soll.
  • Sinn = leugnen: Modulargument, das die Aktion angibt, die ausgeführt werden soll, wenn sie in einer Datei gefunden wird. Wenn das Element NICHT in der Datei gefunden wird, wird die entgegengesetzte Aktion angefordert.
  • file = / etc / ssh / verweigerte Benutzer: Modulargument, das eine Datei angibt, die ein Element pro Zeile enthält.

Als nächstes müssen wir die Datei erstellen / etc / ssh / verweigerte Benutzer und fügen Sie den Namen hinzu Wurzel drin:

$ sudo vim /etc/ssh/deniedusers

Speichern Sie die Änderungen, schließen Sie die Datei und legen Sie die erforderlichen Berechtigungen fest:

$ sudo chmod 600 /etc/ssh/deniedusers

Von nun an wird die PAM nach der oben genannten Regel angewiesen, die / etc / ssh / verweigerte Benutzer Datei und verweigern Sie jedem aufgelisteten Benutzer den Zugriff auf die SSH- und Anmeldedienste.

So konfigurieren Sie Advanced PAM unter Linux

Um komplexere PAM-Regeln zu schreiben, können Sie valid verwenden Kontrollflags in der folgenden Form:

type [value1=action1 value2=action2 …] module module-arguments

Wo valueN entspricht dem Rückkehrcode der Funktion, die in dem Modul aufgerufen wird, für das die Zeile definiert ist. Unterstützte Werte finden Sie online PAM-Administratorhandbuch. Ein spezieller Wert ist der Standardwert, der alle nicht explizit erwähnten Wert-Ns impliziert.

Das actionN kann eine der folgenden Formen annehmen:

  • ignorieren: Wenn diese Aktion mit einem Stapel von Modulen verwendet wird, trägt der Rückgabestatus des Moduls nicht zum Rückgabecode bei, den die Anwendung erhält.
  • Schlecht: gibt an, dass der Rückkehrcode als Hinweis auf den Ausfall des Moduls angesehen werden sollte. Wenn dieses Modul als erstes im Stapel ausfällt, wird sein Statuswert für den gesamten Stapel verwendet.
  • die: Entspricht Bad, beendet jedoch möglicherweise den Modulstapel und PAM kehrt sofort zur Anwendung zurück.
  • OK: Dies weist PAM an, dass der Systemadministrator der Ansicht ist, dass dieser Rückkehrcode direkt zum Rückkehrcode des gesamten Modulstapels beitragen sollte.
  • getan: gleichwertig OK Möglicherweise wird jedoch der Modulstapel beendet und PAM kehrt sofort zur Anwendung zurück.
  • N (eine vorzeichenlose Ganzzahl): gleichwertig OK kann aber über den nächsten springen N. Module im Stapel.
  • Zurücksetzen: Diese Aktion löscht den gesamten Speicher des Status des Modulstapels und startet mit dem nächsten gestapelten Modul neu.

Jedes der vier Schlüsselwörter: erforderlich; Requisit; ausreichend; und optional, haben einen äquivalenten Ausdruck in Bezug auf die [...] Syntax, mit der Sie kompliziertere Regeln schreiben können:

  • erforderlich:: [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
  • Requisit:: [success=ok new_authtok_reqd=ok ignore=ignore default=die]
  • ausreichend:: [success=done new_authtok_reqd=done default=ignore]
  • Optional:: [success=ok new_authtok_reqd=ok default=ignore]

Das Folgende ist ein Beispiel aus einer modernen CentOS 7 System. Betrachten wir diese Regeln aus dem /etc/pam.d/postlogin PAM-Datei:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
session     [success=1 default=ignore] pam_succeed_if.so service !~ gdm* service !~ su* quiet
session     [default=1]   pam_lastlog.so nowtmp showfailed
session     optional      pam_lastlog.so silent noupdate showfailed

Hier ist eine weitere Beispielkonfiguration aus dem /etc/pam.d/smartcard-auth PAM-Datei:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        [success=done ignore=ignore default=die] pam_pkcs11.so nodebug wait_for_card
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    required      pam_pkcs11.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

Weitere Informationen finden Sie in der pam.d Manpage:

$ man pam.d 

Eine ausführliche Beschreibung der Syntax der Konfigurationsdatei und aller PAM-Module finden Sie in der Dokumentation für Linux-PAM.

Zusammenfassung

PAM ist eine leistungsstarke High-Level-API, mit der Programme, die sich auf die Authentifizierung verlassen, authentische Benutzer für Anwendungen in einem Linux-System benötigen. Es ist mächtig, aber sehr schwierig zu verstehen und zu benutzen.

In diesem Artikel haben wir erklärt, wie Sie erweiterte Funktionen von PAM in Ubuntu und CentOS konfigurieren. Wenn Sie Fragen oder Kommentare haben, die Sie teilen möchten, verwenden Sie das unten stehende Feedback-Formular.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *