PAM-Authentisierung

Die Pluggable Authentication Modules (PAM) sind ein mächtiges und flexibles System, das es Linux-Administratoren ermöglicht, die Authentifizierungsmethoden und -richtlinien zu steuern. PAM bietet eine modulare Infrastruktur, die verschiedene Authentifizierungstechnologien unterstützt, von einfachen Passwort-Überprüfungen bis hin zu komplexen Zwei-Faktor-Authentifizierungen.

In diesem Blog-Beitrag erkläre ich die Grundlagen von PAM und zeige, wie du PAM unter Linux konfigurierst, um die Authentifizierung auf deinem System anzupassen.

Was ist PAM?

PAM steht für Pluggable Authentication Modules und ermöglicht es, die Authentifizierungsprozesse für Benutzer flexibel zu gestalten. Es handelt sich dabei um eine Reihe von Bibliotheken, die die Authentifizierung für Anwendungen und Dienste unter Linux und Unix-basierten Betriebssystemen ermöglichen. PAM bietet eine zentrale Verwaltung der Authentifizierungsmethoden und kann für verschiedenste Authentifizierungsmechanismen konfiguriert werden, wie zum Beispiel:

  • Passwort-Authentifizierung
  • Biometrische Authentifizierung
  • Zwei-Faktor-Authentifizierung (2FA)
  • Smartcards
  • LDAP und mehr

Aufbau und Funktionsweise von PAM

PAM verwendet Konfigurationsdateien, die sich im Verzeichnis /etc/pam.d/ befinden. Jede Anwendung oder jeder Dienst, der PAM verwendet, hat eine eigene Konfigurationsdatei, zum Beispiel:

  • /etc/pam.d/sshd für den SSH-Dienst
  • /etc/pam.d/login für die systemweite Anmeldung
  • /etc/pam.d/sudo für sudo-Befehle

Die Konfiguration besteht aus Modulen, die in der Form von Zeilen in diesen Dateien eingetragen werden. Jede Zeile folgt diesem Format:

Modul-Typ Steuer-Flag Modul-Pfad Optionen
  • Modul-Typ: Gibt an, welcher Authentifizierungsschritt es ist (zum Beispiel auth, account, password oder session).
  • Steuer-Flag: Legt fest, wie PAM reagiert, wenn das Modul fehlschlägt (zum Beispiel required, requisite, sufficient, optional).
  • Modul-Pfad: Der Pfad zum PAM-Modul (oft in /lib/security/).
  • Optionen: Zusätzliche Konfigurationsparameter für das Modul.

Die vier Hauptmodultypen

  1. auth: Bestimmt, wie Benutzer authentifiziert werden (z. B. durch Eingabe eines Passworts oder einer anderen Authentifizierungsmethode).
  2. account: Überprüft, ob der Benutzer Zugriff auf das System haben darf (z. B. Kontosperren, Ablauf von Passwörtern).
  3. password: Legt fest, wie Passwörter geändert und überprüft werden (z. B. Passwortkomplexität).
  4. session: Führt Aktionen beim Start und Ende einer Sitzung aus (z. B. Ressourcen-Zuweisungen, Logging).

PAM-Beispielkonfiguration

Schauen wir uns eine einfache PAM-Konfiguration an, um die Funktionsweise zu verdeutlichen. Öffne die Datei /etc/pam.d/sshd mit einem Texteditor, um die Authentifizierung für SSH anzupassen:

sudo nano /etc/pam.d/sshd

Hier ist ein typischer Abschnitt aus einer SSH-PAM-Konfigurationsdatei:

auth       required   pam_unix.so
account required pam_unix.so
session required pam_unix.so
password required pam_unix.so
  • auth required pam_unix.so: Fordert eine Authentifizierung mit dem klassischen Passwortsystem an.
  • account required pam_unix.so: Überprüft, ob das Benutzerkonto gültig ist.
  • session required pam_unix.so: Erstellt und verwaltet die Sitzung für den Benutzer.
  • password required pam_unix.so: Verwaltet Passwortänderungen.

Steuer-Flags

Die Steuer-Flags sind ein entscheidender Teil der PAM-Konfiguration. Es gibt vier gängige Steuer-Flags:

  • required: Das Modul muss erfolgreich ausgeführt werden, aber auch wenn es fehlschlägt, werden die nachfolgenden Module ausgeführt.
  • requisite: Wie required, aber wenn dieses Modul fehlschlägt, werden die nachfolgenden Module nicht mehr ausgeführt.
  • sufficient: Wenn das Modul erfolgreich ist, sind keine weiteren Module notwendig, aber wenn es fehlschlägt, werden die anderen Module trotzdem ausgeführt.
  • optional: Das Modul wird ausgeführt, aber sein Erfolg oder Misserfolg hat keine Auswirkungen auf die Authentifizierung.

