Website-Suche

So sichern und härten Sie den OpenSSH-Server


Wenn es um den Zugriff auf Remote-Geräte wie Server, Router und Switches geht, ist das SSH-Protokoll sehr zu empfehlen, da es den Datenverkehr verschlüsseln und jeden abwehren kann, der versuchen könnte, Ihre Verbindungen abzuhören.

Wie dem auch sei, die Standardeinstellungen von SSH sind nicht unfehlbar und es sind zusätzliche Optimierungen erforderlich, um das Protokoll sicherer zu machen. In diesem Leitfaden untersuchen wir verschiedene Möglichkeiten, mit denen Sie die OpenSSH-Installation auf dem Server sichern und härten können.

1. Richten Sie die passwortlose SSH-Authentifizierung ein

Standardmäßig erfordert SSH, dass Benutzer beim Anmelden ihre Passwörter angeben. Aber hier ist die Sache: Hacker können Passwörter erraten oder sogar einen Brute-Force-Angriff mit speziellen Hacking-Tools durchführen und sich Zugriff auf Ihr System verschaffen. Um auf der sicheren Seite zu sein, wird die Verwendung der passwortlosen SSH-Authentifizierung dringend empfohlen.

Der erste Schritt besteht darin, ein SSH-Schlüsselpaar zu generieren, das aus einem öffentlichen Schlüssel und einem privaten Schlüssel besteht. Der private Schlüssel befindet sich auf Ihrem Hostsystem, während der öffentliche Schlüssel dann auf den Remote-Server kopiert wird.

Sobald der öffentliche Schlüssel erfolgreich kopiert wurde, können Sie sich nun nahtlos über SSH mit dem Remote-Server verbinden, ohne ein Passwort angeben zu müssen.

Der nächste Schritt besteht darin, die Passwortauthentifizierung zu deaktivieren. Um dies zu erreichen, müssen Sie die SSH-Konfigurationsdatei ändern.

sudo vim /etc/ssh/sshd_config

Scrollen Sie in der Konfigurationsdatei und suchen Sie die folgende Anweisung. Kommentieren Sie die Option 'yes' aus und ändern Sie sie in 'no'

PasswordAuthentication no

Starten Sie dann den SSH-Daemon neu.

sudo systemctl restart sshd

Zu diesem Zeitpunkt haben Sie nur über die SSH-Schlüsselauthentifizierung Zugriff auf den Remote-Server.

2. Deaktivieren Sie Benutzer-SSH-Passwortlose Verbindungsanfragen

Eine weitere empfohlene Möglichkeit, die Sicherheit Ihres Servers zu erhöhen, besteht darin, SSH-Anmeldungen für Benutzer ohne Passwort zu deaktivieren. Das klingt etwas seltsam, aber manchmal können Systemadministratoren Benutzerkonten erstellen und vergessen, Passwörter zu vergeben – was eine sehr schlechte Idee ist.

Um Anfragen von Benutzern ohne Passwort abzulehnen, gehen Sie erneut zur Konfigurationsdatei unter /etc/ssh/sshd_config und stellen Sie sicher, dass Sie über die folgende Anweisung verfügen:

PermitEmptyPasswords no

Starten Sie dann den SSH-Dienst neu, damit die Änderung wirksam wird.

sudo systemctl restart sshd

3. Deaktivieren Sie SSH-Root-Anmeldungen

Es ist ein Kinderspiel, was passieren kann, wenn es einem Hacker gelingt, Ihr Root-Passwort brutal zu erzwingen. Das Zulassen einer Remote-Root-Anmeldung ist ausnahmslos eine schlechte Idee, da sie die Sicherheit Ihres Systems gefährden könnte.

Aus diesem Grund wird immer empfohlen, die SSH-Remote-Root-Anmeldung zu deaktivieren und stattdessen bei einem normalen Nicht-Root-Benutzer zu bleiben. Gehen Sie noch einmal zur Konfigurationsdatei und ändern Sie diese Zeile wie gezeigt.

PermitRootLogin no

Wenn Sie fertig sind, starten Sie den SSH-Dienst neu, damit die Änderung wirksam wird.

sudo systemctl restart sshd

Ab sofort ist die Remote-Root-Anmeldung deaktiviert.

4. Verwenden Sie das SSH-Protokoll 2

SSH gibt es in zwei Versionen: SSH Protokoll 1 und Protokoll 2. Das SSH-Protokoll 2 wurde 2006 eingeführt und ist dank seiner starken kryptografischen Prüfungen, Massenverschlüsselung und robusten Algorithmen sicherer als Protokoll 1.

Standardmäßig verwendet SSH Protokoll 1. Um dies auf das sicherere Protokoll 2 zu ändern, fügen Sie die folgende Zeile zur Konfigurationsdatei hinzu:

Protocol 2

