Kurohs Blog

Ein Sammelsurium des Wissens

Raspberry Pi Zero W – Teil 2 – Die Absicherung des Raspberry Pi’s

Grafische Darstellung von IT-Sicherheit

Ändern des Benutzernamens und des Passworts

Es ist empfehlenswert, das Passwort und den Standardbenutzer zu ändern, für den Fall, dass es einem Angreifer gelingen sollte, in das eigene Netzwerk einzudringen, da es ansonsten für den Angreifer zu einfach wäre, Kontrolle über den Raspberry Pi zu erlangen.

Um den Benutzernamen „pi“ zu ändern, müssen wir uns als „root“ anmelden (root ist das Äquivalent zum Administrator bei Windows), da es nicht möglich ist, einen Benutzer umzubenennen, solange wir mit ihm angemeldet sind. Um die Anmeldung als „root“ zu ermöglichen, müssen wir ihn erst aktivieren, indem wir ihm ein Passwort vergeben. Das machen wir, indem wir uns mit dem Benutzer „pi“ anmelden und den Befehl „sudo passwd root“ eingeben. Danach können wir ein Passwort vergeben. Denk daran, dass das Passwort ein Starkes sein sollte. Ein starkes Passwort umfasst mehr als 12 Zeichen und besteht aus einer Kombination aus Groß- und Kleinbuchstaben sowie Zahlen und Sonderzeichen. Da ich einen Passwort-Manager mit integriertem Passwortgenerator verwende, ist mein Passwort in der Regel um die 64 Zeichen lang, um es beispielsweise Brute Force Angriffen zu erschweren, mein Passwort zu erraten.

Jetzt, da der Benutzer „root“ aktiviert ist, melden wir uns vom Benutzer „pi“ mit Eingabe von „logout“ ab und melden uns als „root“ mit dem frisch vergebenen Passwort an. Nun können wir den Benutzer „pi“ mit dem Befehl „usermod -l neuername pi“ umbenennen, dabei ersetzen wir „neuername“ mit dem gewünschten neuen Namen. Mit Änderung des Benutzernamens sollte jetzt auch der Name des Benutzerverzeichnisses im „home“ Verzeichnis geändert worden sein. Um das Ganze zu überprüfen, können wir uns mit Eingabe von „cd /home“ und anschließend „ls“ das Verzeichnis anzeigen lassen.

Um zu sehen, ob alles funktioniert hat, melden wir uns nun mit dem neuen Benutzernamen an. Hat alles funktioniert, können wir anschließend mit Eingabe des Befehls „passwd“ noch das Passwort ändern. Optional könnten wir noch, wenn wir es denn möchten, den Benutzer „root“ mit dem Befehl „sudo passwd -l root“ deaktivieren.

Wollen wir diese Prozedur allerdings über SSH durchführen, weil beispielsweise der Raspberry Pi „headless“ (am Pi ist weder Monitor noch Maus angeschlossen) betrieben wird, dann müssen wir in der SSH-Konfiguration festlegen, dass wir uns über SSH mit „root“ anmelden dürfen (dies ist in der Regel standardmäßig deaktiviert). Um die Konfigurationsdatei zu öffnen, geben wir hier den Befehl „nano /etc/ssh/sshd_config“ ein. Anschließend suchen wir nach der Zeile:

#PermitRootLogin without-password

Und ändert sie um in:

PermitRootLogin yes

Jetzt können wir uns mit „root“ über SSH anmelden. Wenn wir die Anmeldung wieder verbieten wollen, was aus Sicherheitsgründen empfehlenswert ist, dann ändern wir es um in:

PermitRootLogin no

Sudo mit root-Passwort verwenden

Sollte sich ein Angreifer Zugriff über den Standardbenutzer verschaffen, so könnte er durch „sudo“ Root-Rechte benutzen. Standardmäßig wird dafür das Passwort des Benutzers nur einmal nach Anmeldung abgefragt.  Somit wäre das Passwort logischerweise dem Angreifer schon bekannt. Wir können allerdings dafür sorgen, dass das Root-Passwort abgefragt wird, wenn jemand den Befehl „sudo“ verwenden möchte. Dafür muss allerdings der Benutzer „root“ aktiviert sein, dies sollte aber kein Problem sein, da wir ja zuvor die Anmeldung über SSH für „root“ deaktiviert haben.

Mit Eingabe des Befehls „visudo“ öffnet sich die Konfigurationsdatei und wir müssen lediglich folgende Zeile hinzufügen und speichern:

Defaults rootpw

Von nun an müssen wir das Root-Passwort eingeben, wenn wir mit „sudo“ etwas mit Root-Rechten ausführen möchten. Das erschwert es Angreifern, die sich Zugriff verschafft hatten, Konfigurationsdateien zu ändern oder sonstigen Schabernack anzustellen.

SSH Key Pairs

Von Haus aus sind zwei Möglichkeiten zur Authentifizierung über SSH auf dem Raspberry Pi aktiviert: Passwort und SSH Key. Die bestmögliche Sicherheit bietet allerdings die Anmeldung mit einem SSH Key. Ein SSH Key ist eine Zeichenfolge mit einer Länge von mindestens 2048 Bits (empfohlen ist eine Länge von 4096 Bits), die in einer Datei gespeichert ist. Für einen Key mit der Länge 8 gibt es 256 Möglichkeiten. Bei doppelter Länge, also 16 Bits, sind es schon 65.536. Die Anzahl der Möglichkeiten steigt also exponentiell. Möchte man sich authentifizieren, muss man im Besitz eben dieser Datei sein und bei der Anmeldung mit angeben, andernfalls bekommt man ohne den SSH Key keinen Zugriff.

