Seite wählen

Absicherung deines SSH-Servers

von | 9. Mrz 2023 | Serveradministration

Ein Fernzugang gehört zu jedem Server dazu. Unter Linux wird hierfür meist ein SSH-Server genutzt. Um einen ersten Zugriff zum Server zu bekommen, werden während der Installation einige Grundeinstellungen vorgenommen, die später für einen sicheren Betrieb verändert werden sollten.

Wir zeigen dir einige dieser Einstellungen, mit denen du Angreifern ihre Arbeit erschweren kannst.

Warum keine Standardeinstellungen?

Um den Bedürfnissen möglichst vieler Nutzer entgegenzukommen, bieten viele Softwarelösungen unter Linux eine Vielzahl an Einstellungen. Diese Einstellungen ermöglichen es z.B. viele Anwendungen, die eine Authentifizierung brauchen, an Drittsysteme anzubinden. Um dem Standardnutzer eines Systems dennoch gerecht werden zu können und um die Abhängigkeiten von Drittsystemen gering zu halten, geben die Entwickler der Softwarelösungen eine Standardkonfiguration vor.

Wir haben also eine allgemein bekannte Konfiguration der Software – das bringt für uns sowohl Vor-, aber auch Nachteile mit sich. Wir gehen einmal einige Punkte anhand des SSH-Servers durch.

Zunächst haben wir natürlich den Vorteil, dass wir uns bei großen Softwarelösungen wenig darum Sorgen müssen, dass wir selbst ständig nach den aktuell sicheren Verschlüsselungsalgorithmen suchen müssen, um eine sichere Verbindung zu gewähleisten, da sich die Entwickler bereits mit dieser Aufgabe beschäftigen. Außerdem können wir sichergehen, dass wir die Software direkt nach der Installation ohne weiteres Schritte bereits nutzen können.

Um diese allgemeine Nutzbarkeit allerdings gewährleisten zu können, werden im SSH-Server zunächst alle regulären Nutzer und der Root-User berechtigt sich mit dem hinterlegten Passwort anzumelden.

Jetzt fragst du dich vielleicht „Warum sollte das ein Problem sein? Solange ich ein sicheres Passwort nutze passt doch alles.“ Grundsätzlich möchte ich dir zunächst Recht geben, wir stellen mit der Standardeinstellung kein offenes Tor, um den Server zu manipulieren. Dennoch haben wir aktuell keine Mechanismen, die es unterbinden mehrere hundert oder noch mehr Passwörter pro Minute auszuprobieren. Dazu geben wir dem potenziellen Angreifer noch eine allgemein bekannte Nutzerkennung – den Root-Account – und schon sieht das Konstrukt gar nicht mehr so sicher aus.

Einstellungsänderungen

Um die Konfigurationsänderungen vornehmen zu können, musst du auf dem System mit den Berechtigungen des Root Accounts agieren. Der einfachste Weg hierfür ist, als Root angemeldet zu sein.

Einige der folgenden Punkte können dazu führen, dass du den Zugang zu deinem Server verlierst. Lese dir die einzelnen Punkte daher bitte bis zum Ende durch, wenn du sie umsetzen willst.

Root Zugang blockieren

Lass uns gleich zu Anfang die Anzahl der zu erratenen Komponenten für einen Login erhöhen und den direkten Zugriff auf den Root Account über eine SSH-Verbindung verbieten.

Stelle für diesen Schritt umbedingt vorher sicher, dass du einen weiteren Account auf dem System hast, über den du dich anstelle des Root Accounts anmelden kannst. Du kannst später mit dem Befehl su root - von deinem auf den Root Account welchseln.

Solltest du noch keinen anderen Account haben, kannst du dir auf Debian ähnlichen Distributionen mit dem Befehl adduser <Nutzername> einen weiteren Account auf dem System erstellen.

In der Konfigurationsdatei /etc/ssh/sshd_config suchst du hier nach einer Zeile, in der PermitRootLogin steht. Vermutlich steht bei dir vor dem Namen der Einstellung noch ein # Zeichen. Dieses sorgt dafür, dass die Zeile nicht beachtet wird. Somit entfernen kannst du das erstmal entfernen. Außerdem kannst du den Wert hier auf no ändern.

Port ändern

SSH-Server hören standardmäßig auf Port 22. Da SSH ein Management-Tool für Server ist, versuchen die meisten Angreifer an eben diesen Port ihre Anfragen zu senden. Um dem entgegenzuwirken, ändern wir in diesem Schritt den Port des SSH-Servers.

Stelle für diesen Schritt umbedingt vorher sicher, dass der Port den du wählst erreichbar ist. Prüfe hierfür die Firewall-Einstellungen deines Servers bzw. deines Anbieters.

