Website-Suche

So verhindern Sie SSH-Brute-Force-Angriffe mit Fail2ban unter Linux


Eine umfassende Anleitung zur Installation und Konfiguration von Fail2ban unter Linux für mehr Sicherheit.

Linux ist ein beliebtes Betriebssystem für Server und andere Geräte. Es ist bekannt für seine Stabilität, Sicherheit und Flexibilität. Allerdings ist kein Betriebssystem immun gegen Angriffe. Eine der häufigsten Arten von Angriffen auf Linux-Server ist ein Brute-Force-Angriff. In dieser Schritt-für-Schritt-Anleitung zeigen wir Ihnen, wie Sie fail2ban auf einem Linux-System installieren und konfigurieren und wie Sie SSH-Brute-Force-Angriffe mit Fail2ban verhindern.

Bevor ich auf das Thema eingehe, möchte ich eine kurze Einführung in Brute-Force-Angriffe und fail2ban geben.

Was ist ein Brute-Force-Angriff?

Ein Brute-Force-Angriff ist eine Art Cyberangriff, bei dem versucht wird, ein Passwort oder andere geheime Informationen zu erraten, indem alle möglichen Kombinationen ausprobiert werden, bis die richtige Kombination gefunden wird.

Bei einem Brute-Force-Angriff versucht ein Angreifer, das Passwort eines Benutzers zu erraten, indem er wiederholt verschiedene Zeichenkombinationen ausprobiert. Dies kann ein sehr zeitaufwändiger und rechenintensiver Angriff sein, der jedoch häufig erfolgreich ist, da viele Benutzer schwache Passwörter verwenden.

Brute-Force-Angriffe können eingesetzt werden, um Zugriff auf eine Vielzahl von Dingen zu erhalten, darunter:

  • Benutzerkonten auf Websites und Anwendungen,
  • Passwortgeschützte Dateien und Ordner,
  • Verschlüsselungsschlüssel,
  • Netzwerkgeräte,
  • Computersysteme.

Glücklicherweise gibt es viele Sicherheitssoftwareprogramme, die Brute-Force-Angriffe verhindern können. Fail2ban ist einer davon.

Was ist Fail2ban?

Fail2ban ist ein kostenloses Open-Source-Intrusion-Prevention-Softwaretool, das dabei helfen kann, Linux-Server vor Brute-Force-Angriffen zu schützen. Dabei werden die Systemprotokolle auf fehlgeschlagene Anmeldeversuche überwacht. Wenn Fail2Ban eine große Anzahl fehlgeschlagener Anmeldeversuche von einer einzelnen IP-Adresse erkennt, blockiert es diese IP-Adresse automatisch für einen bestimmten Zeitraum. Dadurch wird verhindert, dass der Angreifer den Angriff fortsetzt.

Fail2ban ist ein sehr vielseitiges Tool, das zum Schutz einer Vielzahl von Diensten verwendet werden kann, darunter SSH, HTTP und FTP. Es ist außerdem sehr einfach zu installieren und zu konfigurieren.

Sobald Fail2ban installiert ist, können Sie einfach die Dienste angeben, die Sie schützen möchten, sowie die Anzahl der fehlgeschlagenen Anmeldeversuche, die eine Sperre auslösen.

Fail2ban ist ein wertvolles Tool für jeden Linux-Administrator, der die Sicherheit seiner Server verbessern möchte. Dies ist eine einfache und effektive Möglichkeit, sich vor Brute-Force-Angriffen zu schützen, die eine der häufigsten Bedrohungen für Linux-Server darstellen.

Fail2ban ist in Python geschrieben und sein Quellcode ist auf GitHub frei verfügbar. Es sollte auf jeder Linux-Distribution, jedem macOS- und BSD*-System funktionieren.

Fail2ban-Funktionen

Fail2ban ist ein Sicherheitstool mit mehreren benutzerfreundlichen Funktionen, die dazu beitragen, Ihr System vor unbefugtem Zugriff und Angriffen zu schützen:

  1. IP-Blockierung: Fail2ban kann automatisch IP-Adressen blockieren, die versuchen, mit falschen Anmeldeinformationen oder nicht autorisierten Methoden auf Ihr System zuzugreifen.
  2. Dynamische Regeln: Es erkennt verdächtiges Verhalten in Protokollen dynamisch und erstellt Regeln zum Blockieren bösartiger IP-Adressen, sodass es an sich entwickelnde Bedrohungen angepasst werden kann.
  3. Jail Management: Fail2ban organisiert seine Schutzmaßnahmen in „Jails“ für verschiedene Dienste (wie SSH oder Webserver), sodass Sie sich ganz einfach auf bestimmte Sicherheitsbereiche konzentrieren können.
  4. E-Mail-Benachrichtigungen: Es werden E-Mail-Benachrichtigungen gesendet, wenn verdächtige Aktivitäten erkannt werden, sodass Sie über potenzielle Sicherheitsbedrohungen auf dem Laufenden bleiben.
  5. Whitelisting: Sie können vertrauenswürdige IP-Adressen angeben, die von Sperren ausgenommen werden sollen, um eine versehentliche Blockierung vertrauenswürdiger Benutzer oder Dienste zu verhindern.
  6. Anpassbare Sperrzeiten: Mit Fail2ban können Sie festlegen, wie lange blockierte IP-Adressen gesperrt bleiben, und so Sicherheit und Flexibilität in Einklang bringen.
  7. Ban-Zeiterhöhungen: Es kann die Ban-Zeiten für Wiederholungstäter verlängern und hartnäckige Angreifer abschrecken, indem die Banns mit jedem weiteren Vergehen länger dauern.
  8. Whois-Berichte: Fail2ban kann zusätzliche Informationen über gesperrte IP-Adressen bereitstellen, indem es Whois-Berichte in E-Mail-Benachrichtigungen einfügt.
  9. Integration mit Firewalls: Es funktioniert nahtlos mit verschiedenen Firewall-Systemen (wie iptables oder UFW), um Sperren effektiv durchzusetzen.
  10. Automatische Aufhebung der Sperrung: Fail2ban kann IP-Adressen nach Ablauf der Sperrfrist automatisch aus der Sperrliste entfernen und so sicherstellen, dass legitime Benutzer wieder Zugriff erhalten.
  11. IPv6-Unterstützung: Es unterstützt sowohl IPv4- als auch IPv6-Adressen und ist somit mit modernen Netzwerktechnologien kompatibel.
  12. Flexible Konfiguration: Mit Fail2ban können Sie die Einstellungen an Ihre Sicherheitsanforderungen anpassen und den Schutz an Ihre spezifische Umgebung anpassen.