Bei der Generierung werden zwei Keys erstellt, einen Private Key und einen Public Key. Der Public Key bleibt auf dem Raspberry Pi und wird benutzt, um den Private Key zu validieren. Der Private Key kommt dann beispielsweise auf dem PC zum Einsatz, von dem aus man sich auf dem Pi aufschalten möchte.

Bevor wird die SSH Keys generieren, müssen wir erstmal ein Verzeichnis, in welches die Keys kommen, erstellen. Danach benötigen wir die Datei „authorized_keys“, in die der Public Key eingetragen wird.

Wir navigieren in das Home-Verzeichnis mit:

cd ⁓

Und erstellen das neue Verzeichnis mit:

mkdir .ssh

Anschließend wechseln wir in das neu erstellte Verzeichnis durch Eingabe von:

cd .ssh

Jetzt legen wir die Datei an:

touch authorzied_keys

Nun legen wir noch die Berechtigung zum Lesen, Schreiben und Ausführen für das Verzeichnis „.ssh“ fest:

chmod 700 ⁓/.ssh

Als nächstes legen wir fest, dass nur der Benutzer, den wir gerade nutzen, Lese- und Schreibrechte besitzt:

chmod 600 ⁓/.ssh/authorized_keys

Um einen SSH Key Pair mit Standardlänge zu generieren, wechseln wir wieder in das „.ssh“ Verzeichnis und geben „ssh-keygen“ ein. Wir werden während der Prozedur gefragt, wo wir die Keys speichern möchten. Wir bestätigen mit der Enter-Taste ohne Angabe eines Pfads, dadurch werden die Keys im aktuellen Verzeichnis gespeichert. Als nächstes werden wir gefragt, ob wir eine Passphrase vergeben möchten; machen wir das nicht, dann wird der SSH Key nicht mit einem Passwort versehen. Es ist allerdings angebracht, eine Passphrase zu vergeben, da wir sonst Gefahr laufen, dass der Key von anderen benutzt werden könnte, sollte er in andere Hände fallen.

Wir sollten jetzt diese zwei Dateien im „.ssh“ Verzeichnis haben:

·         id_rsa                  (Private Key)

·         id_rsa.pub          (Public Key)

Damit der Public Key nun autorisiert wird, kopieren wird den Inhalt von „id_rsa.pub“ in „authorized_keys“ durch Eingabe des folgenden Befehls:

cat id_rsa.pub >> authorized_keys

Optional können wir diesen nun, da sich der Public Key in der „authorzied_keys“ Datei befindet, löschen. Das können wir mit durch Eingabe von „rm id_rsa.pub“ machen.

Möchten wir uns jetzt mit dem Private Key über SSH aufschalten, können wir diesen über den FTP-Server, den wir im vorherigen Artikel eingerichtet haben, durch einen beliebigen FTP-Client herunterladen.

Wir können uns jetzt über die Befehlszeile (cmd, PowerShell) durch den Private Key und SSH durch Eingabe von „ssh -i [Pfad zum Private Key] [Benutzername]@[IP des Pi]“ mit dem Raspberry Pi verbinden. Haben wir ein Passphrase vergeben, müssen wir ihn kurz danach eingeben.

Wenn alles reibungslos funktioniert, ist es ratsam, die Anmeldung durch das Benutzerpasswort zu deaktivieren, da wir jetzt über eine deutlich sichere Anmeldevariante verfügen.

Zum Deaktivieren öffnen wir die SSH Konfigurationsdatei mit:

sudo nano /etc/ssh/sshd_config

Dann suchen wir nach folgender Zeile:

PasswordAuthentication yes

Und ändern sie wie folgt um:

PasswordAuthentication no

Anschließend starten wir den SSH Dienst neu, damit sichergestellt ist, dass alle Änderungen wirksam werden:

systemctl restart ssh

FTP (Secure File Transfer Protocol)

Um Daten vom Raspberry Pi hoch- und runterladen zu können, müssen wir jetzt SFTP nutzen, da wir die normale Passwortanmeldung deaktiviert haben.
Da beispielsweise Filezilla nur SSH Keys mit der Endung „.ppk“ verwenden kann, die durch das Programm „PuTTY“ erstellt worden sind, verwenden wir MobaXterm (Link).

Hier gehen wir unter dem Reiter Sessions auf „New session“.

Ein Screenshot von MobaXterm

Wir wählen SFTP aus, klicken auf den Reiter „Advanced Sftp settings“ , setzen einen Haken bei „Use private key“ und wählen den passenden Key im Nebenfeld aus. Danach können wir wie gewohnt unter „Basic Sftp settings“ die IP des Raspberry Pi’s sowie den Benutzernamen eingeben.

Screenshot von der SFTP Konfiguration in MobaXtern

Im nächsten Artikel erkläre ich, wie wir mittels DynDNS von außen, sprich durch das Internet, auf unseren Raspberry Pi kommen.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert