Best Practices für die Sicherheit von OpenSSH
Auch wenn Open SSH beim Remote-Zugriff zur Norm geworden ist, birgt die Verwendung der Standardinstallation dennoch einige Sicherheitsrisiken. Dieser Leitfaden schlägt Wege vor, um das Sicherheitsniveau einer Open-SSH-Installation erheblich zu steigern.
Authentifizierung mit privaten/öffentlichen Schlüsseln verwenden
Die Verwendung verschlüsselter Schlüssel zur Authentifizierung ist nützlich, da sie die Eingabe von Passwörtern erübrigt. Selbst die kreativsten Hacker sind nicht in der Lage, eine Sitzung zu störenoder sich in eine Sitzung einzuschleichen, und es gibt keine Versuche mehr, Passwörter zu knacken.
Erzeugen Sie ein Paar aus öffentlichem und privatem Schlüssel mit diesem Befehl:
$ ssh-keygen -t rsa. Dadurch werden zwei Dateien im (versteckten) Verzeichnis~/.ssherstellt; der private Schlüssel heißtid_rsaund der öffentlicheid_rsa.pub.Wählen Sie ein Passwort, das bei jeder Verbindung zum Entsperren des öffentlichen Schlüssels verwendet wird. Optional kann beim Erstellen des Schlüssels eine mit einer Passphrase geschützte Verschlüsselung hinzugefügt werden.
Das Drücken von Enter ohne Eingabe einer Passphrase funktioniert ebenfalls. Beachten Sie jedoch, dass das Erstellen eines Schlüssels ohne Passphrase jedem, der Zugriff auf Ihren lokalen Computer erhält, automatisch SSH-Zugriff auf den Remote-Server gewährt.
Kopieren Sie den öffentlichen Schlüssel (
id_rsa.pub) auf den Server:Scp –p id_rsa.pub remoteuser@remotehost: ``` <div data-gb-custom-block data-tag="hint" data-style='danger'>The `remoteuser` should never be root. Select the default non-root user as `remoteuser` instead.</div>Melden Sie sich mit SSH an und kopieren Sie den öffentlichen Schlüssel an die richtige Stelle:
ssh remoteuser@remotehost mkdir ~/.ssh chmod 700 ~/.ssh cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys mv id_rsa.pub ~/.ssh logoutLöschen Sie dann den öffentlichen Schlüssel vom Server, andernfalls erlaubt der SSH-Client keine Anmeldung am Server:
rm id_rsa.pubLegen Sie die Dateiberechtigungen auf dem Server fest (diese beiden sind erforderlich, wenn "StrictModes" auf yes gesetzt ist):
$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keysSobald die Anmeldung mit der Schlüssel-Passphrase erfolgt ist, kann die Passwort-Authentifizierung vollständig deaktiviert werden. Öffnen Sie dazu die Datei
/etc/ssh/sshd_configund fügen Sie ihr die folgenden Zeilen hinzu:# Disable password authentication forcing use of keys PasswordAuthentication no
Authentifizierung mit Benutzername und Passwort deaktivieren
Um die auf Passwörter basierende Authentifizierung vollständig zu beseitigen und die Verwendung von SSH-Schlüsseln oder Zertifikaten zu erzwingen, aktualisieren Sie die SSH-Konfiguration, indem Sie die folgenden Zeilen in der Datei /etc/ssh/sshd_config hinzufügen:
Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder /etc/init.d/sshd restart oder service sshd restart eingeben. Sobald dies erledigt ist, sollte der Server alle Anmeldungen mit Benutzername/Passwort ablehnen und nur die Authentifizierung über Schlüssel oder Zertifikat akzeptieren.
Leerlauf-Timeout-Intervall konfigurieren
Es kann ein Leerlauf-Timeout-Intervall festgelegt werden, um eine unbeaufsichtigte SSH-Sitzung zu vermeiden. Öffnen Sie dazu die Datei /etc/ssh/sshd_config und fügen Sie die folgende Zeile hinzu:
Das Leerlauf-Timeout-Intervall wird in Sekunden angegeben (360 Sekunden = 6 Minuten). Sobald das Intervall abgelaufen ist, werden inaktive Benutzer automatisch abgemeldet.
Leere Passwörter deaktivieren
Für zusätzliche Sicherheit wird empfohlen, Remote-Anmeldungen von Konten mit leeren Passwörtern zu verhindern. Öffnen Sie die Datei /etc/ssh/sshd_config und aktualisieren Sie die folgende Zeile:
SSH-Zugriff auf einige Benutzer beschränken
In Fällen, in denen eine Authentifizierung mit Benutzername/Passwort nicht vermeidbar ist, wird empfohlen, die SSH-Anmeldung nur auf bestimmte Benutzer zu beschränken, die Remote-Zugriff benötigen, um so die Auswirkung von Benutzern mit schwachen Passwörtern zu minimieren.
Um die SSH-Anmeldung zu beschränken, öffnen Sie die Datei /etc/ssh/sshd_config und fügen Sie eine AllowUsers-Zeile hinzu, gefolgt von der Liste der durch Leerzeichen getrennten Benutzernamen:
Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder /etc/init.d/sshd restart oder service sshd restart eingeben.
Root-Anmeldung deaktivieren
Um Root-Anmeldungen zu deaktivieren, öffnen Sie die Datei /etc/ssh/sshd_config, während Sie als Root angemeldet sind, und ändern Sie die Zeile #PermitRootLogin in PermitRootLogin no. Stellen Sie sicher, dass Sie das Symbol # entfernen, andernfalls funktioniert es nicht.
Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder /etc/init.d/sshd restart oder service sshd restart eingeben.
Schwache Verschlüsselung deaktivieren
Öffnen Sie die Datei /etc/ssh/sshd_config und fügen Sie diese Zeilen hinzu:
Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder /etc/init.d/sshd restart oder service sshd restart eingeben.
Einen nicht standardmäßigen Port verwenden
Die überwiegende Mehrheit der Hacker, die nach offenen SSH-Servern suchen, sucht nach Port 22, da SSH standardmäßig auf diesem Port auf eingehende Verbindungen lauscht. Um SSH auf einem anderen Port zu betreiben, öffnen Sie die Datei /etc/ssh/sshd_config und fügen Sie die folgenden Zeilen hinzu:
Starten Sie anschließend den SSHD-Dienst neu, indem Sie entweder /etc/init.d/sshd restart oder service sshd restart eingeben.
Stellen Sie sicher, dass Sie die Portweiterleitung in Ihrem Router und alle erforderlichen Firewall-Regeln ändern. Es wird empfohlen, Clients über Portänderungen zu informieren, damit sie wissen, mit welchem Port sie sich verbinden müssen, da SSH nicht mehr auf dem Standardport auf Verbindungen lauscht.
SSH-Exposition mit Netzwerkkontrollen begrenzen
Wenn eine Änderung des SSH-Ports nicht praktikabel ist, bietet die Bereitstellung eines Jump-Servers einen starken Zero-Trust-Kontrollpunkt zwischen Clients und internen Systemen. Er zentralisiert die Authentifizierung, erzwingt einheitliche Zugriffsrichtlinien und verhindert die direkte Exposition kritischer Ressourcen. Siehe Remote Desktop Manager Jump (Funktion) für die Konfigurationsschritte.
Multifaktor-Authentifizierung aktivieren
Die Multifaktor-Authentifizierung ist einer der wichtigsten Schutzmechanismen, die SSH-Servern hinzugefügt werden sollten, um sie vor unbefugtem Zugriff zu schützen, da jede Benutzeranmeldung mit einem konfigurierten MFA-Benutzer verknüpft sein muss. Selbst wenn es einem Hacker gelingt, ein Passwort zu erlangen oder in den SSH-Server einzudringen, wird er dennoch von der MFA blockiert.
Zuletzt aktualisiert
War das hilfreich?