linux-security security authentication mfa 2fa yubikey totp ssh

MFA on Linux: TOTP & U2F (Artikel 318)

Implementierung von Multi-Faktor-Authentifizierung (MFA) unter Linux. Erfahren Sie alles über zeitbasierte Einmalpasswörter (TOTP) und Hardware-Token via U2F/FIDO2.

# Multi-Faktor-Authentifizierung: Die zweite Mauer

TL;DR / Management Summary Ein gestohlenes Passwort oder ein geleakter SSH-Key sind in Enterprise-Umgebungen ein GAU. Multi-Faktor-Authentifizierung (MFA) ist der einzige effektive Schutz gegen Identitätsdiebstahl. Wir integrieren TOTP (Software-Token wie Google Authenticator) und U2F/FIDO2 (Hardware-Token wie YubiKeys) direkt in den Linux-Login-Prozess (PAM). Ziel ist es, dass ein Login nur dann erfolgreich ist, wenn der Admin etwas weiß (Passwort) und etwas besitzt (Smartphone oder Hardware-Key).


# 1. Einführung & Architektur

Wie der zweite Faktor in Linux einzieht.

MFA wird als zusätzliches Modul in den PAM-Stack (Artikel 317) eingehängt. Erst wenn beide Module (Passwort + Token) Erfolg melden, wird der Zugriff gewährt.

# Die MFA-Optionen (Mermaid)

graph TD
    A[User Login Attempt] --> B[Factor 1: Password / SSH Key]
    B -->|Success| C{Factor 2 Choice}
    C -->|Option A: TOTP| D[Google Authenticator / Authy]
    C -->|Option B: FIDO2| E[Hardware Key: YubiKey / SoloKey]
    D -->|Verify Code| F[Access Granted]
    E -->|Physical Touch| F
    B -->|Fail| G[Access Denied]

# 2. Praxis: SSH mit Google Authenticator (TOTP)

Sicherheit für Remote-Admins.

# Schritt 1: Pakete installieren

sudo apt install libpam-google-authenticator # Debian
sudo dnf install google-authenticator # RHEL

# Schritt 2: Token generieren (pro User)

google-authenticator
# Beantworten Sie die Fragen mit 'y'. Scannen Sie den QR-Code mit Ihrem Smartphone.

# Schritt 3: PAM konfigurieren (/etc/pam.d/sshd)

Fügen Sie die Zeile am Anfang hinzu:

auth required pam_google_authenticator.so

# Schritt 4: SSH konfigurieren (/etc/ssh/sshd_config)

KbdInteractiveAuthentication yes
# Falls SSH-Keys genutzt werden (beides verlangen!):
AuthenticationMethods publickey,keyboard-interactive

# 3. Hardware-Sicherheit: U2F/FIDO2

Kryptografie zum Anfassen.

U2F ist resistent gegen Phishing, da der Key nur mit der echten Gegenstelle spricht.

# Einrichtung via pam_u2f

  1. Paket: pam_u2f installieren.
  2. Key registrieren:
    mkdir ~/.config/Yubico
    pamu2fcfg > ~/.config/Yubico/u2f_keys
  3. PAM: auth required pam_u2f.so in die gewünschte Config (z.B. sudo) eintragen.

# 4. Day-2 Operations: Backup-Codes & Notfall

Wenn das Handy im See landet.

MFA kann den Admin aussperren.

  • Best Practice: Generieren Sie bei der Einrichtung von TOTP immer Backup-Codes und speichern Sie diese im Firmen-Safe.
  • Admin-Zugang: Hinterlegen Sie einen “Emergency-Host” im RZ, der nur via physischer Konsole und lokalem Root-Passwort (ohne MFA) erreichbar ist.

# 5. Troubleshooting & “War Stories”

Wenn die Uhrzeit alles bricht.

# Story 1: “Der Time-Drift Fail”

Symptom: Der User gibt den absolut korrekten Code aus der App ein, aber Linux meldet “Invalid Code”. Ursache: TOTP basiert auf der aktuellen Uhrzeit (Time-based). Wenn die Uhr des Servers mehr als 30-60 Sekunden von der Uhr des Smartphones abweicht, passen die Codes nicht mehr zusammen. Lösung: Aktivieren Sie NTP auf dem Server (siehe Artikel 334).

# Story 2: “SSH-Key vs. MFA”

Symptom: Der Admin hat MFA für SSH konfiguriert, wird aber beim Login mit SSH-Key nie nach dem Code gefragt. Ursache: Standardmäßig beendet SSH den Auth-Vorgang nach einem erfolgreichen Key-Login. Der PAM-Stack für auth wird dann oft übersprungen. Lösung: Nutzen Sie AuthenticationMethods publickey,keyboard-interactive in der sshd_config, um beide Faktoren nacheinander zu erzwingen.


# 6. Fazit & Empfehlung

  • Standard: Nutzen Sie TOTP für alle SSH-Zugänge. Es kostet nichts und ist einfach auszurollen.
  • Hochsicherheit: Nutzen Sie FIDO2/YubiKeys für Sudo-Befehle und lokale Logins auf Admin-Laptops.
  • Benutzerfreundlichkeit: Aktivieren Sie MFA erst nach einer Ankündigungsfrist und einem Test-Zeitraum im optional Modus.

# Anhang: Cheatsheet

Aufgabe Tool / Befehl
TOTP Init google-authenticator
U2F Key registrieren pamu2fcfg
MFA für Sudo /etc/pam.d/sudo anpassen
Notfall-Codes finden ~/.google_authenticator (erste Zeilen)
SSH Auth Methoden `sshd -T
Hardware Token Test `lsusb
PAM Modul Pfad /lib/security/