linux-security security pam authentication hardening administration

PAM: Pluggable Authentication Modules (Artikel 317)

Beherrschung des Linux PAM-Systems. Erfahren Sie alles über modulare Authentifizierung, die Konfiguration von Zugriffsberechtigungen und das Härten von Logins mittels Account-Sperren.

# PAM Mastery: Das Rückgrat der Linux-Authentifizierung

TL;DR / Management Summary Jedes Mal, wenn Sie nach einem Passwort gefragt werden (SSH, Sudo, Konsole), entscheidet PAM (Pluggable Authentication Modules), ob Sie rein dürfen. Es ist ein modulares System, das es erlaubt, Authentifizierungs-Methoden (Passwort, Fingerabdruck, 2FA) zu tauschen, ohne die Applikation zu ändern. Ein Senior Admin nutzt PAM, um Passwort-Komplexität zu erzwingen, Fehlversuche zu blockieren (Account Lockout) und Sitzungslimits (z.B. maximale Logins) zu setzen.


# 1. Einführung & Architektur

Die vier Säulen von PAM.

PAM-Konfigurationen liegen unter /etc/pam.d/ und sind in vier Bereiche unterteilt:

  1. auth: Identitätsprüfung (Bist du es?).
  2. account: Gültigkeitsprüfung (Darfst du gerade rein? Ist das PW abgelaufen?).
  3. password: Passwort-Management (Wie ändere ich das PW?).
  4. session: Sitzungs-Vorbereitung (Mounten von Homes, Logging, Limits).

# Die Verarbeitungs-Kette (Mermaid)

graph TD
    A[App: sshd] --> B[PAM Stack /etc/pam.d/sshd]
    B --> C{auth: pam_unix.so}
    C -->|Success| D{account: pam_time.so}
    D -->|Allowed| E{session: pam_mkhomedir.so}
    E --> F[Access Granted]
    C -->|Fail| G[Deny Access]
    D -->|Outside Working Hours| G

# 2. Wichtige Module im Enterprise-Einsatz

Den Schutz schärfen.

# 1. pam_pwquality.so (Komplexität)

Erzwingt starke Passwörter.

# In /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3 minlen=14 difok=3 ucredit=-1
  • minlen=14: Mindestens 14 Zeichen.
  • ucredit=-1: Mindestens ein Großbuchstabe.

# 2. pam_faillock.so (Account Lockout)

Blockiert den Account nach X Fehlversuchen (ersetzt das alte pam_tally2).

# In /etc/pam.d/system-auth (RHEL)
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900

# 3. Day-2 Operations: Sitzungs-Limits

Ressourcen schützen.

Nutzen Sie pam_limits.so, um zu verhindern, dass ein User das System lahmlegt. Die eigentlichen Limits liegen in /etc/security/limits.conf.

# Beispiel: Max Prozesse für User

@developers    hard    nproc    2000
@developers    soft    nproc    1000

# 4. Troubleshooting & “War Stories”

Wenn PAM das System aussperrt.

# Story 1: “Der Root-Lockout durch Syntax-Fehler”

Symptom: Der Admin ändert eine Zeile in common-auth. Danach schlägt jedes sudo und jeder Login fehl. Der Root-Zugriff ist verloren. Ursache: Ein Tippfehler in einem required Modul. PAM bricht die Kette sofort ab. Lösung: Nutzen Sie die Proxmox-Konsole. Wenn Sie noch eine Sitzung offen haben: Schließen Sie diese niemals, bevor Sie den Login in einem zweiten Fenster getestet haben. Falls alles zu spät ist: Booten Sie mit init=/bin/bash (Artikel 012).

# Story 2: “Das hängende Home-Directory”

Symptom: Logins via SSH dauern 30 Sekunden, brechen dann ab oder klappen erst beim zweiten Versuch. Ursache: pam_mount.so versucht, ein verschlüsseltes Home oder einen NFS-Share zu mounten, der nicht erreichbar ist. Lösung: Prüfen Sie die Timeouts in der /etc/security/pam_mount.conf.xml und stellen Sie sicher, dass Netzwerk-Mounts das Flag soft nutzen.


# 5. Fazit & Empfehlung

  • Sicherheit: Nutzen Sie pam_faillock. Es ist der effektivste Schutz gegen langsame, gezielte Brute-Force Angriffe, die Fail2Ban evtl. übersieht.
  • Wartung: Ändern Sie niemals Dateien unter /etc/pam.d/ direkt, wenn Ihre Distribution Tools dafür bietet (z.B. authselect in RHEL oder pam-auth-update in Debian).
  • Audit: Kontrollieren Sie regelmäßig /var/log/auth.log oder /var/log/secure auf PAM-Fehlermeldungen.

# Anhang: Cheatsheet

Aufgabe Pfad / Modul
Haupt-Configs /etc/pam.d/
Passwort-Limits /etc/security/pwquality.conf
Ressourcen-Limits /etc/security/limits.conf
Fehlgeschlagene Logins faillock --user <name>
Login entsperren faillock --user <name> --reset
Logins zu Zeiten pam_time.so (/etc/security/time.conf)
Home-Dir erstellen pam_mkhomedir.so
Sudo mit Fingerabdruck pam_fprintd.so