Schritt 1: Installation von PAM-Modulen

PAM ist in den meisten Linux-Distributionen bereits vorinstalliert. Du kannst jedoch zusätzliche Module installieren, um erweiterte Authentifizierungsmechanismen zu nutzen. Zum Beispiel gibt es Module für Zwei-Faktor-Authentifizierung oder LDAP.

Beispielsweise kannst du das Google Authenticator PAM-Modul für 2FA mit folgendem Befehl installieren:

Für Debian/Ubuntu:

sudo apt install libpam-google-authenticator

Für CentOS/RHEL:

sudo yum install google-authenticator

Schritt 2: Anpassung der PAM-Konfiguration für 2FA

Nach der Installation des Moduls kannst du die PAM-Konfiguration anpassen, um eine Zwei-Faktor-Authentifizierung (2FA) zu aktivieren. Bearbeite die SSH-PAM-Konfiguration:

sudo nano /etc/pam.d/sshd

Füge die folgende Zeile hinzu, um die Zwei-Faktor-Authentifizierung zu aktivieren:

auth required pam_google_authenticator.so

Nun wird bei jeder SSH-Anmeldung zusätzlich zur Passwortabfrage ein Einmalpasswort (TOTP) über den Google Authenticator (oder eine ähnliche App) abgefragt.

Schritt 3: Anpassung der SSH-Konfiguration

Damit SSH die 2FA-Anforderungen durch PAM berücksichtigt, musst du auch die SSH-Konfigurationsdatei anpassen:

sudo nano /etc/ssh/sshd_config

Ändere oder füge die folgenden Zeilen hinzu:

ChallengeResponseAuthentication yes
UsePAM yes

Starte dann den SSH-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart sshd

Schritt 4: Testen der PAM-Konfiguration

Um sicherzustellen, dass die PAM-Konfiguration funktioniert, versuche, dich über SSH oder lokal auf dem System anzumelden. Wenn du ein Zwei-Faktor-Authentifizierungsmodul wie pam_google_authenticator.so eingerichtet hast, solltest du bei der Anmeldung nach einem Bestätigungscode gefragt werden.

Es ist wichtig, alle Änderungen an PAM vorsichtig zu testen, um sich nicht versehentlich auszusperren. Falls du bei der Anmeldung Schwierigkeiten hast, kannst du von einer anderen Konsole oder einem Rettungsmodus aus auf die PAM-Dateien zugreifen und die Konfiguration rückgängig machen.

Nützliche PAM-Module

Neben den Standardmodulen gibt es viele nützliche PAM-Module, die zusätzliche Funktionalitäten bieten. Hier sind einige Beispiele:

  • pam_tally2.so: Zählt die Anzahl fehlgeschlagener Anmeldeversuche und sperrt Benutzer nach einer bestimmten Anzahl von Fehlschlägen. Nützlich für Sicherheitsvorkehrungen gegen Brute-Force-Angriffe.
  • pam_limits.so: Setzt Beschränkungen für Ressourcen (z. B. CPU, RAM, Dateiöffnungen) für Benutzer.
  • pam_exec.so: Führt ein Skript oder Programm während des Authentifizierungsprozesses aus.
  • pam_cracklib.so: Erzwingt komplexe Passwörter, indem es sicherstellt, dass Passwörter bestimmte Kriterien wie Länge, Groß-/Kleinschreibung und Sonderzeichen erfüllen.

Fazit

PAM ist ein flexibles und mächtiges Framework zur Verwaltung von Authentifizierungsmethoden unter Linux. Mit der richtigen Konfiguration kannst du dein System an die spezifischen Anforderungen deiner Umgebung anpassen und die Sicherheit durch erweiterte Authentifizierungsmethoden wie Zwei-Faktor-Authentifizierung oder Konto-Sperrmechanismen erhöhen.

Durch den modularen Aufbau kannst du PAM schrittweise erweitern und sicherstellen, dass nur autorisierte Benutzer auf dein System zugreifen. Achte darauf, die Konfiguration sorgfältig zu testen, um sicherzustellen, dass sie den gewünschten Sicherheitsrichtlinien entspricht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert