How-to

So sichern Sie den SSH-Zugang

12.03.2023
Von Stephan  Lamprecht
Mit dem SSH-Zugang arbeitet jeder Systembenutzer auf einem entfernten Rechner, als säße er direkt davor. Je nach Situation und Benutzerkreis ist es ratsam, sich Gedanken darüber zu machen, wie sich der Zugang absichern lässt.
Foto: ra2 studio - shutterstock.com

Soll ein Platinenserver wie der Raspberry Pi ohne angeschlossene Tastatur und Bildschirm bedient werden, dann bietet das SSH-Protokoll einen Weg dazu. Via SSH können Sie sich auch auf den meisten Cloudservern anmelden. Nach erfolgreicher Anmeldung stehen dann auch alle systemweiten Kommandos zur Verfügung. Nun arbeitet SSH ja als Tunnel durch das Web, ist also schon einmal besser geschützt als eine unverschlüsselte Verbindung zu einem System. Aber dennoch gibt es Optionen, den Zugang noch sicherer zu gestalten.

Die hier vorgestellten Maßnahmen können einzeln oder auch allesamt umgesetzt werden. Wie sicher der Zugang sein muss, bestimmt vor allem die Situation des Serversystems: Ist es über das Internet erreichbar, ist maximale Sicherheit angesagt, im lokalen Netz mag ein root-Verbot oder eine "AllowedUsers"-Anweisung genügen.

Keine Anmeldung für Root

Root-Anmeldung für SSH verbieten
Root-Anmeldung für SSH verbieten

Ein probates Mittel, um Angreifern weniger Möglichkeiten einzuräumen, besteht darin, keine Zugriffe von root via SSH zu erlauben. Diesen Weg gehen häufig auch kommerzielle Anbieter von Cloudservern. Hier ist allerdings genaues Arbeiten gefragt, damit Sie sich nicht selbst vom System aussperren. Diese zusätzliche Absicherung erfolgt in zwei Schritten - zunächst durch das Anlegen eines zusätzlichen Nutzers, der sich dann immer erst root-Recht verschaffen muss, im zweiten Schritt durch Deaktivierung des root-Zugangs via SSH.

Wenn Sie direkt vor dem betreffenden Rechner sitzen, können Sie die Arbeiten auch in der grafischen Oberfläche der Benutzerverwaltung durchführen. Schneller geht es aber in der Konsole. Sie legen zunächst den neuen Nutzer an:

useradd -g users -d /home/sepp -s /bin/bash sepp

Jetzt weisen Sie dem Nutzer ein starkes Passwort zu. Das geht mit dem Kommando

passwd sepp

und anschließend legen Sie für diesen Nutzer noch sein Home-Verzeichnis an und geben ihm die Rechte daran:

mkdir /home/sepp
chown sepp:users /home/sepp/

Anschließend müssen Sie prüfen, ob Sie sich mit diesem Konto via SSH anmelden können. Hat das funktioniert und Sie befinden sich in dem leeren Home-Verzeichnis, versuchen Sie, ein beliebiges Kommando mit dem Zusatz "su" aufzurufen. Hat das funktioniert, schalten Sie den root-Zugriff für SSH ab. Das erledigen Sie in der Datei "/etc/ssh/sshd_config". Darin finden Sie die Zeile "PermitRootLogin". Das verändern Sie zu "no". Um die Änderungen zu übernehmen, starten Sie den SSH-Dienst mit

sudo systemctl restart sshd

neu.

Um später mit root-Recht zu arbeiten, verwenden Sie nach dem Log-in auf dem System das Kommando su -l.

Verändern Sie den Standardport

Eine einfache Maßnahme, es Angreifern deutlich schwerer zu machen, besteht darin, den Standardport (22) für SSH zu verändern.
Eine einfache Maßnahme, es Angreifern deutlich schwerer zu machen, besteht darin, den Standardport (22) für SSH zu verändern.

Malware-Scripts und Angreifer lieben Standardeinstellungen. Daher empfehlen wir auch stets, nach der Installation eines Dienstes die voreingestellten Passwörter zu ändern. Ähnlich verhält es sich mit Standardzugangswegen.

Um etwa öffentlich erreichbare Raspberry-Server auf Schwachstellen abzuklopfen, werden Angreifer die SSH-Standards nutzen und sich versuchsweise auf Standardport 22 mit dem Nutzer "pi" und Kennwort "raspberry" anmelden. Ungleich schwerer wird es für Angreifer mit geändertem Konto und Kennwort, noch schwerer wird es, wenn Sie den Standardport verändern. Dazu müssen Sie die Konfiguration für SSH ändern. Das können Sie wieder in der bereits genannten Konfigurationsdatei:

sudo nano /etc/ssh/sshd_config

Suchen Sie darin die Zeile "#Port", entfernen Sie das Kommentarzeichen und tragen Sie statt "22" einen Port Ihrer Wahl ein, zum Beispiel 479. Speichern Sie die Datei und starten Sie den Service mit

sudo systemctl restart sshd

neu. Wer jetzt versucht, das System von einem anderen Rechner durch die gewohnte Eingabe von "ssh [Konto]@[IP-Adresse]" zu erreichen, wird abgelehnt werden.

Um sich auf dem geänderten Port zu verbinden, muss der Befehl mit

ssh -p 479 [Konto]@[IP-Adresse]

die exakte Portangabe mitliefern.