Starten Sie wie immer SSH neu, damit die Änderungen wirksam werden.

sudo systemctl restart sshd

Künftig wird SSH standardmäßig Protokoll 2 verwenden.

Um zu testen, ob das SSH-Protokoll 1 weiterhin unterstützt wird, führen Sie den folgenden Befehl aus:

ssh -1 user@remote-IP

Sie erhalten die Fehlermeldung „SSH-Protokoll v.1 wird nicht mehr unterstützt“.

In diesem Fall lautete der Befehl:

ssh -1 [email 

Darüber hinaus können Sie einfach das Tag -2 angeben, um sicherzustellen, dass Protokoll 2 das verwendete Standardprotokoll ist.

ssh -2 [email 

5. Legen Sie den Leerlaufwert für das SSH-Verbindungs-Timeout fest

Wenn Sie Ihren PC mit einer inaktiven SSH-Verbindung über einen längeren Zeitraum unbeaufsichtigt lassen, kann dies ein Sicherheitsrisiko darstellen. Jemand kann einfach vorbeikommen und Ihre SSH-Sitzung übernehmen und tun, was er will. Um das Problem zu beheben, ist es daher ratsam, ein Leerlauf-Timeout-Limit festzulegen, bei dessen Überschreitung die SSH-Sitzung geschlossen wird.

Öffnen Sie erneut Ihre SSH-Konfigurationsdatei und suchen Sie die Anweisung „ClientAliveInterval“. Weisen Sie einen sinnvollen Wert zu, zum Beispiel habe ich das Limit auf 180 Sekunden eingestellt.

ClientAliveInterval 180

Dies bedeutet, dass die SSH-Sitzung abgebrochen wird, wenn nach 3 Minuten, was 180 Sekunden entspricht, keine Aktivität registriert wird.

Starten Sie dann den SSH-Daemon neu, um die vorgenommenen Änderungen zu übernehmen.

sudo systemctl restart sshd

6. Beschränken Sie den SSH-Zugriff auf bestimmte Benutzer

Für eine zusätzliche Sicherheitsebene können Sie die Benutzer definieren, die das SSH-Protokoll benötigen, um sich anzumelden und Remote-Aufgaben auf dem System auszuführen. Dies hält andere Benutzer davon ab, sich ohne Ihre Zustimmung Zugang zu Ihrem System zu verschaffen.

Öffnen Sie wie immer die Konfigurationsdatei und hängen Sie die Anweisung „AllowUsers“ an, gefolgt von den Namen der Benutzer, die Sie gewähren möchten. Im folgenden Beispiel habe ich den Benutzern „tecmint“ und „james“ den Fernzugriff auf das System über SSH ermöglicht. Jeder andere Benutzer, der versucht, Fernzugriff zu erhalten, wird blockiert.

AllowUsers tecmint james

Starten Sie anschließend SSH neu, damit die Änderungen bestehen bleiben.

sudo systemctl restart sshd

7. Konfigurieren Sie ein Limit für Passwortversuche

Eine andere Möglichkeit, eine Sicherheitsebene hinzuzufügen, besteht darin, die Anzahl der SSH-Anmeldeversuche so zu begrenzen, dass die Verbindung nach einer Reihe fehlgeschlagener Versuche unterbrochen wird. Gehen Sie also noch einmal zur Konfigurationsdatei, suchen Sie die Direktive „MaxAuthTries“ und definieren Sie einen Wert für die maximale Anzahl von Versuchen.

In diesem Beispiel wurde das Limit wie gezeigt auf 3 Versuche festgelegt.

MaxAuthTries 3

Und schließlich starten Sie den SSH-Dienst wie in den vorherigen Szenarios neu.

Möglicherweise finden Sie auch die folgenden SSH-bezogenen Artikel hilfreich:

  • So installieren Sie den OpenSSH 8.0-Server von der Quelle unter Linux
  • So installieren Sie Fail2Ban zum Schutz von SSH unter CentOS/RHEL 8
  • So ändern Sie den SSH-Port unter Linux
  • So erstellen Sie SSH-Tunneling oder Portweiterleitung unter Linux
  • 4 Möglichkeiten, SSH-Verbindungen unter Linux zu beschleunigen
  • So finden Sie alle fehlgeschlagenen SSH-Anmeldeversuche unter Linux
  • So trennen Sie inaktive oder inaktive SSH-Verbindungen unter Linux
Abschluss

Das war eine Zusammenfassung einiger Maßnahmen, die Sie ergreifen können, um Ihre SSH-Remote-Verbindungen zu sichern. Es ist wichtig hinzuzufügen, dass Sie Benutzern mit Fernzugriff immer sichere Passwörter zuweisen sollten, um Brute-Force-Angriffe zu verhindern. Wir hoffen, dass Sie diesen Leitfaden aufschlussreich fanden. Ihr Feedback ist uns sehr willkommen.