Einfach ausgedrückt ist Fail2ban wie ein digitaler Sicherheitswächter, der die „Türen“ Ihres Systems überwacht, potenzielle Bedrohungen identifiziert und Maßnahmen ergreift, um unerwünschte Besucher fernzuhalten und vertrauenswürdige Besucher hereinzulassen.

Warum die Verwendung von Fail2ban in Betracht ziehen? Warum nicht einfach die SSH-Authentifizierung mit öffentlichem Schlüssel verwenden?

Warum sollten Sie nicht einfach die Verschlüsselung mit öffentlichen Schlüsseln in SSH erzwingen und Passwörter deaktivieren? Sie müssen sich nicht mit fail2ban herumschlagen, wenn das Brute-Force-Erzwingen eines Passworts buchstäblich unmöglich ist, weil es deaktiviert ist. Einer unserer Leser hat diese Frage gestellt.

Das Erzwingen der SSH-Authentifizierung mit öffentlichem Schlüssel und das Deaktivieren der passwortbasierten Authentifizierung in SSH ist in der Tat eine wirksame Sicherheitsmaßnahme und kann das Risiko von Brute-Force-Angriffen erheblich verringern. Es gibt jedoch einige Gründe, warum man dennoch über die Verwendung von Fail2ban nachdenken könnte:

  1. Kompatibilität und Komfort: Einige Systeme oder Anwendungen erfordern möglicherweise eine passwortbasierte Authentifizierung für bestimmte Benutzer oder Szenarien. Das vollständige Deaktivieren von Passwörtern ist möglicherweise nicht in allen Fällen möglich. Fail2ban bietet eine zusätzliche Sicherheitsebene, ohne die Option zur Passwortauthentifizierung vollständig zu eliminieren.
  2. Menschlicher Fehler: Systemkonfigurationen können manchmal versehentlich falsch konfiguriert werden, sodass die passwortbasierte Authentifizierung versehentlich aktiviert bleibt. Fail2ban fungiert als Sicherheitsnetz und schützt vor möglichen Fehlkonfigurationen oder Änderungen.
  3. Überwachung und Berichterstattung: Fail2ban bietet Protokollierungs- und Berichtsfunktionen, die wertvolle Einblicke in Authentifizierungsversuche liefern können, selbst wenn die passwortbasierte Authentifizierung deaktiviert ist. Diese Protokolle können für die Prüfung und Identifizierung potenzieller Sicherheitsbedrohungen nützlich sein.
  4. Komplexe Umgebungen: In komplexen Serverumgebungen können mehrere Dienste mit unterschiedlichen Authentifizierungsmethoden ausgeführt werden. Fail2ban kann zum Schutz vor Brute-Force-Angriffen über mehrere Dienste hinweg konfiguriert werden und bietet so eine einheitliche Sicherheitslösung.
  5. Adaptive Sicherheit: Die Fähigkeit von Fail2ban, Sperrzeiten anzupassen und sich an sich entwickelnde Bedrohungen anzupassen, macht es zu einem flexiblen Sicherheitstool. Es kann dabei helfen, nicht nur Brute-Force-Angriffe, sondern auch andere Formen verdächtigen Verhaltens zu bekämpfen.

Zusammenfassend lässt sich sagen, dass das Deaktivieren der passwortbasierten Authentifizierung und das ausschließliche Verlassen auf die Verschlüsselung mit öffentlichen Schlüsseln zwar eine starke Sicherheitsmaßnahme darstellt, Fail2ban diesen Ansatz jedoch ergänzen kann, indem es zusätzliche Sicherheitsmaßnahmen und Anpassungsfähigkeit in verschiedenen Serverumgebungen bietet. Es bietet eine umfassendere Verteidigung gegen potenzielle Bedrohungen.

Voraussetzungen

Dies ist ein praktischer Leitfaden. Um mitzumachen, stellen Sie sicher, dass Sie über Debian oder Debian-basierte Systeme wie Ubuntu verfügen.

  • So installieren Sie Debian 12 Bookworm [Eine Schritt-für-Schritt-Anleitung]
  • So installieren Sie Ubuntu 22.04 LTS Server Edition

Für diesen Leitfaden verwende ich die Debian 12 Bookworm Server Edition.

1. Installieren Sie Fail2ban

Aktualisieren Sie zunächst den Paketindex auf Ihrem System, indem Sie den folgenden Befehl ausführen:

sudo apt update

Installieren Sie dann fail2ban, indem Sie den folgenden Befehl ausführen:

sudo apt install fail2ban

2. Konfigurieren Sie Fail2ban, um SSH-Brute-Force-Angriffe zu verhindern

Navigieren Sie nach Abschluss der Installation zum Konfigurationsverzeichnis, indem Sie den folgenden Befehl ausführen:

cd /etc/fail2ban/

In diesem Verzeichnis finden Sie die Hauptkonfigurationsdatei für fail2ban mit dem Namen „jail.conf“. Es wird jedoch empfohlen, eine Kopie der Konfigurationsdatei zu erstellen und die Kopie zu verwenden, anstatt die Originaldatei zu ändern.

Führen Sie dazu Folgendes aus:

sudo cp jail.conf jail.local

Öffnen Sie die kopierte Konfigurationsdatei mit Ihrem bevorzugten Texteditor. In diesem Beispiel verwenden wir den Nano-Editor:

sudo nano jail.local

In dieser Datei können Sie die Einstellungen für verschiedene Dienste wie SSH, Apache und mehr konfigurieren. Um beispielsweise den SSH-Schutz zu konfigurieren, suchen Sie den Abschnitt [sshd] und nehmen Sie die folgenden Änderungen vor:

