Sicherheit · 5 min read · Dec 28, 2025
OpenSSH Sicherheits-Härtungsleitfaden für Linux

SSH ist eines der am häufigsten verwendeten Protokolle für die Systemadministration auf Linux-Plattformen. Es ist für viele Betriebssysteme verfügbar, die auf Unix, Linux und MacOS basieren. Es basiert auf dem Client-Server-Modell, bei dem eine Maschine die Serverkomponente ausführt und die andere ein Client-Tool verwendet, um darauf zuzugreifen.
Wie funktioniert SSH?
Der Client (ssh) initiiert die Verbindung, indem er eine Anfrage an den Server sendet. Der Server hört auf die eingehenden Anfragen, indem er den Server-Daemon (sshd) verwendet. Er verwendet seinen öffentlichen Schlüssel, um sich gegenüber dem Client, der sich mit ihm verbinden möchte, zu authentifizieren:
Auf diese Weise wird der Client sichergestellt, dass er sich mit dem richtigen SSH-Server verbindet. Wenn dies geschehen ist, kann der Client auf den Server zugreifen. Wenn Sie sich auf einem Windows-Client befinden, müssen Sie Tools wie Putty verwenden, um sich mit dem Server zu verbinden. Sowohl der Client als auch der Server können auf demselben System installiert werden, das bedeutet, dass Sie das Client-Tool verwenden können, um auf andere Maschinen zuzugreifen, oder Ihr System kann der Server selbst sein, auf den andere zugreifen können. In einem solchen Fall befindet sich die Konfigurationsdatei im selben Verzeichnis, jedoch mit einem etwas anderen Namen. Der Verzeichnispfad ist ‘/etc/ssh’ und der Name der Konfigurationsdatei für den SSH-Client ist ‘ssh_config’ und der Name der Konfigurationsdatei des Servers ist ‘sshd_config’:

Falls Sie beide Dateien auf Ihrem System haben, sollten Sie weise wählen, welche Datei Sie konfigurieren müssen. In den meisten Fällen ist es der Server, den wir für die Sicherheit konfigurieren müssen, da er die Tür zu potenziellem Zugriff auf das System öffnet.
Wir beginnen zunächst mit der Überprüfung des Status des SSH-Daemons oder sshd auf unserem Server. Auf diese Weise können wir sehen, ob er läuft und so konfiguriert ist, dass er beim Booten automatisch startet. Der folgende Befehl überprüft den Status von sshd:
$ systemctl status ssh.service
Oder verwenden Sie den folgenden:
$ systemctl status sshd.service

