So richten Sie die Zwei-Faktor-Authentifizierung auf einem Raspberry Pi ein

Der Raspberry Pi erfreut sich großer Beliebtheit und ist vielerorts anzutreffen. Das hat leider auch dazu geführt, dass er ins Visier von Cyberkriminellen geraten ist. In diesem Artikel erklären wir, wie Sie Ihren Raspberry Pi mit der Zwei-Faktor-Authentifizierung (2FA) sicherer machen können.

Der vielseitige Raspberry Pi

Der Raspberry Pi ist ein kompakter Einplatinencomputer. Er wurde 2012 in Großbritannien entwickelt, um Kinder und Jugendliche spielerisch an das Programmieren heranzuführen. Das ursprüngliche Modell hatte die Größe einer Kreditkarte und wurde über ein Handy-Ladegerät mit Strom versorgt.

Er verfügt über einen HDMI-Ausgang, USB-Anschlüsse, Netzwerkanbindung und läuft unter Linux. Im Laufe der Zeit wurden kleinere Varianten entwickelt, die sich für den Einbau in Produkte oder den Betrieb als Headless-Systeme eignen. Die Preise variieren von etwa 5 US-Dollar für den minimalistischen Pi Zero bis hin zu 75 US-Dollar für den Pi 4 B/8 GB.

Der Raspberry Pi hat einen bemerkenswerten Erfolg erzielt und wurde weltweit über 30 Millionen Mal verkauft. Technikbegeisterte haben damit beeindruckende Projekte realisiert, darunter beispielsweise das Senden eines Pi an den Rand des Weltraums mithilfe eines Ballons.

Leider zieht eine so weit verbreitete Computerplattform auch die Aufmerksamkeit von Cyberkriminellen auf sich. Es ist bedenklich, wie viele Pis möglicherweise noch das Standardbenutzerkonto und -passwort verwenden. Wenn Ihr Pi öffentlich zugänglich und über Secure Shell (SSH) erreichbar ist, ist es wichtig, ihn abzusichern.

Auch wenn sich keine wertvollen Daten auf Ihrem Pi befinden, sollten Sie ihn schützen. Ihr Pi ist möglicherweise nicht das eigentliche Ziel, sondern dient Angreifern als Einfallstor in Ihr Netzwerk. Sobald sich ein Bedrohungsakteur Zugriff auf ein Netzwerk verschafft hat, wird er sich wahrscheinlich zu anderen Geräten bewegen, an denen er tatsächlich interessiert ist.

Die Zwei-Faktor-Authentifizierung (2FA)

Die Authentifizierung, also der Zugriff auf ein System, erfordert einen oder mehrere Faktoren. Diese Faktoren lassen sich in Kategorien einteilen:

  • Etwas, das Sie wissen: Beispielsweise ein Passwort oder eine Passphrase.
  • Etwas, das Sie besitzen: Beispielsweise ein Mobiltelefon, ein Hardware-Token oder ein Dongle.
  • Etwas, das Sie sind: Ein biometrisches Merkmal, wie ein Fingerabdruck oder ein Netzhautscan.

Die Multifaktor-Authentifizierung (MFA) erfordert ein Passwort sowie ein oder mehrere Elemente aus den anderen Kategorien. In unserem Fall verwenden wir ein Passwort und ein Mobiltelefon. Auf dem Mobiltelefon läuft eine Google Authenticator-App, während auf dem Pi ein Google Authenticator-Modul installiert wird.

Die Handy-App wird durch das Scannen eines QR-Codes mit Ihrem Pi verbunden. Dadurch werden bestimmte Informationen vom Pi an Ihr Mobiltelefon übertragen. Dies gewährleistet, dass die Algorithmen zur Generierung von Codes synchron laufen und die gleichen Codes erzeugen. Diese Codes werden als zeitbasierte Einmalpasswörter (TOTP) bezeichnet.

Wenn eine Verbindungsanfrage eingeht, generiert Ihr Pi einen Code. Sie verwenden die Authenticator-App auf Ihrem Telefon, um den aktuellen Code anzuzeigen. Ihr Pi fordert Sie dann zur Eingabe Ihres Passworts und des Authentifizierungscodes auf. Sowohl das Passwort als auch der TOTP müssen korrekt sein, bevor Sie sich verbinden können.

Konfiguration des Pi

Wenn Sie SSH auf Ihrem Pi verwenden, handelt es sich wahrscheinlich um ein Headless-System. Daher erfolgt die Konfiguration über eine SSH-Verbindung.

