# PAM - Pluggable Authentication Modules {{#include ../../banners/hacktricks-training.md}} ### Grundlegende Informationen **PAM (Pluggable Authentication Modules)** fungiert als Sicherheitsmechanismus, der **die Identität von Benutzern überprüft, die versuchen, auf Computerressourcen zuzugreifen**, und ihren Zugang basierend auf verschiedenen Kriterien steuert. Es ist vergleichbar mit einem digitalen Torwächter, der sicherstellt, dass nur autorisierte Benutzer mit bestimmten Diensten interagieren können, während ihre Nutzung möglicherweise eingeschränkt wird, um Systemüberlastungen zu verhindern. #### Konfigurationsdateien - **Solaris- und UNIX-basierte Systeme** verwenden typischerweise eine zentrale Konfigurationsdatei, die sich unter `/etc/pam.conf` befindet. - **Linux-Systeme** bevorzugen einen Verzeichnisansatz und speichern dienstspezifische Konfigurationen in `/etc/pam.d`. Beispielsweise befindet sich die Konfigurationsdatei für den Anmeldedienst unter `/etc/pam.d/login`. Ein Beispiel für eine PAM-Konfiguration für den Anmeldedienst könnte so aussehen: ``` auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_unix_auth.so try_first_pass account sufficient /lib/security/pam_ldap.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_ldap.so password required /lib/security/pam_pwdb.so use_first_pass session required /lib/security/pam_unix_session.so ``` #### **PAM-Management-Bereiche** Diese Bereiche oder Managementgruppen umfassen **auth**, **account**, **password** und **session**, die jeweils für verschiedene Aspekte des Authentifizierungs- und Sitzungsmanagementprozesses verantwortlich sind: - **Auth**: Validiert die Benutzeridentität, oft durch Aufforderung zur Eingabe eines Passworts. - **Account**: Behandelt die Kontoverifizierung und prüft Bedingungen wie Gruppenmitgliedschaft oder zeitliche Einschränkungen. - **Password**: Verwaltet Passwortaktualisierungen, einschließlich Komplexitätsprüfungen oder der Verhinderung von Wörterbuchangriffen. - **Session**: Verwaltet Aktionen zu Beginn oder am Ende einer Dienstsitzung, wie das Einbinden von Verzeichnissen oder das Setzen von Ressourcenlimits. #### **PAM-Modulsteuerungen** Steuerungen bestimmen die Reaktion des Moduls auf Erfolg oder Misserfolg und beeinflussen den gesamten Authentifizierungsprozess. Dazu gehören: - **Required**: Das Scheitern eines erforderlichen Moduls führt letztendlich zu einem Misserfolg, jedoch nur nachdem alle nachfolgenden Module überprüft wurden. - **Requisite**: Sofortige Beendigung des Prozesses bei Misserfolg. - **Sufficient**: Erfolg umgeht die restlichen Überprüfungen desselben Bereichs, es sei denn, ein nachfolgendes Modul schlägt fehl. - **Optional**: Führt nur zu einem Misserfolg, wenn es das einzige Modul im Stapel ist. #### Beispiel-Szenario In einer Konfiguration mit mehreren Auth-Modulen folgt der Prozess einer strengen Reihenfolge. Wenn das Modul `pam_securetty` das Anmelde-Terminal als unbefugt erkennt, werden Root-Anmeldungen blockiert, dennoch werden alle Module aufgrund des "required"-Status weiterhin verarbeitet. Das `pam_env` setzt Umgebungsvariablen, die möglicherweise die Benutzererfahrung unterstützen. Die Module `pam_ldap` und `pam_unix` arbeiten zusammen, um den Benutzer zu authentifizieren, wobei `pam_unix` versucht, ein zuvor angegebenes Passwort zu verwenden, was die Effizienz und Flexibilität der Authentifizierungsmethoden erhöht. ### Referenzen - [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434) {{#include ../../banners/hacktricks-training.md}}