2 Faktor Authentifizierung für ssh mit Google Authenticator

Hallo,

dieses mal geht es um die 2-Faktor-Auhtentifizierung für den ssh Service. Ein Passwort alleine ist heutzutage fast schon wieder überholt, aber eine sonst übliche Authentifizierung über einen ssh-Schlüssel ist umständlich, denn jedes Gerät, das auf den Server zugreifen soll braucht diesen Schlüssel. Nun ist es auch keine Option, den Schlüssel einfach auf einen öffentlichen Server hochzuladen und sich bei Bedarf zu besorgen, denn sonst könnte man ja gleich drauf verzichten, wenn jeder Zugang zu dem Schlüssel hätte.

Ein möglicher Lösungsansatz ist die sogenannte 2-Faktor-Auhtentifizierung. Hierbei braucht man zusätzlich zu dem Benutzernamen und Passwort noch ein Einmalpasswort. Eine tolle Möglichkeit um dieses Konzept umzusetzen ist die Google-Authenticator App. Dabei generiert der Server auf dem der ssh Dienst läuft und das Smartphone ein Einmalpasswort. Das tolle daran ist, dass hierbei keinerlei Verbindung zwischen dem Server und dem Smartphone bestehen muss, d.h. man kann auch auf einem Gerät ohne mobile Datenverbindung jederzeit funktionsfähige Passwörter generieren (nützlich wenn man sich von einem fremden Rechner aus anmelden muss).

Wie geht das?

Am Anfang tauschen Server und Smartphone einmalig einen gemeinsamen Schlüssel aus. Mithilfe diesem und der aktuellen Uhrzeit (die auf beiden Geräten gleich sein muss) wird dann das Einmalpasswort generiert. Toll oder? 😉

Also, wie richte ich das jetzt ein…?

Ihr seit so weit gekommen? Super 😉 Die folgende Schritt für Schritt Anleitung zeit euch, wie ihr die 2-Faktor-Auhtentifizierung auf einem Debian/Ubuntu u.Ä einrichtet:

Als erstes braucht ihr das Google Authenticator Paket, installiert wird natürlich als root:

Vorher stellen wir mit einem update nochmal sicher, dass eure lokale Paketliste auf dem aktuellen Stand ist, dann wir installiert.

apt-get update
apt-get install libpam-google-authenticator

Also Nächstes müsst ihr noch ein paar Dateien anpassen, ich benutze dazu bevorzugt den Editor nano, weil er Syntax Highliting beherrscht und einfach zu bedienen ist.

nano /etc/pam.d/sshd

Dort fügt ihr folgende Zeile hinzu und verlasst mir Strg+x

auth required pam_google_authenticator.so

Nurnoch eine Datei, dann seit ihr auch schon fast fertig 😉

nano /etc/ssh/sshd_config

Hier müsst ihr folgende Zeile finden und das aktuelle no durch ein yes ersetzen:

ChallengeResponseAuthentication yes

Ob ihr es glaubt oder nicht, der großteil ist schon erledigt. Wechselt zu einem Benutzer eurer Wahl, der sich mit der 2-Faktor-Auhtentifizierung anmelden soll und führt folgende Befehl aus:

google-authenticator

Es werden euch ein paar Fragen gestellt, beantwortet die ersten beiden mit „y“. Den Rest könnt ihr wählen, wie ihr wollt. Ich empfehle die nächste mit „y“ und die folgenden beiden mit „n“ zu beantworten. Noch eine kleine Anmerkung zur letzten Frage, bei der ihr gefragt werdet, ob ihr ein Einlogglimit einrichten wollt: Das kann man auch sehr schön mit fail2ban machen, dazu wird es in Zukunft vielleicht auch einen Blog geben.

Wie auch immer, zu den Einstellungen: Installiert euch die Google-Authenticator App aus dem Playstore und scannt den Barcode. Zum Schluss solltet ihr noch die Notfallcodes an einem Sicheren Ort verwahren, denn solltet ihr, aus welchem Grund auch immer keinen Zugriff auf euer Hany haben, habt ihr auch keinen Zugriff auf euren Server. Diese Codes können euch dann den Hals retten.

Wechselt zu root und macht einen Neustart des ssh Service:

sudo su
/etc/init.d/ssh restart

Bleibt zur Sicherheit noch mit root eingeloggt, bis ihr sicher seit, dass es klappt.Herzlichen Glückwunsch, ihr habt jetzt eine funktionierende 2-Faktor-Auhtentifizierung! 😉

Liebe Grüße,

splix