Am sichersten ist es, zwei SSH-Verbindungen herzustellen: eine für die Konfiguration und Tests und eine zweite als Sicherheitsnetz. So haben Sie immer noch eine aktive Verbindung, falls Sie sich versehentlich aussperren. Das Ändern der SSH-Einstellungen hat keine Auswirkungen auf eine laufende Verbindung. Sie können also die zweite Verbindung verwenden, um alle Änderungen rückgängig zu machen und die Situation zu beheben.

Wenn es zum Äußersten kommt und Sie komplett über SSH ausgesperrt sind, können Sie Ihren Pi auch an einen Monitor, eine Tastatur und eine Maus anschließen und sich dann in einer regulären Sitzung anmelden. Das heißt, Sie können sich immer noch anmelden, solange Ihr Pi einen Monitor ansteuern kann. Wenn dies jedoch nicht möglich ist, sollten Sie die zweite SSH-Verbindung unbedingt offen lassen, bis Sie die korrekte Funktion der Zwei-Faktor-Authentifizierung verifiziert haben.

Die letzte Option ist natürlich, das Betriebssystem auf der Micro-SD-Karte des Pi neu zu installieren. Dies sollten wir aber nach Möglichkeit vermeiden.

Zuerst müssen wir zwei Verbindungen zum Pi aufbauen. Beide Befehle haben folgende Form:

ssh [email protected]

Der Name dieses Pi ist „Watchdog“, aber Sie geben stattdessen Ihren Namen ein. Wenn Sie den Standardbenutzernamen geändert haben, verwenden Sie diesen ebenfalls; unserer ist „pi“.

Geben Sie diesen Befehl zur Sicherheit zweimal in verschiedenen Terminalfenstern ein, damit Sie zwei Verbindungen zu Ihrem Pi haben. Minimieren Sie dann eines der Fenster, damit es nicht stört und nicht versehentlich geschlossen wird.

Nach dem Verbindungsaufbau wird eine Begrüßungsnachricht angezeigt. Die Eingabeaufforderung zeigt den Benutzernamen (in diesem Fall „pi“) und den Namen des Pi (in diesem Fall „watchdog“) an.

Als Nächstes müssen wir die Datei „sshd_config“ bearbeiten. Dies geschieht am einfachsten mit dem Nano-Texteditor:

sudo nano /etc/ssh/sshd_config

Suchen Sie in der Datei die folgende Zeile:

ChallengeResponseAuthentication no

Ersetzen Sie „no“ durch „yes“.

Drücken Sie Strg+O, um die Änderungen in Nano zu speichern, und dann Strg+X, um die Datei zu schließen. Starten Sie nun den SSH-Daemon neu:

sudo systemctl restart ssh

Als Nächstes müssen wir den Google Authenticator installieren. Er fungiert als Pluggable Authentication Module (PAM)-Bibliothek. Die Anwendung (SSH) nutzt die Linux-PAM-Schnittstelle, die das passende PAM-Modul für den angeforderten Authentifizierungstyp findet.

Geben Sie folgenden Befehl ein:

sudo apt-get install libpam-google-authenticator

Installation der App

Die Google Authenticator-App ist für iPhone und Android erhältlich. Installieren Sie einfach die passende Version auf Ihrem Mobiltelefon. Alternativ können Sie auch andere Apps verwenden, die TOTP-Codes unterstützen, wie zum Beispiel Authy.

Konfiguration der Zwei-Faktor-Authentifizierung

Führen Sie auf dem Benutzerkonto, mit dem Sie sich über SSH mit dem Pi verbinden, folgenden Befehl aus (ohne das Sudo-Präfix):

google-authenticator

Sie werden gefragt, ob die Authentifizierungstoken zeitbasiert sein sollen. Drücken Sie Y und die Eingabetaste.

Ein QR-Code wird generiert, ist jedoch verschlüsselt, da er breiter als das 80-spaltige Terminalfenster ist. Vergrößern Sie das Fenster, um den gesamten Code anzuzeigen.

Unter dem QR-Code werden auch einige Sicherheitscodes angezeigt. Diese werden in der Datei „.google_authenticator“ gespeichert. Es empfiehlt sich, eine zusätzliche Kopie zu erstellen. Falls Sie jemals keinen TOTP erhalten können (z.B. durch Verlust Ihres Handys), können Sie diese Codes zur Authentifizierung verwenden.

Es werden Ihnen vier Fragen gestellt. Die erste lautet:

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Drücken Sie Y und die Eingabetaste.

Die nächste Frage ist, ob die Mehrfachverwendung desselben Codes innerhalb eines 30-Sekunden-Zeitraums verhindert werden soll.

Drücken Sie Y und die Eingabetaste.

Die dritte Frage lautet, ob das Akzeptanzfenster für die TOTP-Token erweitert werden soll.

Drücken Sie N und die Eingabetaste.

Die letzte Frage ist: „Möchten Sie die Ratenbegrenzung aktivieren?“

Geben Sie Y ein und drücken Sie die Eingabetaste.

Sie kehren zur Eingabeaufforderung zurück. Vergrößern Sie ggf. das Terminalfenster und/oder scrollen Sie nach oben, um den vollständigen QR-Code sehen zu können.

Öffnen Sie auf Ihrem Mobiltelefon die Authenticator-App und tippen Sie auf das Pluszeichen (+) unten rechts. Wählen Sie „QR-Code scannen“ und scannen Sie den QR-Code im Terminalfenster.

In der Authenticator-App erscheint ein neuer Eintrag, der nach dem Hostnamen des Pi benannt ist. Darunter wird ein sechsstelliger TOTP-Code angezeigt. Er wird in zwei Gruppen mit drei Ziffern angezeigt, um das Lesen zu erleichtern, aber er muss als eine sechsstellige Zahl eingegeben werden.

Ein animierter Kreis neben dem Code zeigt an, wie lange der Code noch gültig ist: Ein voller Kreis bedeutet 30 Sekunden, ein Halbkreis 15 Sekunden usw.

Zusammenführen aller Teile

Es muss noch eine Datei bearbeitet werden. Wir müssen SSH mitteilen, welches PAM-Authentifizierungsmodul verwendet werden soll:

sudo nano /etc/pam.d/sshd

Fügen Sie folgende Zeilen am Anfang der Datei ein:

#2FA

auth required pam_google_authenticator.so

Sie können außerdem auswählen, wann der TOTP abgefragt werden soll:

  • Nachdem Sie Ihr Passwort eingegeben haben: Fügen Sie die vorherigen Zeilen unter „@include common-auth“ ein, wie in der Abbildung oben dargestellt.
  • Bevor Sie nach Ihrem Passwort gefragt werden: Fügen Sie die vorherigen Zeilen über „@include common-auth“ ein.

Achten Sie auf die Unterstriche (_) in „pam_google_authenticator.so“ und nicht auf die Bindestriche (-), die wir zuvor beim Befehl apt-get zum Installieren des Moduls verwendet haben.

Drücken Sie Strg+O, um die Änderungen zu speichern, und Strg+X, um den Editor zu schließen. Wir müssen SSH ein letztes Mal neu starten, dann ist die Konfiguration abgeschlossen:

sudo systemctl restart ssh

Schließen Sie diese SSH-Verbindung, aber lassen Sie die andere SSH-Verbindung als Sicherheitsnetz aktiv, bis wir den nächsten Schritt überprüft haben.

Stellen Sie sicher, dass die Authenticator-App auf Ihrem Mobiltelefon geöffnet und bereit ist. Stellen Sie dann eine neue SSH-Verbindung zum Pi her:

ssh [email protected]

Sie sollten nun zuerst nach Ihrem Passwort und dann nach dem Code gefragt werden. Geben Sie den Code von Ihrem Mobiltelefon ohne Leerzeichen zwischen den Ziffern ein. Wie bei Ihrem Passwort wird er nicht auf dem Bildschirm angezeigt.

Wenn alles planmäßig verläuft, sollten Sie nun Zugriff auf den Pi haben. Falls nicht, verwenden Sie Ihre SSH-Sicherheitsverbindung, um die vorherigen Schritte noch einmal zu prüfen.

Sicherheit geht vor

Sicher ist sicher, oder?

Sie sind nun sicherer, wenn Sie sich mit Ihrem Raspberry Pi verbinden. Allerdings ist nichts jemals zu 100 % sicher. Es gibt Möglichkeiten, die Zwei-Faktor-Authentifizierung zu umgehen. Diese basieren auf Social Engineering, Man-in-the-Middle- und Man-at-the-Endpoint-Angriffen, SIM-Swapping und anderen fortschrittlichen Methoden, die wir hier nicht weiter erläutern.

Warum also der Aufwand, wenn es nicht perfekt ist? Nun, aus dem gleichen Grund, aus dem Sie Ihre Haustür abschließen, wenn Sie ausgehen, obwohl es Leute gibt, die Schlösser knacken können – die meisten Leute können es nicht.