Zum Hauptinhalt springen
Zurück zur Kategorie

SSH 2FA-Einrichtung: Sicherheit mit Google Authenticator

Zwei-Faktor-Authentifizierung (2FA) für SSH-Zugriff einrichten. Google Authenticator PAM-Modul, TOTP-Setup für SSH, Backup-Codes, Tests und Fehlerbehebungsanleitung.

Lesezeit: 12 min Sicherheit
2fazwei-faktor-authentifizierunggoogle authenticatortotpssh-sicherheitpamlinuxmfa

Inhaltsverzeichnis

SSH 2FA-Einrichtung: Sicherheit mit Google Authenticator

Obwohl die Verwendung von SSH-Schlüsseln die Sicherheit verbessert, bietet die Zwei-Faktor-Authentifizierung (2FA) eine zusätzliche Sicherheitsebene. Selbst wenn jemand Ihren SSH-Schlüssel erhält, kann er ohne den 2FA-Code nicht auf das System zugreifen.

Warum ist 2FA wichtig?

  • Schutz bei gestohlenen Schlüsseln: Selbst wenn SSH-Schlüssel gestohlen wird, ist 2FA-Code erforderlich
  • Brute-Force-Resistenz: Passwort + 2FA-Kombination ist viel stärker
  • Compliance: Standards wie PCI-DSS und HIPAA erfordern 2FA
  • Einfache Einrichtung: In wenigen Minuten aktivierbar

Voraussetzungen

  • Linux-Server (Ubuntu/Debian/CentOS)
  • Smartphone (Google Authenticator, Authy oder ähnliche App)
  • Bestehender SSH-Zugriff

Schließen Sie Ihre bestehende SSH-Verbindung während der 2FA-Einrichtung nicht. Testen Sie nach jedem Schritt von einem neuen Terminal aus. Falsche Konfiguration kann den Serverzugriff vollständig blockieren.

Google Authenticator PAM-Modul installieren

hljs bash
# Ubuntu/Debian
sudo apt update
sudo apt install libpam-google-authenticator -y

# CentOS/AlmaLinux
sudo dnf install epel-release -y
sudo dnf install google-authenticator -y

TOTP-Einrichtung

hljs bash
# Als Benutzer ausführen, für den 2FA aktiviert werden soll
google-authenticator

Beim Ausführen des Befehls werden folgende Fragen gestellt:

Do you want authentication tokens to be time-based (y/n) y

An diesem Punkt wird ein QR-Code und ein geheimer Schlüssel angezeigt. Scannen Sie den QR-Code mit der Google Authenticator-App.

Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
Do you want to increase the window size? (y/n) n
Do you want to enable rate-limiting? (y/n) y

Backup-Codes speichern

Während der Einrichtung werden 5 Backup-Codes angezeigt. Bewahren Sie diese an einem sicheren Ort auf:

Your emergency scratch codes are:
  12345678
  87654321
  11223344
  44332211
  99887766

Bewahren Sie Backup-Codes an einem sicheren Ort auf (Passwort-Manager, Papier usw.). Wenn Sie Ihr Telefon verlieren, sind diese Codes Ihr einziger Zugang.

PAM-Konfiguration

hljs bash
sudo nano /etc/pam.d/sshd
# Am Anfang von /etc/pam.d/sshd hinzufügen:
auth required pam_google_authenticator.so

SSH-Konfiguration

hljs bash
sudo nano /etc/ssh/sshd_config
# Tastatur-interaktive Authentifizierung aktivieren
ChallengeResponseAuthentication yes

# Authentifizierungsmethoden festlegen
# Option 1: Nur 2FA
AuthenticationMethods keyboard-interactive

# Option 2: SSH-Schlüssel ODER 2FA
# AuthenticationMethods publickey keyboard-interactive

# Option 3: SSH-Schlüssel UND 2FA (sicherste)
AuthenticationMethods publickey,keyboard-interactive

UsePAM yes
hljs bash
# SSH-Dienst neu starten
sudo systemctl restart sshd

SSH-Schlüssel + 2FA-Kombination (Empfohlen)

hljs bash
sudo nano /etc/ssh/sshd_config
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes
hljs bash
sudo nano /etc/pam.d/sshd
# Passwort-Authentifizierung auskommentieren:
# @include common-auth

# 2FA hinzufügen
auth required pam_google_authenticator.so

Testen

hljs bash
# Neues Terminal öffnen und Verbindung versuchen
ssh benutzer@server_ip

# Erwartete Ausgabe:
# Verification code: (Code aus Google Authenticator eingeben)

Fehlerbehebung

2FA-Code wird nicht akzeptiert

hljs bash
# Serverzeit prüfen
date
timedatectl

# NTP-Synchronisation
sudo apt install ntp -y
sudo systemctl restart ntp

Wiederherstellung bei Aussperrung

hljs bash
# Über Konsolenzugang verbinden
# 2FA vorübergehend deaktivieren
sudo nano /etc/pam.d/sshd
# # vor: auth required pam_google_authenticator.so hinzufügen

sudo systemctl restart sshd

Bestimmte Benutzer von 2FA ausnehmen

hljs bash
sudo nano /etc/pam.d/sshd
# Bestimmte Gruppen ausnehmen
auth [success=1 default=ignore] pam_succeed_if.so user ingroup notp
auth required pam_google_authenticator.so
hljs bash
# notp-Gruppe erstellen und Benutzer hinzufügen
sudo groupadd notp
sudo usermod -aG notp deploy_user

Apps wie Authy oder 1Password bieten Cloud-Backup und Multi-Gerät-Unterstützung im Vergleich zu Google Authenticator. Erwägen Sie diese Alternativen für Unternehmensumgebungen.

Fazit

Die Einrichtung von 2FA für SSH verbessert die Serversicherheit erheblich. Mit dem Google Authenticator PAM-Modul können Sie TOTP-basiertes 2FA in wenigen Minuten aktivieren. Die SSH-Schlüssel + 2FA-Kombination bildet eine der stärksten verfügbaren Authentifizierungsmethoden.