Das größte Problem sind die Benutzer, die sich über SSH als Administrator des Computers anmelden. Dies kann mit brutaler Gewalt geschehen, wenn Sie ein leicht zu erratendes Passwort haben.
Es gibt verschiedene Sicherheitsmaßnahmen, die Sie ergreifen können. Nachfolgend sind einige der Maßnahmen aufgeführt, die ich beim Einrichten eines SSH-Servers immer ergriffen habe, und einige zusätzliche.
Verwenden Sie ein sicheres Passwort, das aus mindestens 10 Groß- und Kleinbuchstaben, Zahlen und anderen Zeichen besteht.
Jail-Benutzer in ihr Home-Verzeichnis. Eingesperrte Benutzer können nicht auf Dateien zugreifen / diese bearbeiten, die sich außerhalb ihres Ausgangsverzeichnisses befinden. Ihr Benutzer kann daher nicht auf wichtige Systemdateien zugreifen bzw. diese bearbeiten. Viele Tutorials finden Sie online, wie Sie einen Benutzer einsperren können. Die meisten von ihnen verwenden JailKit . Ein Beispiel für ein solches Tutorial finden Sie hier . Alternativ können Sie auch die native ChrootDirectory
Direktive des OpenSSH-Servers verwenden . Ein Beispiel für ein Tutorial dazu finden Sie hier .
Installieren Sie Fail2Ban . Fail2Ban ist ein Programm, das die Authentifizierungsprotokolle auf falsche Einträge überprüft. Wenn ein bestimmtes Limit erreicht ist, wird für diese bestimmte IP-Adresse für eine voreingestellte Zeitdauer ein Firewallblock hinzugefügt. Es gibt auch mehrere Online-Tutorials zum Einrichten von Fail2Ban mit SSH. Ein Beispiel wäre dieses . Die Fail2Ban-Homepage enthält auch einige nette und vollständige HOWTOs.
Deaktivieren Sie die Root-Anmeldung über SSH. Dies ist der Benutzer, der Zugriff auf so ziemlich alle Dateien auf Ihrem System hat. Daher wird empfohlen, die Shell-Anmeldung zu deaktivieren. In den neuesten Versionen von Ubuntu wird der Root-Benutzer automatisch deaktiviert, es schadet jedoch nicht, den SSH-Zugriff zu deaktivieren. Dies erfolgt durch Bearbeiten der Datei /etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht.
#PermitRootLogin no
Verwenden Sie einen nicht standardmäßigen Port (z. B. nicht 22). Dies erfolgt entweder über die Portweiterleitung in Ihrem Router (z. B. 16121 -> 22 statt 22 -> 22) oder indem der SSH-Dämon einen anderen Port überwacht. Dadurch wird Ihr SSH-Dienst für böswillige Benutzer weniger leicht erkennbar. Dies erfolgt durch Bearbeiten der Datei /etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und ändern Sie 22 in den gewünschten Port. Vergessen Sie nicht, anschließend den richtigen Port in Ihrem Router weiterzuleiten.
Port 22
Verwenden Sie zum Anmelden keine Passwörter. Neben Passwörtern ermöglicht SSH auch das Anmelden mit privaten Schlüsseln. Dies bedeutet, dass auf Ihrem Computer ein Schlüssel gespeichert ist, über den Sie auf die SSH des SSH-Computers zugreifen können. Wenn versucht wird, eine Verbindung herzustellen, verwendet der SSH-Client den Schlüssel, um sich beim Server anzumelden, anstatt sich über eine Kennwortauthentifizierung anzumelden. Authentifizierungsschlüssel sind kryptografisch viel stärker als Kennwörter und daher nicht so einfach zu knacken. Es gibt auch mehrere Online-Tutorials zum Einrichten der schlüsselbasierten Authentifizierung mit SSH. Ein Beispiel hierfür ist dieses . (Wenn Sie in Windows mit PuTTY SSH ausführen , finden Sie in diesem Link eine Anleitung zu PuTTY.) Nachdem Sie die schlüsselbasierte Authentifizierung eingerichtet haben, können Sie die Kennwortauthentifizierung deaktivieren, indem Sie die Datei bearbeiten /etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht.
#PasswordAuthentication no
Optional können Sie, wie @ Linker3000 in seinem Kommentar erwähnte, einen VPN-Tunnel zu dem PC einrichten, auf den Sie über SSH zugreifen möchten, und anschließend den nicht lokalen Netzwerkzugriff auf dem SSH-Server nicht zulassen. Auf diese Weise kann kein externes Gerät ohne VPN-Verbindung auf Ihren SSH-Server zugreifen. Dies kann erreicht werden, indem ALLE Hosts abgelehnt werden und nur die lokalen Netzwerk-IPs sich anmelden können. Dies erfolgt durch Bearbeiten /etc/hosts.deny
und Hinzufügen der folgenden Elemente:
sshd: ALL
und /etc/hosts.allow
Folgendes hinzuzufügen:
sshd: 192.168.1.*
wo die IP mit der Ihres lokalen Netzwerks übereinstimmt. *
ist ein Platzhalter, daher werden alle IP-Adressen 192.168.1.
akzeptiert, die mit beginnen. Wenn dies nicht funktioniert, wird Ihre Distribution möglicherweise ssh
anstelle von verwendet sshd
. In diesem Fall sollten Sie ssh: 192.168.1.*
und ssh: ALL
stattdessen versuchen .
Sie könnten nur erlauben bestimmte Hosts, mit der das gleiche tun /etc/hosts.allow
und /etc/hosts.deny
wie in 6 beschrieben, aber in /etc/hosts.allow
die folgende Zeile und jeden Host durch Leerzeichen getrennt zu ermöglichen:
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
Erlauben Sie nur bestimmten Benutzern den Zugriff auf Ihren SSH-Server. Dies erfolgt durch Bearbeiten der Datei /etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstelle es. Wenn Sie beispielsweise nur John, Tom und Mary zulassen möchten, fügen Sie diese Zeile hinzu bzw. bearbeiten Sie sie:
AllowUsers john tom mary
Sie können auch bestimmte Benutzer ablehnen. Wenn Sie beispielsweise den Zugriff auf John, Tom und Mary verweigern möchten, fügen Sie diese Zeile hinzu oder bearbeiten Sie sie:
DenyUsers john tom mary
Lassen Sie das Protokoll SSH2 nur für eingehende Verbindungen zu. Es gibt zwei Versionen des SSH-Protokolls. SSH1 unterliegt Sicherheitsproblemen, daher wird die Verwendung von SSH 2 empfohlen. Dies kann durch Bearbeiten der Datei erzwungen werden /etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstelle es.
Protocol 2,1
Entferne die 1, damit die Linie wird
Protocol 2
Erlauben Sie Benutzern nicht, sich anzumelden, für die kein Kennwort festgelegt wurde. Dies kann durch Bearbeiten der Datei erzwungen werden /etc/ssh/sshd_config
. ✝ Suchen Sie nach der folgenden Zeile und vergewissern Sie sich, dass kein # davor steht. Wenn es nicht existiert, erstelle es.
PermitEmptyPasswords no
Und obwohl einfach und vielleicht unnötig zu sagen, aber in vielen Fällen von entscheidender Bedeutung, halten Sie Ihre Software auf dem neuesten Stand. Aktualisieren Sie regelmäßig Ihre installierten Pakete / Software.
Abhängig davon, welche Linux-Distribution Sie verwenden.