Sichern Sie Ihren Raspberry Pi – SSH-Protokollsicherheit

Jinku Hu 14 April 2022
Sichern Sie Ihren Raspberry Pi – SSH-Protokollsicherheit

Dieser Artikel stellt verschiedene Methoden vor, um Ihre SSH-Remote-Verbindung zu Raspberry Pi vor häufigen Sicherheitslücken zu schützen.

Härten Sie die SSH-Konfiguration, um den Fernzugriff auf Raspberry Pi zu sichern

SSH ist eine gängige Methode für den Zugriff auf entfernte Hosts für die Systemadministration oder andere Aufgaben.

Es wird häufig verwendet, um remote auf Raspberry Pi-Geräte im lokalen Netzwerk zuzugreifen. Daher ist es wichtig, die SSH-Authentifizierungsmethode und einige ihrer Konfigurationsparameter zu sichern, um sicherzustellen, dass der Angreifer nicht auf Ihr Gerät zugreift.

Wenn Sie gerade erst vom SSH-Fernzugriffsprotokoll gehört haben, empfehlen wir Ihnen, zuerst unseren Artikel Einführung zu diesem Thema zu lesen und dann mit den folgenden Anweisungen fortzufahren.

Die SSH-Verbindung verwendet standardmäßig ein Benutzername/Passwort-Authentifizierungsschema, das Angreifer brutal erzwingen können. Daher wird empfohlen, zur Public-Key-Authentifizierung zu wechseln und diese sogar für alle Sitzungen obligatorisch zu machen.

Zunächst müssen Sie ein öffentliches Schlüsselpaar generieren, wenn Sie keins für den Hostcomputer haben, der über SSH auf den Raspberry Pi zugreift. Letzteres kann mit dem Befehlszeilendienstprogramm ssh-keygen erfolgen, das auf den meisten Linux/BSD-Systemen als Teil des OpenSSH-Toolkits enthalten ist.

Der folgende Befehl generiert das Schlüsselpaar ed25519 und gilt vorerst als einer der sicheren Algorithmen:

ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')"

Der vorherige Befehl fordert Sie auf, einen Schlüsseldateinamen anzugeben, aber Sie können die Eingabetaste drücken, um den Standardnamen zu verwenden, wenn Sie zum ersten Mal öffentliche Schlüssel generieren.

Sie werden aufgefordert, eine Passphrase einzugeben, was sehr zu empfehlen ist, wenn Sie die Arbeit des Angreifers erschweren möchten. Die angegebene Passphrase wird verwendet, um Ihre Identität bei jeder neuen Fernzugriffssitzung zu überprüfen.

Beachten Sie, dass diese Passphrase nicht automatisch in einer Datei gespeichert wird. Daher müssen Sie sich daran erinnern, wenn Sie das generierte öffentliche Schlüsselpaar in Zukunft verwenden müssen.

Standardmäßig befinden sich zwei generierte Schlüsseldateien im Verzeichnis ~/.ssh/ mit den Namen id_ed25519 und id_ed25519.pub. Sie dürfen den Inhalt von id_ed25519 mit niemandem teilen, kopieren aber normalerweise den Inhalt von id_ed25519.pub auf jeden Computer (z. B. Raspberry Pi), auf dem Sie eine SSH-Verbindung herstellen müssen.

Als nächstes können Sie sich bei einer Raspberry Pi-Konsole anmelden und die SSH-Serverparameter konfigurieren. Beachten Sie, dass die folgenden Anweisungen davon ausgehen, dass Sie zuvor den SSH-Server auf Pi aktiviert haben.

Zuerst müssen wir den Inhalt der id_ed25519.pub. kopieren. in die Datei /home/pi/.ssh/authorized_keys auf dem Raspberry Pi. Die letztere Datei ist möglicherweise nicht auf dem Pi vorhanden, sodass Sie sie möglicherweise manuell erstellen müssen.

Alternativ können Sie die Datei mit dem Befehl scp auf den Host-Rechner kopieren, von dem aus Sie SSH-Zugriff auf den Pi haben.

Beachten Sie, dass Sie die IP-Adresse des Pi im folgenden Befehl ändern und den Quelldateinamen ändern sollten, wenn Sie an der Eingabeaufforderung ssh-keygen einen benutzerdefinierten Schlüsseldateinamen angegeben haben.

scp ~/.ssh/id_ed25519.pub pi@192.168.0.12:/home/pi/.ssh/authorized_keys

Nach erfolgreichem Kopieren können Sie mit der Bearbeitung der Datei /etc/ssh/sshd_config auf dem Raspberry Pi OS fortfahren. Dieser Schritt erfordert sudo-Berechtigungen für jeden Befehl.

Öffnen Sie die Datei sshd_config mit einem beliebigen Texteditor (mit sudo), mit dem Sie vertraut sind, und kommentieren Sie die folgenden Zeilen wie gezeigt aus/fügen Sie sie ein und speichern Sie die Änderungen:

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys .ssh/authorized_keys2

PasswordAuthentication no
ChallengeResponseAuthentication no

Nach der Änderung der Konfigurationsdatei können Sie den Dienst sshd mit dem folgenden Befehl neu starten, damit die Änderungen wirksam werden:

sudo systemctl restart sshd.service

Jetzt können Sie sich mit SSH wieder mit dem Pi verbinden, und es sollte Sie automatisch beim System anmelden. Sie werden jedoch weiterhin zur Eingabe einer Passphrase für den öffentlichen Schlüssel aufgefordert, wenn Sie diese während des Befehls ssh-keygen angegeben haben.

Ändern Sie den Standardport für den SSH-Server auf Raspberry Pi OS

Eine weitere sinnvolle Sicherheitsmaßnahme besteht darin, den Standard-Service-Port 22 für den SSH zu ändern. Sie können den Standardport in der Datei /etc/ssh/sshd_config ändern, die wir in den vorherigen Schritten bearbeitet haben.

Dieses Mal werden wir die folgende Zeile auskommentieren und ändern:

Port 60001

Sie können die Portnummer aus den privaten Dienstports im Bereich - 49152-65535 auswählen. Es ist unwahrscheinlich, dass es zu Konflikten mit anderen Diensten kommt, die auf dem System ausgeführt werden.

Beachten Sie, dass die vorherigen Zeilen normalerweise bereits in der Datei sshd_config enthalten sind, aber mit dem Zeichen # als Präfix auskommentiert sind. Sie können jeden von ihnen auskommentieren, indem Sie dieses Präfix löschen.

Vergessen Sie auch nicht, die Änderungen in der Datei zu speichern und den SSH-Dienst mit dem Befehl systemctl restart neu zu starten, wie in den vorherigen Schritten gezeigt. Zusätzlich müssen Sie die Portnummer zu Ihrem ssh-Befehl hinzufügen, um von anderen Hosts aus wie folgt auf den Raspberry Pi zuzugreifen:

ssh pi@192.168.0.12 -p 600001
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Raspberry Pi