GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So blockieren Sie SSH-Brute-Force-Angriffe mit SSHGUARD

SSHGuard ist ein Open-Source-Daemon, der Hosts vor Brute-Force-Angriffen schützt. Erreicht wird dies durch Überwachung und Aggregation von Systemprotokollen, Erkennung von Angriffen und Blockierung von Angreifern mithilfe eines der Linux-Firewall-Backends:iptables, FirewallD, pf und ipfw.

Ursprünglich entwickelt, um eine zusätzliche Schutzebene für den OpenSSH-Dienst bereitzustellen, schützt SSHGuard auch eine breite Palette von Diensten wie Vsftpd und Postfix. Es erkennt mehrere Protokollformate, einschließlich Syslog, Syslog-ng und rohe Protokolldateien.

SSHGuard ist Fail2ban ziemlich ähnlich, nur dass es in C geschrieben ist (Fail2ban ist in Python geschrieben), leichter ist und weniger Funktionen bietet.

In diesem Handbuch zeigen wir, wie Sie SSHGuard installieren und konfigurieren können, um SSH-Brute-Force-Angriffe auf Ihrem Linux-Server zu blockieren.

Schritt 1:SSHGuard unter Linux installieren

Wir beginnen mit der Installation von SSHGuard unter Linux.

Installieren Sie SSHGuard auf Debian/Ubuntu

Aktualisieren Sie zuerst die Paketlisten und installieren Sie dann SSHGuard aus den Standard-Repositories mit dem apt-Paketmanager.

$ sudo apt update
$ sudo apt install sshguard

Nach der Installation startet der SSHGuard-Dienst automatisch, und Sie können dies mit dem folgenden Befehl überprüfen:

$ sudo systemctl status sshguard

Installieren Sie SSHGuard auf Yum/RHEL-Systemen

Beginnen Sie bei RHEL-basierten Distributionen wie CentOS mit der Installation des EPEL-Repositorys, wie im folgenden Befehl angegeben.

$ sudo yum install epel-release

ODER

$ sudo dnf install epel-release

Wenn EPEL vorhanden ist, fahren Sie fort und installieren Sie SSHGuard mit dem dnf-Paketmanager.

$ sudo dnf install sshguard

Starten Sie nach der Installation SSHGuard und stellen Sie es so ein, dass es beim Systemstart oder Neustart gestartet wird.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Stellen Sie sicher, dass SSHGuard wie erwartet ausgeführt wird.

$ sudo systemctl status sshguard

Schritt 2:SSHGuard-Konfiguration unter Linux

SSHGuard überwacht aktiv die Protokolldateien /var/log/auth.log, /var/log/secure systemd und syslog-ng auf fehlgeschlagene Anmeldeversuche.

Für jeden erfolglosen Anmeldeversuch wird der Remote-Host für eine begrenzte Zeit gesperrt, die standardmäßig auf 120 Sekunden eingestellt ist. Danach erhöht sich die Sperrzeit mit jedem weiteren fehlgeschlagenen Anmeldeversuch um den Faktor 1,5.

Die Zeit, zu der die angreifenden Hosts gesperrt werden, ist neben anderen Parametern in der Datei sshguard.conf angegeben. Sie können wie gezeigt mit dem vim-Editor auf die Konfigurationsdatei zugreifen.

$ sudo vim /etc/sshguard/sshguard.conf

Bei RHEL-basierten Distributionen befindet sich die Konfigurationsdatei im folgenden Pfad.

$ sudo vim /etc/sshguard.conf

Hier ist ein Beispiel der Konfigurationsdatei, wenn sie von Ubuntu / Debian aus betrachtet wird.

Konzentration auf die Hauptoptionen:

  • Das BACKEND Direktive zeigt auf den vollständigen Pfad der ausführbaren Backend-Datei. In diesem Beispiel sehen wir, dass IPtables als Standard-Firewall-Backend festgelegt ist.
  • Der SCHWELLENWERT Direktive blockiert Angreifer, wenn ihre Angriffspunktzahl den angegebenen Wert überschreitet.
  • Die BLOCK_TIME Option ist die Anzahl der Sekunden, die ein Angreifer nach jedem aufeinanderfolgenden fehlgeschlagenen Anmeldeversuch blockiert wird. Standardmäßig ist diese nach dem ersten Versuch auf 120 gesetzt. Diese erhöht sich mit jedem weiteren fehlgeschlagenen Anmeldeversuch.
  • Die DETECTION_TIME Option bezieht sich auf die Zeit in Sekunden, während der der Angreifer vom System registriert oder gespeichert wird, bevor sein Score zurückgesetzt wird.
  • Die WHITELIST_file Option zeigen auf den vollständigen Pfad der Whitelist-Datei, die Hosts enthält, die nicht auf die Blacklist gesetzt werden sollen.

Schritt 3:Konfigurieren Sie SSHGuard, um SSH-Brute-Force-Angriffe zu blockieren

Um Brute-Force-Angriffe abzuwehren, müssen Sie die folgenden Firewalls so konfigurieren, dass sie mit sshguard funktionieren.

SSH-Angriffe mit UFW blockieren

Wenn Sie UFW auf Ihrem Ubuntu-/Debian-System installiert und aktiviert haben, ändern Sie die Datei /etc/ufw/before.rules.

$ sudo vim etc/ufw/before.rules

$ sudo vim etc/ufw/before.rules

Fügen Sie die folgenden Zeilen direkt nach dem Abschnitt „allow all on loopback“ hinzu.

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

Speichern Sie die Datei und starten Sie UFW neu.

$ sudo systemctl restart ufw

Versuchen Sie nun, sich von einem anderen System mit den falschen Anmeldeinformationen beim Server anzumelden, und beachten Sie, dass Sie nach dem ersten fehlgeschlagenen Anmeldeversuch 120 Sekunden lang gesperrt werden.

Sie können dies überprüfen, indem Sie die Protokolldatei auth.log überprüfen.

$ sudo tail -f  /var/log/auth.log

Nach dem nächsten fehlgeschlagenen Protokollierungsversuch erhöht sich die Sperrzeit auf 240 Sekunden, dann auf 480 Sekunden, dann auf 960 Sekunden und so weiter.

SSH-Angriffe mit Firewalld blockieren

Wenn Sie firewalld ausführen, stellen Sie sicher, dass es eingerichtet und aktiviert ist. Führen Sie dann den folgenden Befehl aus, um sshguard in Ihrer bevorzugten Zone zu aktivieren.

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

Um die Änderungen zu übernehmen, laden Sie Firewalld und sshguard neu.

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

Überprüfen Sie dann die Regel wie folgt:

$ sudo firewall-cmd —-info-ipset=sshguard4

SSH-Angriffe mit Iptables blockieren

Wenn Sie immer noch Iptables verwenden, erstellen Sie zunächst eine neue Kettenregel für sshguard in Iptables, um unerwünschte Gäste zu blockieren.

# iptables -N sshguard

Aktualisieren Sie als Nächstes die INPUT-Kette, um den Datenverkehr an sshguard weiterzuleiten und den gesamten Datenverkehr von schändlichen Parteien zu blockieren.

# iptables -A INPUT -j sshguard

Um bestimmte Ports wie SSH, POP und IMAP vor Missbrauchern zu blockieren, führen Sie den folgenden Befehl aus:

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

Speichern Sie abschließend die Regel, damit die Änderungen wirksam werden.

# iptables-save > /etc/iptables/iptables.rules

Schritt 4:SSH-blockierte Hosts auf die Whitelist setzen

Um einen blockierten Host auf die Whitelist zu setzen, geben Sie einfach seinen Hostnamen oder seine IP-Adresse in der Whitelist-Datei an, die sich in:

befindet
/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

Stellen Sie anschließend sicher, dass Sie den sshguard-Daemon und das Firewall-Backend neu starten, damit die Änderungen wirksam werden.

In diesem Leitfaden haben wir gezeigt, wie Sie SSH-Bruteforce-Angriffe mit SSHGuard auf Linux-Systemen blockieren können.

Weitere Anleitungen finden Sie auf unserer Homepage.


Linux
  1. Ssh – Wie verbinde ich mich mit einem PC über einen anderen PC mit SSH?

  2. Ssh – Wie beschleunigt man die zu langsame SSH-Anmeldung?

  3. Wie kann man mit einem anderen Server per SSH auf einen Server zugreifen?

  4. Wie setze ich das Plesk Admin-Passwort mit SSH in Linux Server zurück?

  5. Wie erzwinge ich das Trennen von Screen von einer anderen SSH-Sitzung?

So führen Sie eine Remote-Linux-Sicherung mit SSH durch

Gewusst wie:cPHulk-Brute-Force-Schutz auf cPanel und WHM

Generieren und Verwenden eines SSH-Schlüssels mit PuTTY

Wie blockiere ich eine IP-Adresse mit .htaccess?

So verschlüsseln Sie Blockgeräte mit LUKS unter Linux

So erstellen Sie eine Remote-VM mit dem generischen Docker-Machine-SSH-Treiber