[sshd]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1800
ignoreip = 127.0.0.1/8

Konfigurieren Sie das SSHD-Gefängnis in Fail2ban

Diese Konfiguration richtet ein Fail2ban-Gefängnis mit dem Namen „[sshd]“ ein, um den SSH-Dienst (Secure Shell) zu schützen. Lassen Sie uns jeden Teil aufschlüsseln:

  • enabled=true: Diese Zeile zeigt an, dass das „sshd“-Gefängnis aktiviert ist, was bedeutet, dass es aktiv ist und auf unbefugte Zugriffsversuche überwacht.
  • port=ssh: Dies gibt die Portnummer (standardmäßig 22) an, auf der der SSH-Dienst ausgeführt wird. Fail2ban überwacht diesen Port auf verdächtige Aktivitäten.
  • filter=sshd: Dies verweist auf den Namen des Filters, der zur Überwachung des SSH-Dienstes angewendet werden soll. Die Filterregeln legen fest, auf welche Ereignisse geachtet werden soll und wie bösartiges Verhalten erkannt wird.
  • logpath=/var/log/auth.log: Dies gibt den Pfad zur Protokolldatei (/var/log/auth.log) an, in der authentifizierungsbezogene Ereignisse für SSH gespeichert sind sind aufgenommen. Fail2ban scannt diese Protokolldatei auf Anzeichen unbefugter Zugriffsversuche.
  • maxretry=3: Dies legt die maximale Anzahl zulässiger fehlgeschlagener Anmeldeversuche fest, bevor Fail2ban Maßnahmen ergreift. Wenn es drei oder mehr aufeinanderfolgende Fehlversuche von derselben IP-Adresse gibt, antwortet Fail2ban.
  • bantime=1800: Dies legt die Dauer in Sekunden fest, für die eine IP-Adresse gesperrt wird, wenn sie die maximale Anzahl zulässiger Fehlversuche überschreitet. In diesem Fall dauert die Sperre 1800 Sekunden (30 Minuten).
  • ignoreip=127.0.0.1/8: Diese Zeile listet IP-Adressen oder IP-Bereiche auf, die von Fail2ban ignoriert werden sollen. Alle Versuche von diesen IP-Adressen werden nicht auf die maximale Anzahl von Wiederholungen angerechnet. Hier wird localhost (127.0.0.1) ignoriert. Diese Konfiguration ist wichtig. Es verhindert, dass Sie von Ihrem eigenen fail2ban-Server ausgeschlossen werden.

Zusammenfassend überwacht diese Fail2ban-Jail-Konfiguration mit dem Namen „[sshd]“ den SSH-Dienst auf dem Standardport 22. Sie verwendet den Filter „sshd“, um Authentifizierungsereignisse zu analysieren, die im /var/ aufgezeichnet sind. log/auth.log-Datei. Wenn sich eine IP-Adresse dreimal oder öfter nicht anmelden kann, wird sie für 30 Minuten gesperrt. Darüber hinaus wird der Localhost ignoriert und löst keine Sperren aus. Diese Konfiguration trägt dazu bei, den SSH-Dienst vor Brute-Force-Angriffen zu schützen, indem IP-Adressen, die verdächtiges Verhalten zeigen, vorübergehend gesperrt werden.

In diesem Beispiel haben wir Ihnen gezeigt, wie Sie SSH vor Brute-Force-Angriffen schützen. Sie können Fail2ban jedoch auch so konfigurieren, dass andere Dienste, beispielsweise FTP Apache usw., gesichert werden.

Ändern Sie die oben genannten Werte entsprechend Ihren Anforderungen. Nachdem Sie die Einstellungen geändert haben, speichern Sie die Änderungen und schließen Sie die Datei, indem Sie STRG+O und anschließend STRG+X drücken Schlüssel.

Hinweis: Sie können auch einzelne Jails im Verzeichnis jail.d konfigurieren, indem Sie eine separate .conf erstellen Dateien für jedes Gefängnis. Dadurch können Sie Einstellungen für verschiedene Dienste oder Szenarien anpassen.

3. Starten Sie Fail2ban neu und aktivieren Sie es

Starten Sie fail2ban neu, um die neuen Einstellungen zu übernehmen, indem Sie den folgenden Befehl ausführen:

sudo systemctl restart fail2ban

Um sicherzustellen, dass fail2ban beim Booten automatisch startet, aktivieren Sie es, indem Sie den folgenden Befehl ausführen:

sudo systemctl enable fail2ban

Das ist es! Fail2ban ist jetzt auf Ihrem Debian-System installiert und konfiguriert.

Sie können den Status überprüfen, indem Sie den folgenden Befehl ausführen:

sudo systemctl status fail2ban

Beispielausgabe:

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
     Active: active (running) since Mon 2023-09-04 12:01:03 IST; 2min 54s ago
       Docs: man:fail2ban(1)
   Main PID: 542 (fail2ban-server)
      Tasks: 5 (limit: 9347)
     Memory: 19.4M
        CPU: 198ms
     CGroup: /system.slice/fail2ban.service
             └─542 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Sep 04 12:01:03 debian12 systemd[1]: Started fail2ban.service - Fail2Ban Service.
Sep 04 12:01:03 debian12 fail2ban-server[542]: 2023-09-04 12:01:03,366 fail2ban.configreader   [542]: WARNING 'allowipv6' not defined in 'Definit>
Sep 04 12:01:03 debian12 fail2ban-server[542]: Server ready

4. Aktivierte Jails anzeigen

Um alle aktivierten Jails anzuzeigen, führen Sie Folgendes aus:

sudo fail2ban-client status

Beispielausgabe:

Status
|- Number of jail:	1
`- Jail list:	sshd

Für diejenigen, die sich fragen: Der Befehl fail2ban-client wird verwendet, um mit Fail2ban zu interagieren und es zu verwalten. Damit können Administratoren den Fail2ban-Dienst und seine „Jails“ (Regeln zur Überwachung und Blockierung böswilliger Aktivitäten) steuern und überwachen.

Mit fail2ban-client können Sie Aufgaben wie das Neuladen von Konfigurationen, das Überprüfen des Status, das Neustarten des Dienstes, das Sperren oder Entsperren von IP-Adressen und mehr ausführen.

Wenn Sie den Status eines bestimmten Gefängnisses anzeigen möchten, zum Beispiel sshd, führen Sie Folgendes aus:

sudo fail2ban-client status sshd

Die Ausgabe zeigt detaillierte Informationen über den Status des „sshd“-Gefängnisses in Fail2ban. Es bietet Einblicke in die fehlgeschlagenen Versuche, die überwachte Protokolldatei und alle gesperrten IP-Adressen.

Status for the jail: sshd
|- Filter
|  |- Currently failed:	0
|  |- Total failed:	0
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	0
   |- Total banned:	0
   `- Banned IP list:	

Hier finden Sie eine Aufschlüsselung der Bedeutung der einzelnen Teile in der obigen Ausgabe.

  • Status für das Gefängnis: sshd: Diese Überschrift gibt an, dass sich die folgenden Informationen auf das Gefängnis „sshd“ beziehen.
  • Filter: Dieser Abschnitt enthält Informationen zu den Filterregeln, die bestimmen, welche Ereignisse überwacht und auf die reagiert wird.

    • Derzeit fehlgeschlagen: Diese Zeile gibt an, dass derzeit 0 fehlgeschlagene Versuche vom „sshd“-Gefängnis verfolgt werden.
    • Gesamtzahl fehlgeschlagener Versuche: Diese Zeile gibt an, dass vom „sshd“-Gefängnis insgesamt 0 fehlgeschlagene Versuche aufgezeichnet wurden.
    • Dateiliste: /var/log/auth.log: Diese Zeile gibt die Protokolldatei (/var/log/auth.log) an, die das Gefängnis „sshd“ auf authentifizierungsbezogene Ereignisse überwacht.
  • Aktionen: Dieser Abschnitt enthält Informationen zu den Aktionen, die Fail2ban ausführt, wenn bösartiges Verhalten erkannt wird.

    • Derzeit gesperrt: Diese Zeile gibt an, dass derzeit 0 IP-Adressen vom „sshd“-Gefängnis gesperrt sind.
    • Insgesamt gesperrt: Diese Zeile zeigt an, dass seit dem Start des „sshd“-Gefängnisses 0 IP-Adressen gesperrt wurden.
    • Liste gesperrter IPs: Diese Zeile zeigt an, dass derzeit keine IP-Adressen vom „sshd“-Gefängnis gesperrt sind.

Überprüfen Sie den Status des SSHD-Gefängnisses

5. Testen Sie Fail2ban

Fail2ban überwacht Protokolldateien, erkennt fehlgeschlagene Anmeldeversuche und sperrt dann die betreffenden IP-Adressen.

Sobald fail2ban installiert und konfiguriert ist, können Sie es testen, um sicherzustellen, dass es ordnungsgemäß funktioniert. Versuchen Sie dazu mehrmals hintereinander, sich mit einem falschen Passwort bei Ihrem Fail2ban-Linux-Server anzumelden. Nach einigen fehlgeschlagenen Versuchen sollte fail2ban Ihre IP-Adresse automatisch blockieren.

Zu Demonstrationszwecken verwende ich ein Debian 11-System mit der IP 192.168.1.101, um eine SSH-Verbindung zum fail2ban-Server herzustellen, der die IP 192.168.1.20 hat.

ssh ostechnix@192.168.1.20

Nach einigen fehlgeschlagenen Versuchen wird die Fehlermeldung „Verbindung abgelehnt“ angezeigt.

ssh: connect to host 192.168.1.20 port 22: Connection refused

SSH-Verbindung abgelehnt

Wie Sie in der obigen Ausgabe sehen können, wird eine Fehlermeldung angezeigt, dass die Verbindung abgelehnt wurde. Das bedeutet, dass -fail2ban das fehlerhafte System gesperrt hat.

Sie können die gesperrten IP-Adressen anzeigen, indem Sie den Status des SSHD-Gefängnisses auf Ihrem fail2ban-Server anzeigen.

sudo fail2ban-client status sshd

Beispielausgabe:

Status for the jail: sshd
|- Filter
|  |- Currently failed:	0
|  |- Total failed:	0
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	1
   |- Total banned:	1
   `- Banned IP list:	192.168.1.101

Zeigt den Status des SSHD-Gefängnisses an

Wie Sie sehen, wird die IP-Adresse 192.168.1.101 nach wiederholten falschen SSH-Anmeldeversuchen aus dem SSHD-Gefängnis verbannt. Diese IP-Adresse wird gemäß meiner Konfiguration für 30 Minuten gesperrt. Sie können diese Zeit natürlich nach Belieben verlängern oder verkürzen.

6. So sperren Sie eine IP-Adresse manuell oder entsperren sie

Um eine IP-Adresse mit Fail2ban manuell zu sperren oder die Sperrung aufzuheben, können Sie den Befehl fail2ban-client verwenden. So können Sie es machen:

6.1. Sperren Sie eine IP-Adresse

Sie können eine IP-Adresse mit dem folgenden Befehl sperren:

sudo fail2ban-client set <jail-name> banip <ip-address>

Ersetzen Sie durch den Namen des spezifischen Gefängnisses, auf das Sie die Sperre anwenden möchten (z. B. „sshd“ für das SSH-Gefängnis) und mit der IP-Adresse, die Sie sperren möchten.

Um beispielsweise die IP-Adresse „192.168.1.101“ im „sshd“-Gefängnis manuell zu sperren, würden Sie Folgendes verwenden:

sudo fail2ban-client set sshd banip 192.168.1.101

Wenn Sie eine bestimmte IP-Adresse für eine benutzerdefinierte Dauer innerhalb eines Gefängnisses sperren möchten, verwenden Sie den folgenden Befehl:

sudo fail2ban-client set <jail-name> bantime <time_in_seconds> --banip <ip_address>

Ersetzen Sie durch den Namen des Gefängnisses, durch die gewünschte Sperrdauer in Sekunden und durch die IP-Adresse, die Sie sperren möchten.

Sie können die Liste der gesperrten IP-Adressen in einem bestimmten Gefängnis überprüfen, indem Sie den Befehl fail2ban-client mit dem Flag „get“ wie folgt verwenden:

sudo fail2ban-client get sshd banned

Weitere Optionen und Anwendungsbeispiele finden Sie im Hilfeabschnitt, indem Sie den folgenden Befehl ausführen:

fail2ban-client --help

Oder,

fail2ban-client -h

6.2. Entsperren Sie eine IP-Adresse

Manchmal möchten Sie möglicherweise eine blockierte IP-Adresse aus einem bestimmten Gefängnis entfernen.

Um die Sperrung einer IP-Adresse manuell aufzuheben (die Sperre aufzuheben), können Sie den folgenden Befehl verwenden:

sudo fail2ban-client set <jail-name> unbanip <ip-address>

Ersetzen Sie durch den Gefängnisnamen (z. B. „sshd“) und durch die IP-Adresse, die Sie aufheben möchten.

Um beispielsweise die Sperrung der IP-Adresse „192.168.1.101“ im „sshd“-Gefängnis manuell aufzuheben, würden Sie Folgendes verwenden:

sudo fail2ban-client set sshd unbanip 192.168.1.101

Entsperren Sie eine IP-Adresse mit dem Befehl fail2ban-client

Beachten Sie, dass das manuelle Sperren oder Aufheben der Sperrung einer IP-Adresse das normale Verhalten von Fail2ban außer Kraft setzen kann. Verwenden Sie diese Befehle daher sorgfältig und nur bei Bedarf.

7. Erhöhen Sie die Sperrzeit für Wiederholungstäter

Fail2ban bietet die Möglichkeit, die Funktion „Ban Time Increment“ zu aktivieren, mit der Sie die Banndauer für Wiederholungstäter automatisch verlängern können. Dies kann eine starke Abschreckung gegen hartnäckige Angreifer sein.

Öffnen Sie die Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

sudo nano /etc/fail2ban/jail.local

Suchen Sie in der Konfigurationsdatei nach den Zeilen, die mit den Einstellungen bantime.increment und bantime.factor verknüpft sind, und kommentieren Sie diese aus.

[...]
bantime.increment = true
bantime.factor = 2
bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor
[...]

In diesem Beispiel ist die Einstellung bantime.increment aktiviert (true) und der Wert bantime.factor auf 2 gesetzt. Dies bedeutet das Verbot Die Zeit wird für jede weitere Sperre verdoppelt.

Nachdem Sie die Änderungen vorgenommen haben, speichern Sie die Konfigurationsdatei und schließen Sie den Texteditor.

Um die Änderungen zu übernehmen, starten Sie den Fail2ban-Dienst neu:

sudo systemctl restart fail2ban

Mit dieser Konfiguration erhöht Fail2ban automatisch die Sperrzeit für Wiederholungstäter basierend auf der angegebenen Logik. Diese Funktion kann bei der Abschreckung hartnäckiger Angreifer wirksam sein, indem Sperren mit jedem weiteren Verstoß verlängert werden. Passen Sie die Einstellung bantime.factor an die gewünschte Inkrementstufe an.

Denken Sie daran, die Konfiguration gründlich zu testen, um sicherzustellen, dass sie Ihren Sicherheitszielen und -anforderungen entspricht.

8. IP-Adressen auf die weiße Liste setzen

Um eine IP-Adresse auf die Whitelist zu setzen, muss bestimmten IP-Adressen gestattet werden, die Sperrmechanismen von Fail2ban zu umgehen. Dies ist nützlich, um versehentliche Sperrungen für vertrauenswürdige IP-Adressen zu verhindern, beispielsweise Ihre eigene IP-Adresse oder die von vertrauenswürdigen Diensten.

Öffnen Sie die fail2ban-Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

sudo nano /etc/fail2ban/jail.local

Suchen Sie die Zeile ignoreip. Kommentieren Sie es aus, indem Sie das # am Anfang der Zeile entfernen, wenn es auskommentiert ist. Fügen Sie dann die IP-Adressen hinzu, die Sie auf die Whitelist setzen möchten, getrennt durch Leerzeichen oder Kommas.

ignoreip = 127.0.0.1/8 192.168.1.123
[...]

In diesem Beispiel wird die IP-Adresse 192.168.1.123 auf die Whitelist gesetzt. Sie können weitere IP-Adressen oder IP-Bereiche im gleichen Format hinzufügen.

Nachdem Sie die Änderungen vorgenommen haben, speichern Sie die Konfigurationsdatei und schließen Sie den Texteditor.

Um die Änderungen zu übernehmen, starten Sie den Fail2ban-Dienst neu:

sudo systemctl restart fail2ban

Mit dieser Konfiguration unterliegt die IP-Adresse, die Sie auf die Whitelist gesetzt haben, nicht den Sperrregeln von Fail2ban. Es ist wichtig, nur vertrauenswürdige IP-Adressen auf die Whitelist zu setzen, da dies bei falscher Vorgehensweise möglicherweise die Sicherheitsvorteile von Fail2ban untergraben könnte.

9. Fail2ban-Protokolle anzeigen

Sobald fail2ban konfiguriert ist, sollten Sie es überwachen, um sicherzustellen, dass es ordnungsgemäß funktioniert. Sie können die fail2ban-Protokolldateien überprüfen, um zu sehen, ob verdächtige Aktivitäten erkannt und blockiert werden.

sudo tail /var/log/fail2ban.log

Beispielausgabe:

2023-09-04 13:04:44,614 fail2ban.filter         [2087]: INFO    [sshd] Found 192.168.1.101 - 2023-09-04 13:04:39
2023-09-04 13:04:46,216 fail2ban.filter         [2087]: INFO    [sshd] Found 192.168.1.101 - 2023-09-04 13:04:46
2023-09-04 13:04:52,122 fail2ban.filter         [2087]: INFO    [sshd] Found 192.168.1.101 - 2023-09-04 13:04:51
2023-09-04 13:04:52,417 fail2ban.actions        [2087]: NOTICE  [sshd] Ban 192.168.1.101
2023-09-04 13:34:51,119 fail2ban.actions        [2087]: NOTICE  [sshd] Unban 192.168.1.101
2023-09-04 13:37:05,961 fail2ban.filter         [2087]: INFO    [sshd] Found 192.168.1.101 - 2023-09-04 13:37:05
2023-09-04 13:37:09,422 fail2ban.filter         [2087]: INFO    [sshd] Found 192.168.1.101 - 2023-09-04 13:37:09
2023-09-04 13:37:15,328 fail2ban.filter         [2087]: INFO    [sshd] Found 192.168.1.101 - 2023-09-04 13:37:14
2023-09-04 13:37:15,372 fail2ban.actions        [2087]: NOTICE  [sshd] Ban 192.168.1.101
2023-09-04 13:50:16,214 fail2ban.actions        [2087]: NOTICE  [sshd] Unban 192.168.1.101

Fail2ban-Protokolle anzeigen

Wenn Sie fail2ban-Protokolle in Echtzeit überwachen möchten, fügen Sie einfach das Flag -f hinzu.

sudo tail -f /var/log/fail2ban.log

Sie verwenden den Befehl grep auch zum Auffinden bestimmter Details in fail2ban-Protokolldateien, wie IP-Adressen, Benutzeragenten oder Fehlermeldungen. Dadurch können Sie Ihre Suche eingrenzen und bestimmte Informationen identifizieren, die Sie interessieren.

Wenn Sie beispielsweise Ergebnisse suchen und filtern möchten, die eine IP-Adresse enthalten, verwenden Sie Folgendes:

grep "192.168.1.101" /var/log/fail2ban.log

Ebenso können Sie Protokolle filtern, die einen bestimmten Benutzeragenten (z. B. Bing) enthalten:

grep "Bing" /var/log/fail2ban.log

Filtern Sie Protokolleinträge, die Fehlermeldungen enthalten.

grep "error" /var/log/fail2ban.log

Sie können auch gesperrte oder nicht gesperrte IP-Adressen mit Datum und Uhrzeit finden.

Um gesperrte IP-Adressen zusammen mit dem entsprechenden Datum und der entsprechenden Uhrzeit zu finden, können Sie den folgenden Befehl verwenden:

sudo grep 'Ban' /var/log/fail2ban.log
2023-09-04 13:04:52,417 fail2ban.actions        [2087]: NOTICE  [sshd] Ban 192.168.1.101
2023-09-04 13:37:15,372 fail2ban.actions        [2087]: NOTICE  [sshd] Ban 192.168.1.101

Dies hilft Ihnen, die Aktivität einer bestimmten IP-Adresse zu verfolgen.

Führen Sie Folgendes aus, um nicht gesperrte IP-Adressen mit Zeitstempel anzuzeigen:

sudo grep 'Unban' /var/log/fail2ban.log

10. Fail2ban-Regeln anzeigen

Standardmäßig fügt Fail2ban der IPTables-Firewall Regeln hinzu, um IP-Adressen zu blockieren, die einen unbefugten Zugriff versuchen. Diese Regeln werden normalerweise einer benutzerdefinierten Kette hinzugefügt, die für das Gefängnis spezifisch ist (z. B. f2b-sshd für das SSH-Gefängnis).

Mit dem folgenden Befehl können Sie die von fail2ban eingefügten Regeln anzeigen:

sudo iptables -S

Beispielausgabe:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b-sshd
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A f2b-sshd -j RETURN

Wie Sie in der Ausgabe sehen können, werden die Zeilen, die die Zeichenfolge "f2b-" enthalten, von fail2ban eingefügt.

Hier,

  • -N f2b-sshd: Diese Zeile erstellt eine neue benutzerdefinierte Kette mit dem Namen f2b-sshd. Diese Kette wird verwendet, um Regeln im Zusammenhang mit dem Fail2ban-„sshd“-Gefängnis zu verwalten, das zum Schutz des SSH-Zugriffs verwendet wird.
  • -A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd: Diese Zeile fügt der INPUT-Kette eine Regel hinzu. Es gibt an, dass eingehender TCP-Verkehr, der auf mehrere Ports (angegeben durch --dports 22) zielt, an die benutzerdefinierte Kette f2b-sshd weitergeleitet werden soll. Diese Regel wird verwendet, um Datenverkehr im Zusammenhang mit dem SSH-Dienst an die Fail2ban-Kette zu leiten.
  • -A f2b-sshd -j RETURN: Diese Regel befindet sich innerhalb der f2b-sshd-Kette. Es gibt an, dass ein Paket, wenn es diese Regel innerhalb der f2b-sshd-Kette erreicht, an die vorherige Kette zurückgegeben werden soll (in diesem Fall die Haupt-INPUT-Kette). Diese Regel hilft, die Verarbeitung von Paketen zu optimieren, sodass alle Pakete, die nicht den von anderen Regeln in der f2b-sshd-Kette festgelegten Bedingungen entsprechen, ohne weitere Verarbeitung zu anderen Regeln oder Ketten weitergeleitet werden können.

Um nur die von Fail2ban eingefügten Regeln zu filtern und anzuzeigen, können Sie die Option -L zusammen mit dem Kettennamen verwenden. So können Sie es machen:

sudo iptables -L <chain-name>

Ersetzen Sie durch den Namen der spezifischen Kette, die von Fail2ban verwendet wird. Wenn Sie beispielsweise die von Fail2ban für das SSH-Gefängnis (f2b-sshd) eingefügten Regeln anzeigen möchten, würden Sie Folgendes ausführen:

sudo iptables -L f2b-sshd

Dieser Befehl zeigt Ihnen die Regeln an, die Fail2ban in die angegebene Kette eingefügt hat. Auf diese Weise können Sie sehen, welche IP-Adressen von Fail2ban für einen bestimmten Dienst oder ein bestimmtes Gefängnis gesperrt wurden.

Beachten Sie, dass die Regeln von Fail2ban dynamisch verwaltet werden, sodass sich die Regeln je nach erkannter Aktivität und konfigurierten Sperrzeiten ändern können.

Sie können auch den grep-Befehl verwenden, um nur die von fail2ban eingefügten Regeln zu filtern.

sudo iptables -S | grep f2b

Oder,

sudo iptables -L | grep f2b

11. Konfigurieren Sie Fail2ban für die Verwendung von UFW

Wie bereits erwähnt, verwendet Fail2ban standardmäßig die IPTables-Firewall, um IP-Adressen zu sperren. Sie können die Standard-Firewall auch in eine andere ändern.

Um beispielsweise Fail2ban für die Verwendung von UFW (Uncomplicated Firewall) zu konfigurieren, stellen Sie sicher, dass es installiert ist:

sudo apt install ufw

Öffnen Sie die Konfigurationsdatei jail.local in einem Texteditor, suchen Sie die Zeile „banaction“ und setzen Sie ihren Wert auf ufw.

[...]
banaction=ufw
[...]

Speichern Sie die Datei und schließen Sie sie.

Starten Sie den fail2ban-Dienst neu, damit die Änderungen wirksam werden.

sudo systemctl restart fail2ban

Von nun an wird Fail2ban die beleidigenden IP-Adressen mit UFW sperren.

12. Konfigurieren Sie E-Mail-Benachrichtigungen

Fail2ban ist hochgradig anpassbar und kann für die Überwachung einer breiten Palette von Protokolldateien und Diensten konfiguriert werden. Sie können auch die Aktionen anpassen, die fail2ban ausführt, wenn verdächtige Aktivitäten erkannt werden, z. B. das Senden einer E-Mail-Benachrichtigung oder das Ausführen eines benutzerdefinierten Skripts.

Durch das Einrichten von E-Mail-Benachrichtigungen in Fail2ban können Sie Benachrichtigungen über Sicherheitsvorfälle erhalten und notwendige Maßnahmen ergreifen. Sie können Fail2ban so konfigurieren, dass E-Mails mit Whois-Berichten an eine angegebene E-Mail-Adresse gesendet werden.

Um fail2ban für das Senden von E-Mail-Benachrichtigungen zu konfigurieren, bearbeiten Sie die Konfigurationsdatei jail.local:

sudo nano /etc/fail2ban/jail.local

In der Konfigurationsdatei finden Sie die relevanten Einstellungen für E-Mail-Benachrichtigungen. Diese Einstellungen befinden sich häufig oben in der Datei. Legen Sie destemail auf die E-Mail-Adresse fest, an die Sie Benachrichtigungen erhalten möchten, und legen Sie sender auf die E-Mail-Adresse fest, von der Benachrichtigungen gesendet werden.

[...]
destemail = admin@example.com
sender = f2b@example.com
mta=sendmail
[...]

In diesem Beispiel ist admin@example.com die E-Mail-Adresse, die die Benachrichtigungen erhält, und f2b@example.com ist die E-Mail-Adresse, die die Benachrichtigungen sendet. Ersetzen Sie die beiden E-Mail-Adressen durch Ihre eigene.

Nachdem Sie die Änderungen vorgenommen haben, speichern Sie die Konfigurationsdatei und schließen Sie den Texteditor.

Wenn in Ihrem System kein funktionierender E-Mail-Server konfiguriert ist, müssen Sie möglicherweise ein E-Mail-Relay einrichten oder die lokale E-Mail-Zustellung konfigurieren. Stellen Sie sicher, dass Ihr Server in der Lage ist, E-Mails zu versenden.

Um die Änderungen zu übernehmen, starten Sie den Fail2ban-Dienst neu:

sudo systemctl restart fail2ban

Mit dieser Konfiguration sendet Fail2ban E-Mail-Benachrichtigungen an die angegebene E-Mail-Adresse, wenn ein Verbot ausgelöst wird. Diese Benachrichtigungen können Whois-Berichte und andere Informationen im Zusammenhang mit der gesperrten IP-Adresse enthalten.

13. Wann Fail2ban nicht verwendet werden sollte

Obwohl Fail2ban die Sicherheit Ihres Systems verbessern kann, gibt es Szenarien, in denen es möglicherweise nicht die beste Lösung ist. Hier einige Warnungen und Überlegungen:

  1. Triviale Angriffe und Protokollierungsabhängigkeit: Fail2ban ist wirksam gegen grundlegende Angriffe, hängt jedoch von einer ordnungsgemäßen Protokollierung und der Verfügbarkeit eines unterstützenden Daemons ab. Wenn Ihre Protokollierung unzureichend oder inkonsistent ist, könnte die Wirksamkeit von Fail2ban beeinträchtigt werden.
  2. Nur Authentifizierung mit öffentlichem Schlüssel: Normalerweise ist die Verwendung von Fail2Ban mit sshd nicht erforderlich, wenn nur die Authentifizierung mit öffentlichem Schlüssel aktiviert ist. Wenn Sie bereits die SSH-schlüsselbasierte Authentifizierung konfiguriert haben, ist fail2ban nicht erforderlich.
  3. Kein Ersatz für ein VPN: Fail2ban ist kein Ersatz für die Verwendung eines Virtual Private Network (VPN) zur Sicherung Ihrer Verbindungen. Vermeiden Sie es, Dienste direkt dem Internet zugänglich zu machen, es sei denn, dies ist unbedingt erforderlich.
  4. Bedenken hinsichtlich IP-Spoofing: Fail2ban ist möglicherweise anfällig für IP-Spoofing. Wenn ein Angreifer Ihre IP-Adresse kennt, sendet er möglicherweise Pakete mit einem gefälschten Quellheader, was möglicherweise dazu führt, dass Ihre IP gesperrt wird. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie die IP-Adresse Ihres fail2ban-Servers in der ignoreip-Konfiguration angeben.

Denken Sie daran, dass Fail2ban ein Tool ist, das Ihre Sicherheitsmaßnahmen ergänzt. Es ist jedoch wichtig, seine Vorteile anhand Ihrer spezifischen Einrichtung und Anforderungen zu bewerten.

14. So deinstallieren Sie Fail2ban

Um fail2ban von Ihrem Linux-System zu entfernen, stoppen Sie den fail2ban-Dienst mit den folgenden Befehlen:

sudo systemctl disable fail2ban
sudo systemctl stop fail2ban

Sie können auch den folgenden einzeiligen Befehl verwenden, um den fail2ban-Dienst sofort zu stoppen und zu deaktivieren:

sudo systemctl disable fail2ban --now

Dann deinstallieren Sie fail2ban mit dem folgenden Befehl:

sudo apt remove fail2ban --purge

Häufig gestellte Fragen

Hier finden Sie eine Liste häufig gestellter Fragen und deren Antworten zu Fail2ban.

F: Was ist Fail2ban?

A: Fail2ban ist ein Sicherheitstool, das Ihre Computersysteme vor unbefugten Zugriffsversuchen und Brute-Force-Angriffen schützt, indem es IP-Adressen, die verdächtiges Verhalten zeigen, automatisch sperrt.

F: Wie funktioniert Fail2ban?

A: Fail2ban überwacht Protokolldateien für bestimmte Dienste (wie SSH oder Webserver). Wenn wiederholt fehlgeschlagene Anmeldeversuche oder andere böswillige Aktivitäten festgestellt werden, wird die für das Verhalten verantwortliche IP-Adresse vorübergehend gesperrt.

F: Was ist ein Gefängnis in Fail2ban?

A: Ein Jail ist eine Konfigurationseinstellung, die Regeln und Aktionen für einen bestimmten Dienst definiert. Es ist wie ein Container zur Überwachung und Verwaltung potenzieller Bedrohungen im Zusammenhang mit diesem Dienst.

F: Kann ich mit Fail2ban vertrauenswürdige IP-Adressen auf die Whitelist setzen?

A: Ja, Sie können vertrauenswürdige IP-Adressen auf die Whitelist setzen, um zu verhindern, dass sie versehentlich gesperrt werden. Dies ist nützlich, um den Zugriff für bekannte Benutzer oder Dienste sicherzustellen.

F: Wie benachrichtigt mich Fail2ban über Sicherheitsereignisse?

A: Fail2ban kann E-Mail-Benachrichtigungen senden, wenn eine IP-Adresse gesperrt wird. Diese E-Mails können Whois-Berichte enthalten, um zusätzliche Informationen über die gesperrte IP bereitzustellen.

F: Kann ich die Sperrzeiten in Fail2ban anpassen?

A: Ja, Sie können festlegen, wie lange eine IP-Adresse gesperrt bleibt, nachdem die Gefängnisregeln ausgelöst wurden. So können Sie Sicherheit und Flexibilität in Einklang bringen.

F: Was ist die Erhöhung der Sperrzeit in Fail2ban?

A: Die Sperrzeiterhöhung ist eine Funktion, die die Sperrzeit für Wiederholungstäter automatisch erhöht. Mit jedem weiteren Bann wird die Banndauer länger, um hartnäckige Angreifer abzuschrecken.

F: Funktioniert Fail2ban mit IPv6-Adressen?

A: Ja, Fail2ban unterstützt sowohl IPv4- als auch IPv6-Adressen und ist somit mit modernen Netzwerktechnologien kompatibel.

F: Kann Fail2ban IP-Adressen automatisch entsperren?

A: Ja, Fail2ban kann IP-Adressen nach Ablauf der Sperrfrist automatisch aus der Sperrliste entfernen. Dadurch wird sichergestellt, dass legitime Benutzer im Laufe der Zeit wieder Zugriff erhalten.

F: Ist die Fail2ban-Konfiguration flexibel?

A: Auf jeden Fall! Die Konfiguration von Fail2ban lässt sich an Ihre Sicherheitsanforderungen anpassen und den Schutz an Ihre spezifische Umgebung anpassen.

F: Funktioniert Fail2ban mit verschiedenen Firewall-Systemen?

A: Ja, Fail2ban arbeitet nahtlos mit verschiedenen Firewall-Systemen wie iptables oder UFW zusammen und verbessert so die Sicherheitsmaßnahmen Ihres Systems.

F: Wie kann ich Fail2ban mit E-Mail-Benachrichtigungen integrieren?

A: Sie können Fail2ban so konfigurieren, dass E-Mail-Benachrichtigungen mit Whois-Berichten an eine angegebene E-Mail-Adresse gesendet werden, wenn verdächtige Aktivitäten erkannt werden.

F: Kann ich die Sperrzeit für Wiederholungstäter in Fail2ban verlängern?

A: Ja, Fail2ban bietet eine Funktion zum Aktivieren von Sperrzeitinkrementen, wodurch die Sperrdauer für Wiederholungstäter verlängert wird. Dies schreckt hartnäckige Angreifer ab.

F: Wird Fail2ban für die Serversicherheit empfohlen?

A: Ja, Fail2ban ist ein weit verbreitetes Tool zur Verbesserung der Serversicherheit, indem es unbefugte Zugriffsversuche verhindert und vor Brute-Force-Angriffen schützt.

F: Ist Fail2ban sowohl für Anfänger als auch für erfahrene Benutzer geeignet?

A: Ja, Fail2ban bietet ein Gleichgewicht zwischen Einfachheit und erweiterten Funktionen und eignet sich daher für Benutzer mit unterschiedlichem Erfahrungsniveau in der Systemadministration und -sicherheit.

Abschluss

Fail2ban ist ein unverzichtbares Tool zur Verbesserung der Sicherheit Ihres Linux-Servers. Durch die Überwachung von Protokolldateien und die automatische Blockierung von IP-Adressen kann fail2ban dazu beitragen, unbefugten Zugriff auf Ihr System zu verhindern. Mit der richtigen Konfiguration und Anpassung kann fail2ban Ihrem Linux-Server eine zusätzliche Schutzebene bieten.

Wenn fail2ban auf Ihrem Debian-Linux-Server installiert und konfiguriert ist, können Sie Ihren Server vor SSH-Brute-Force-Angriffen und anderen böswilligen Aktivitäten schützen. Wenn Sie die Schritte in dieser Anleitung befolgen, können Sie die Sicherheit Ihres Servers verbessern und sich darauf verlassen, dass Ihr System geschützt ist.

Ressourcen:

  • Offizielle Website von Fail2ban
  • Fail2ban GitHub Repository

Ausgewähltes Bild von Pete Linforth von Pixabay.