Aus dem Screenshot können wir sehen, dass der Dienst aktiv und aktiviert ist. Er läuft seit den letzten 6 Stunden. Wenn Sie die Terminalansicht erweitern, indem Sie die rechte Pfeiltaste drücken, werden Sie feststellen, dass er auf dem Standardport 22 lauscht.
Manchmal nehmen wir Änderungen an der SSH-Konfigurationsdatei des Remote-Systems vor, während wir über SSH mit ihm verbunden sind. In einem solchen Fall sollten wir den Reload-Befehl anstelle des Restart-Befehls verwenden. Auf diese Weise ist es weniger wahrscheinlich, dass wir getrennt werden.
Konfigurieren von SSH nach den besten Praktiken
Ich denke, es ist jetzt an der Zeit, mit der Konfiguration der SSH-Serverkonfiguration zu beginnen. Bevor wir uns mit der SSH-Konfigurationsdatei beschäftigen, sollten wir eine Sicherung der Datei mit den Standardeinstellungen erstellen:
$ sudo cp /etc/ssh/sshd_config ~/sshd_config.bkp
Nachdem wir die Sicherung durchgeführt haben, sind wir uns sicher, dass wir, falls wir die Hauptdatei durcheinanderbringen und unser SSH beschädigen, die Sicherungsdatei verwenden können, um zur Normalität zurückzukehren.
1. Ändern des Standardports
Der sshd-Daemon lauscht standardmäßig auf Port 22 des Servers. Es wird empfohlen, diesen Wert auf eine andere Nummer zu ändern, um den Umfang automatisierter Angriffe mit Skripten zu verringern. Dieser Ansatz wird als Sicherheit durch Obskurität bezeichnet. Öffnen Sie dazu die folgende Datei und suchen Sie nach der Zeile, die den Text ‘#Port 22’ enthält.
$ sudo nano /etc/ssh/sshd_config
Kommentieren Sie die Zeile ‘#Port 22’ aus und ändern Sie ‘22’ in eine andere Portnummer, die auf Ihrem System nicht verwendet wird. Wir haben es auf ‘222’ geändert und den Dienst neu gestartet. Verwenden Sie jetzt den ssh-Befehl mit der Option ‘p’, um den neuen Port anzugeben:
$ ssh user@system_ip -p 222
2. Deaktivieren des Logins als Root-Benutzer
Root ist der ultimative Benutzer auf jedem Linux-System mit Zugriff auf jede Ressource Ihres Systems. Falls Sie keinen strengen Root-Zugriff benötigen, sollten Sie die Root-Login-Funktion auf Ihrem Server deaktivieren. Öffnen Sie dazu dieselbe oben genannte Datei:
$ sudo nano /etc/ssh/sshd_config
und setzen Sie den Parameter ‘PermitRootLogin’ auf ‘no’. Dies stellt sicher, dass der Server vor zufälligen Angriffen auf das Root-Konto geschützt ist. Die Standardoption ist ‘prohibit-password’, die das Login basierend auf der öffentlichen Schlüssel-Authentifizierung erlaubt, aber die passwortbasierten Logins verweigert.
3. Festlegen der Protokollversion
Die ältere Protokollversion von SSH ist 1 und sie ist im Vergleich zu SSH2 weniger sicher, da sie unterschiedliche Netzwerkimplementierungen haben und auch nicht miteinander kompatibel sind. Um zu überprüfen, welche Protokollversion auf Ihrem Server aktiv ist, öffnen Sie erneut die sshd_config-Datei und suchen Sie nach der Zeile ‘Protocol’:
$ cat /etc/ssh/sshd_config | grep ‘Protocol’
Falls Sie eine leere Ausgabe haben, verwendet OpenSSH wahrscheinlich Version 2, da dies in unserem Fall so war. Eine andere Möglichkeit ist die Verwendung des netcat-Befehls:
$ nc localhost 22
Beispielausgabe:
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4
Aus der Ausgabe können wir sehen, dass SSH2 auf unserem System aktiv ist.
Um zu überprüfen, welche Protokollversion ein Remote-Server verwendet, versuchen Sie, sich mit einem SSH-Client mit der Option -Q (Abfrage) damit zu verbinden:
$ ssh -Q protocol-version user@server_name

Das obige Bild zeigt eine SSH-Version 2, während auf einen Ubuntu-SSH-Server von Kali Linux zugegriffen wird.
4. Passwortkomplexität
Schwache Passwörter sind immer anfällig für Ausnutzung, daher sind leere Passwörter wahrscheinlicher ausnutzbar. Die Option PermitEmptyPasswords sollte daher in der sshd_config-Datei auf ‘no’ gesetzt werden. Ebenso sollte die Anzahl der Anmeldeversuche mit falschem Passwort begrenzt werden, um die Chancen eines Brute-Force-Angriffs zu verringern. Dies kann mit der Option ‘MaxAuthTries’ erreicht werden, die auf einen kleineren Wert wie 3 gesetzt wird.

Aus dem obigen Bild können wir sehen, dass wir, wenn wir den Wert von ‘MaxAuthTries’ auf 3 setzen, nach drei falschen Passwörtern den Zugriff auf SSH verweigert bekommen. Ein weiterer wichtiger Sicherheitsaspekt ist die Verwendung der öffentlichen Schlüssel-Authentifizierung für das Login. Die schlüsselbasierte Authentifizierung ist weniger anfällig für Brute-Force-Angriffe. Ebenso können wir das PAM-Authentifizierungsmodul verwenden, um den SSH-Server noch weiter abzusichern.
Fazit
In diesem Leitfaden haben wir versucht, die wichtigsten Punkte zur Sicherung eines SSH-Servers abzudecken und sie in vier Hauptpunkte zusammenzufassen. Obwohl dieser Leitfaden nicht vollständig ist, können Sie sogar weitere Bereiche finden, um Ihren SSH-Server weiter zu stärken. Zum Beispiel können Sie versuchen, eine Banner-Nachricht hinzuzufügen, um die Benutzer über die Verwendung Ihres Systems über SSH zu informieren. Sie können auch das Login mit einem Passwort verweigern und die schlüsselbasierte Authentifizierung für passwortloses Login verwenden. Eine weitere interessante Sache ist, dass Sie die Anzahl der SSH-Benutzer und deren Verbindungszeit begrenzen können.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.