GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Einführung in Pluggable Authentication Modules (PAM) in Linux

Pluggable Authentication Modules (PAM) gibt es seit 1997. Mir wurde beigebracht, dass PAM von Solaris von Sun stammt, und es scheint, dass die erste Verwendung und Popularisierung in Unternehmen dort stattfand. Laut einem Artikel aus dem Jahr 1997, den ich gefunden habe, war die erste vollständige Implementierung jedoch die Bereitstellung von Linux-PAM. Der Artikel ist weiterhin im Linux Journal verfügbar. Die Grundprämisse und Umsetzung haben sich seitdem nicht geändert. Es gibt einige neue Schlüsselwörter und viele neue Module, aber insgesamt ist der Prozess derselbe wie vor 20 Jahren.

Als A in PAM bedeutet, dass es bei PAM um Authentifizierung geht. Wenn Sie sich über eine Konsole oder über das Netzwerk mit SSH oder Cockpit bei einem System anmelden, ist in den meisten Fällen PAM beteiligt. Dabei spielt es keine Rolle, ob die Benutzerkonten lokal oder zentral geführt werden. So oft es verwendet wird, ist es nicht üblich, die PAM-Konfigurationsdateien direkt zu manipulieren. Andere Dienstprogramme erledigen das für Sie. Viele Änderungen werden bei der Installation vorgenommen, beispielsweise bei der Installation von sssd RPM oder mit ipa-client-install Nützlichkeit. Die häufigsten zusätzlichen Konfigurationen können von authconfig behandelt werden (RHEL7 und älter) oder authselect (RHEL8) oder sogar über die Cockpit-Weboberfläche. Die meisten Administratoren lernen nichts über PAM-Konfigurationsdateien, bis sie sich mit fortgeschrittenen Authentifizierungs- und Sicherheitsthemen befassen.

Was gewinnen wir mit PAM?

PAM trennt die Standard- und Spezialaufgaben der Authentifizierung von Anwendungen. Programme wie login , gdm , sshd , ftpd , und viele mehr möchten alle wissen, dass ein Benutzer der ist, für den sie sich ausgeben, aber es gibt viele Möglichkeiten, dies zu tun. Ein Benutzer kann einen Benutzernamen und ein Kennwort als Anmeldeinformationen angeben, die lokal oder remote mit LDAP oder Kerberos gespeichert werden können. Ein Benutzer kann auch einen Fingerabdruck oder ein Zertifikat als Anmeldeinformationen angeben. Es wäre mühsam, jeden Anwendungsentwickler zu bitten, die Authentifizierungsprüfungen für jede neue Methode neu zu schreiben. Ein Aufruf an PAM-Bibliotheken überlässt die Prüfungen Authentifizierungsexperten. PAM ist insofern steckbar, als wir unterschiedliche Anwendungen verschiedene Tests ausführen lassen können, und modular, insofern wir neue Methoden mit neuen Bibliotheken hinzufügen können.

Sehen wir uns die allgemeinen Schritte an, die unternommen werden, wenn sich ein lokal definierter Benutzer bei einer textbasierten Konsole anmeldet:

  • Die Anmeldeanwendung fordert zur Eingabe eines Benutzernamens und Passworts auf und erstellt dann eine libpam Authentifizierungsaufruf, um zu fragen:„Ist dieser Benutzer der, für den er sich ausgibt?“ Die pam_unix -Modul ist für die Überprüfung der lokalen Kontoauthentifizierung verantwortlich. Andere Module können ebenfalls überprüft werden, und das Ergebnis wird schließlich an den Anmeldeprozess zurückgegeben.
  • Der Anmeldeprozess fragt als Nächstes:„Darf dieser Benutzer eine Verbindung herstellen?“ und führt dann einen Kontoaufruf bei libpam durch . Die pam_unix Modul prüft beispielsweise, ob das Passwort abgelaufen ist. Andere Module prüfen möglicherweise Host- oder zeitbasierte Zugriffskontrolllisten. Eine Gesamtantwort wird an den Prozess zurückgegeben.
  • Wenn das Passwort abgelaufen ist, antwortet die Anwendung. Einige Anwendungen können den Benutzer einfach nicht anmelden. Der Anmeldevorgang fordert den Benutzer zur Eingabe eines neuen Passworts auf.
  • Um das Passwort zu verifizieren und an die richtige Stelle zu schreiben, macht der Anmeldeprozess einen Passwortaufruf an libpam . Die pam_unix Modul schreibt in den lokalen Schatten Datei. Es können auch andere Module aufgerufen werden, um die Passwortstärke zu überprüfen.
  • Wenn der Anmeldevorgang an dieser Stelle fortgesetzt wird, ist er bereit, die Sitzung zu erstellen. Ein Sitzungsaufruf an libpam ergibt pam_unix Modul, das einen Login-Zeitstempel in das wtmp schreibt Datei. Andere Module ermöglichen X11-Authentifizierung oder SELinux-Benutzerkontexte.
  • Beim Abmelden, wenn die Sitzung geschlossen wird, kann ein weiterer Sitzungsaufruf an libpam erfolgen . Dies ist, wenn pam_unix -Modul schreibt den Logout-Zeitstempel in das wtmp Datei.

PAM besteht aus vielen Komponenten

Wenn Sie die Authentifizierung mit einem Programm wie authconfig ändern oder authselect und sehen möchten, was sich geändert hat, finden Sie hier einige der Orte, an denen Sie nachsehen können:

/usr/lib64/security
Eine Sammlung von PAM-Bibliotheken, die verschiedene Prüfungen durchführen. Die meisten dieser Module haben Handbuchseiten, um den Anwendungsfall und die verfügbaren Optionen zu erklären.

/etc/pam.d
Eine Sammlung von Konfigurationsdateien für Anwendungen, die libpam aufrufen . Diese Dateien definieren, welche Module geprüft werden, mit welchen Optionen, in welcher Reihenfolge und wie mit dem Ergebnis umgegangen wird. Diese Dateien können dem System hinzugefügt werden, wenn eine Anwendung installiert wird, und werden häufig von anderen Dienstprogrammen bearbeitet.

Da alle Anwendungen mehrere Prüfungen durchführen, können diese Dateien auch Include-Anweisungen enthalten, um andere Konfigurationsdateien in diesem Verzeichnis aufzurufen. Die meisten gemeinsam genutzten Module befinden sich in system-auth Datei für die lokale Authentifizierung und die password-auth Datei für Anwendungen, die auf Remote-Verbindungen warten.

/etc/security
Eine Sammlung zusätzlicher Konfigurationsdateien für bestimmte Module. Einige Module, wie pam_access und pam_time , ermöglichen zusätzliche Granularität für Prüfungen. Wenn eine Anwendungskonfigurationsdatei diese Module aufruft, werden die Prüfungen unter Verwendung der zusätzlichen Informationen aus den entsprechenden ergänzenden Konfigurationsdateien abgeschlossen. Andere Module, wie pam_pwquality , erleichtern Sie es anderen Dienstprogrammen, die Konfiguration zu ändern, indem Sie alle Optionen in einer separaten Datei statt in der Modulzeile in der Anwendungskonfigurationsdatei platzieren.

/var/log/secure
Die meisten Sicherheits- und Authentifizierungsfehler werden in dieser Protokolldatei gemeldet. Für diese Datei sind Berechtigungen konfiguriert, um den Zugriff einzuschränken.

man pam
Diese Handbuchseite beschreibt den Gesamtprozess, einschließlich der Aufruftypen und einer Liste der beteiligten Dateien.

man pam.conf
Diese Handbuchseite beschreibt das Gesamtformat und definiert Schlüsselwörter und Felder für pam.d Konfigurationsdateien.

man -k pam_
Diese Suche nach Handbuchseiten listet Seiten auf, die für installierte Module verfügbar sind.

Abschluss

PAM ermöglicht eine viel robustere Authentifizierungsumgebung, als Dienste pro Anwendung bieten könnten. Es ist seit vielen, vielen Jahren in Linux und an fast allen Benutzeridentifikationsprozessen beteiligt.

Im nächsten Artikel werde ich das Format von /etc/pam.d durchgehen Konfigurationsdateien.

[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]


Linux
  1. Was ist ein Linux-Benutzer?

  2. Einführung in Nmap unter Kali Linux

  3. Eine Einführung in die Überwachung von Linux-Benutzerkonten

  4. Linux-su-Befehl

  5. Ändern Sie den Benutzernamen unter Linux

So finden Sie heraus, ob ein Benutzer unter Linux eine kennwortbasierte oder schlüsselbasierte SSH-Authentifizierung verwendet

su-Befehl unter Linux

Aufbau einer Linux Pluggable Authentication Modules (PAM) Konfigurationsdatei

So verbessern Sie die Benutzersicherheit von Linux mit Pluggable Authentication Module-Einstellungen

PAM-Authentifizierung

So ändern Sie den Benutzer unter Linux