5 Best Practices zur Verhinderung von SSH-Brute-Force-Anmeldeangriffen
Server, auf denen SSH läuft, sind normalerweise ein leichtes Ziel für Brute-Force-Angriffe. Hacker entwickeln ständig innovative Softwaretools und Bots zur Automatisierung von Brute-Force-Angriffen, die das Risiko eines Einbruchs weiter erhöhen.
In diesem Leitfaden untersuchen wir einige Tipps, die Sie implementieren können, um Ihre SSH-Server vor Brute-Force-Angriffen auf RHEL-basierte Linux-Distributionen und Debian-Derivate zu schützen.
Deaktivieren Sie die SSH-Passwortauthentifizierung und aktivieren Sie die SSH-Schlüsselauthentifizierung
Die Standardauthentifizierungsmethode für SSH ist die Authentifizierung mit Benutzername/Passwort. Doch wie wir gesehen haben, ist die Passwortauthentifizierung anfällig für Brute-Force-Angriffe. Um auf der sicheren Seite zu sein, empfiehlt es sich, eine schlüsselbasierte SSH-Authentifizierung zu implementieren, bei der die Authentifizierung durch öffentliche und private SSH-Schlüsselpaare ermöglicht wird. Der private Schlüssel verbleibt auf dem PC des Kunden, während der öffentliche Schlüssel auf den Server kopiert wird.
Bei der SSH-Schlüsselauthentifizierung prüft der Server, ob der Client-PC im Besitz des privaten Schlüssels ist. Bei erfolgreicher Prüfung wird eine Shell-Sitzung erstellt bzw. der an den Remote-Server gesendete Befehl erfolgreich ausgeführt. Wir haben eine umfassende Anleitung zur Konfiguration der SSH-schlüsselbasierten Authentifizierung.
Auch nach der Einrichtung der schlüsselbasierten Authentifizierung ist Ihr Server immer noch anfällig für Brute-Force-Angriffe, und zwar aus dem einfachen Grund, dass die Passwortauthentifizierung noch aktiv ist. Dies muss deaktiviert werden.
Bearbeiten Sie daher die Standard-SSH-Konfigurationsdatei.
$ sudo vim /etc/ssh/sshd_config
Setzen Sie den Parameter PasswordAuthentication wie gezeigt auf no
.
PasswordAuthentication no
Speichern Sie dann die Datei und laden Sie SSH erneut, um die Änderungen zu übernehmen.
$ sudo systemctl reload ssh
Implementieren Sie das Fail2ban Intrusion Prevention Tool
Fail2ban wurde in Python geschrieben und ist ein Open-Source-Intrusion-Prevention-Framework, das Protokolldateien von Diensten auf Authentifizierungsfehler durchsucht und IP-Adressen, die die Passwortauthentifizierungsprüfungen wiederholt nicht bestehen, für einen bestimmten Zeitraum sperrt.
Fail2ban überwacht die Serverprotokolldateien ständig auf Einbruchsversuche und andere schädliche Aktivitäten. Nach einer vordefinierten Anzahl von Authentifizierungsfehlern – in den meisten Fällen drei fehlgeschlagene Anmeldeversuche – blockiert Fail2ban automatisch den Zugriff des Remote-Hosts auf den Server Der Host wird für einen bestimmten Zeitraum in einem „Gefängnis“ festgehalten.
Dadurch reduziert Fail2ban die Rate falscher Passwortauthentifizierungsversuche erheblich. Sehen Sie sich unseren Leitfaden an, wie Sie Fail2ban unter Linux installieren und konfigurieren können, um Ihren Server vor Bruteforce-Angriffen zu schützen.
Begrenzen Sie die maximale Anzahl von SSH-Authentifizierungsversuchen
Eine weitere einfache Möglichkeit, Ihren Server vor Brute-Force-Angriffen zu schützen, besteht darin, die Anzahl der SSH-Anmeldeversuche zu begrenzen. Standardmäßig ist dieser Wert auf 3 eingestellt. Wenn dieser jedoch zufällig auf einen höheren Wert eingestellt ist, stellen Sie ihn auf höchstens 3 Verbindungsversuche ein.
Um beispielsweise die maximale Verbindungsversuche auf 3 festzulegen, setzen Sie den Parameter MaxAuthTries wie gezeigt auf 3
MaxAuthTries = 3
Speichern Sie die Änderungen erneut und laden Sie den SSH-Dienst neu.
$ sudo systemctl reload ssh
Implementieren Sie TCP-Wrapper, um den SSH-Zugriff von Clients einzuschränken
TCP-Wrapper ist eine Bibliothek, die eine hostbasierte Zugriffskontrollliste (ACL) bereitstellt, die den Zugriff auf TCP-Dienste durch Remote-Clients basierend auf ihren Anforderungen einschränkt IP-Adressen
Remote-Hosts können nicht auf Dienste im System zugreifen. TCP-Wrapper verwenden die Konfigurationsdateien /etc/hosts.allow und /etc/hosts.deny (in dieser Reihenfolge), um zu bestimmen, ob der Remote-Client auf eine bestimmte Datei zugreifen darf Dienst oder nicht.
Normalerweise sind diese Dateien auskommentiert und alle Hosts werden durch die TCP-Wrapper-Ebene zugelassen. Regeln zum Gewähren des Zugriffs auf einen bestimmten Dienst werden in der Datei /etc/hosts.allow abgelegt und haben Vorrang vor den Regeln in der Datei /etc/hosts.deny.
Best Practice empfiehlt, alle eingehenden Verbindungen zu blockieren. Öffnen Sie daher die Datei /etc/hosts.deny.
$ sudo vim /etc/hosts.deny
Fügen Sie die folgende Zeile hinzu.
ALL: ALL
Speichern Sie die Änderungen und beenden Sie die Datei.
Greifen Sie dann auf die Datei /etc/hosts.allow zu.
$ sudo vim /etc/hosts.allow
Konfigurieren Sie wie gezeigt die Hosts oder Domänen, die über SSH eine Verbindung zum Server herstellen können. In diesem Beispiel erlauben wir nur zwei Remote-Hosts, sich mit dem Server zu verbinden (173.82.227.89 und 173.82.255.55) und verweigern den Rest.
sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY
Speichern Sie die Änderungen und verlassen Sie die Konfigurationsdatei.
Versuchen Sie zum Testen, eine Verbindung zum Server von einem Host aus herzustellen, der nicht zu den Hosts gehört, auf die Sie Zugriff gewährt haben. Sie sollten wie gezeigt einen Berechtigungsfehler erhalten.
$ ssh [email
kex_exchange_identification: read: Connection reset by peer
Connection reset by 173.82.235.7 port 22
lost connection
Implementieren Sie die SSH-Zwei-Faktor-Authentifizierung
Die Zwei-Faktor-Authentifizierung bietet eine zusätzliche Sicherheitsebene zur Passwortauthentifizierung und macht Ihren Server dadurch sicherer vor Brute-Force-Angriffen. Eine weit verbreitete Zwei-Faktor-Authentifizierung-Lösung ist die Google Authenticator App und wir haben eine gut dokumentierte Anleitung, wie Sie die Zwei-Faktor-Authentifizierung einrichten können.
Abschluss
Dies war eine Zusammenfassung von 5 Best Practices, die Sie implementieren können, um SSH Brute Force-Anmeldeangriffe zu verhindern und die Sicherheit Ihres Servers zu gewährleisten. Sie können auch lesen, wie Sie den OpenSSH-Server sichern und härten.