In der Konfigurationsdatei /etc/ssh/sshd_config suchst du hier nach einer Zeile, in der Port steht. Vermutlich steht bei dir vor dem Namen der Einstellung noch ein # Zeichen. Dieses sorgt dafür, dass die Zeile nicht beachtet wird. Somit entfernen kannst du das erstmal entfernen. Außerdem kannst du den Wert hier auf eine Zahl zwischen 1024 und 49151 ändern. Die vor dir hier hinterlegte Zahl ist der Port auf dem dein SSH-Server später erreichbar sein wird.

Passwort-Login blockieren

Die überwiegende Anzahl der Angriffe auf einen SSH-Server basieren auf dem Ausprobieren von Kombinationen aus Nutername und Passwort. Was liegt also näher, als den Login mittels dieser Kombinationen generell einfach abzuschalten?

Für diesen Schritt musst du zuvor den Login über eine andere Methode eingerichtet haben. Eine dieser Methoden ist der Login mittels Nutername und SSH-Key.

Um den Login mit deinem Passwort zu deaktiveren, kannst du in der Konfigurationsdatei /etc/ssh/sshd_config nach der Einstellung PasswordAuthentication suchen. Entferne das # vor der Einstellung, falls hier noch eins sein sollte und setze den Wert auf no.

Anwenden der Einstellungen

Vor dem Anwenden der Einstellungen solltest du sie einmal prüfen lassen. Das kannst du mit dem Befehl sshd -t machen. Solltest du hier keine Meldung bekommen, hast du alles richtig gemacht. Andernfalls schaue dir die angegebene Zeile nochmals an. Vermutlich hast du dich dort verschrieben.

Nach der Prüfung kannst du die Einstellungen mit dem Befehl service sshd reload übernehmen. Danach sind alle Änderungen, die du zuvor in der Konfiguration geändert hast aktiv.

Prüfe anschließend noch einmal, ob du dich mit einer weiteren Verbindung jetzt wie erwartet auf deinen Server verbinden kannst. Sollte etwas nicht funktionieren, kannst du die Einstellungen nochmals über die noch aktive Verbindung ändern.

Rate-Limiting

Mittels Rate-Limiting kann die Anzahl an Anmeldeversuchen in einem Zeitraum beschränkt werden. Für die Umsetzung der erforderlichen Sperren gibt es zwei Möglichkeiten – Sperrung auf Nutzerbasis und Sperrung auf IP-Address-Basis.

Vom Grundsatz hört sich Rate-Limiting erstmal gut an und es kann die Sicherheit des Servers auch weiter verbessern, jedoch gibt es hier auch einige Nachteile, die aus meiner Sicht überwiegen.

Bei der Sperrung auf Nutzerbasis wird die Anzahl der versuchten Logins für einen Nutzer des Systems gezählt. Überschreitet diese Anzahl einen Schwellwert, werden weitere Loginversuche für diesen Nutzer für eine vordefinierte Zeit blockiert. Somit kann dieser Ansatz dafür ausgenutzt werden, um dich selbst aus deinem System auszusperren, wenn dein Nutzername auf dem System bekannt ist.

Bei der Sperrung auf IP-Address-Basis wird die Anzahl der versuchten Logins von einer IP-Adresse gezählt. Hier werden Logins von einer IP-Addresse geblockt, wenn die Loginversuche einen Schwellwert überschreiten. Bei diesem Ansatz gibt es gleich zwei Probleme. Einerseits kann es sein, dass du dir mit einer Vielzahl von anderen Personen die gleiche ausgehende IP teilst, was dafür sorgen kann, dass diese Personen dir potenziell den Zugang zu deinem Server an diesem Ort sperren können. Andererseits bietet diese Möglichkeit aber auch einen geringeren Schutz, da Angreifer meist mehrere IP-Addressen nutzen, um Login-Kombinationen auszuprobieren, was diesen Ansatz nutzlos macht.

Solltest du dennoch Rate-Limiting auf deinem Server einrichten wollen, kannst du dir Tools, wie fail2ban anschauen.

Fazit

Meist kommt es nicht darauf an, eine nahezu perfekte Sicherheit auf seinen Servern zu implementieren, sondern einfach nur ein Bisschen besser zu sein als der Rest. Mit nur wenigen Einstellungen kannst du einen der wichtigsten Zugangspunkte zu deinem Server nach deinen Bedürfnissen absichern und dich dadurch vom Standard abheben.

Die Liste der Einstellungen ist keines Falls vollstängig und nur eine Auswahl, die ich auf meinen eigenen Servern anwende.

0 Kommentare

WordPress Cookie Plugin von Real Cookie Banner