Logo Dennis' Tech Blog

Anleitung: Server absichern mit Zwei-Faktor Login

Dennis Schwerdel  Linux  Ssh  Security  2fa
Post Image

In dieser Anleitung erkläre ich wie man seinen Linux Server mit Zwei-Faktor Authentifizierung schützen kann.

Zwei-Faktor Authentifizierung bedeutet dass man sich als Nutzer auf zwei unterschiedliche Wege ausweisen muss. Der eine Weg ist weiterhin die traditionelle Benutzername/Passwort-Kombination und der zweite Weg ist in unserem Fall das eigene Handy. Der Vorteil ist dass der Login weiterhin sicher ist selbst wenn ein Angreifer Benutzername und Passwort bekommt (z.B. durch Hacking oder durch Phishing).

Praktisch funktioniert ein Login dann in zwei Schritten:

  1. Der Server fragt nach einem Code, den eine App auf dem Handy berechnet
  2. Der Server fragt wie bisher nach dem Passwort

Wie genau das mit dem Code funktioniert ist gar nicht so kompliziert. Der Server verlangt zum Login einen Code, der sich alle 30 Sekunden ändert und von der aktuellen Zeit und einem geheimen Schlüssel abhängt. In der Handy-App muss dieser geheime Schlüssel einmal eingetragen werden, dann berechnet die App aus der aktuellen Zeit und diesem Schlüssel den aktuellen Code den man zum Einloggen braucht. Dadurch ändert sich der aktuelle Code ständig und selbst wenn einmal ein Angreifer einen solchen Code mitliest hilft ihm das in der Zukunft nichts.

Damit beide Geräte den gleichen Code berechnen muss die Uhrzeit auf den Geräten grob stimmen. Auf Handys kann man dazu die Zeit mit dem Netz abgleichen (als Option aktivierbar) und auf Servern kann man mit NTP nachhelfen.

Zwei-Faktor Login aktivieren in 5 Schritten

** Achtung: Fehler in der Konfiguration können dazu führen dass man sich gar nicht mehr einloggen kann. **

Damit das nicht zum Problem wird sollte man eine zweite SSH-Verbindung als root dauerhaft offen halten und erst beenden wenn der Login mit Zwei-Faktor Authentifizierung klappt. Offene Verbindungen werden beim Neustart von SSH nicht geschlossen.

Die folgenden Schritte sind für Debian und Ubuntu zugeschnitten. Für andere Systeme, müssen die Befehle evtl. leicht abgewandelt werden.

  1. Das entsprechende Paket installieren:

# sudo apt-get install libpam-google-authenticator

  1. Zwei-Faktor Authentifizierung für SSH aktivieren:

# sudo nano /etc/pam.d/sshd

Folgende Zeile ganz am Anfang einfügen und speichern:

auth required pam_google_authenticator.so

  1. Challenge-Response in SSH aktivieren:

# sudo nano /etc/ssh/sshd_config

Den Wert für ChallengeResponseAuthentication auf yes setzen (Der Wert ist wahrscheinlich auskommentiert oder auf no gesetzt):

ChallengeResponseAuthentication yes

  1. Den SSH-Server neustarten:

# service ssh restart

  1. Zwei-Faktor Login für den Nutzer aktivieren:

# google-authenticator

Das Tool erzeugt beim Aktivieren auch einen QR-Code auf der Konsole (sehr coole Idee) den man einfach mit dem Handy scannen kann.

Die Ausgabe des Tools auf der Konsole sollte man sich am besten ausdrucken und sicher aufbewahren.

Der letzte Schritt muss evtl. mehrmals für verschiedene Accounts wiederholt werden wenn mehrere Accounts geschützt werden sollen.

Clients

Damit man den benötigten Code auch auf dem Handy berechnen kann braucht man eine entsprechende Software.

FreeOTP ist eine kostenlose und quelloffene App für Android und iOS. In der App können mehrere Schlüssel per QR-Code importiert und abgespeichert werden. Ein einfacher Klick auf den Namen und der aktuelle Code wird angezeigt, zusammen mit der noch verbleibenden Zeit.

 Daneben gibt es für Android auch noch den Google Authenticator. Als einer der ersten und weitverbreitesten Clients unterstützt er zahlreiche Optionen. Hier vertraut man aber seine geheimen Schlüssel Google an…

Egal für welchen Client man sich entscheidet, die Einrichtung funktioniert immer gleich: Man scannt den QR-Code mit der Kamera und schon ist der Schlüssel unter dem Servernamen abgespeichert. Wenn man will, kann man noch einige Details wie den Namen oder das Logo verändern.

Zwei-Faktor für weitere Dienste

Neben dem SSH-Login kann man die Zwei-Faktor Authentifizierung auch noch für einige andere Dienste und Logins benutzen. Auf twofactorauth.org findet sich eine große Liste an Online-Diensten die diese Authentifizierung unterstützen.

Zu meinem Glück unterstützt auch mein Hoster NetCup die Zwei-Faktor Authentifizierung für den Kundenbereich, so ist mein Server durchgehend geschützt.

Auch einige Software die man selbst hosten kann unterstützt Zwei-Faktor Logins: