Website-Suche

So schützen Sie Ihren Server mit Fail2Ban unter Linux


Die Sicherung eines Servers hat für jedes Unternehmen oder jede Organisation höchste Priorität. Eines der wichtigsten Tools im Toolkit eines Systemadministrators ist Fail2Ban. In dieser Anleitung wird erklärt, was Fail2Ban ist und wie Sie damit Ihren Linux-Server vor Angriffen schützen können.

Inhalt

  • Was ist Fail2Ban?
  • Warum Fail2Ban verwenden?
  • Fail2Ban installieren
  • Fail2Ban konfigurieren
  • Häufig gestellte Fragen

Tipp: Schauen Sie sich zusätzlich zu Fail2Ban diese Open-Source-Tools an, um Ihren Server zu sichern.

Was ist Fail2Ban?

Fail2Ban ist ein Intrusion-Prevention-Tool, das Protokolldateien überwacht und IP-Adressen sperrt, die Anzeichen bösartiger Aktivitäten aufweisen. Dies geschieht durch die Erstellung von „Filtern“, die bestimmte Muster in den Protokolldateien abgleichen, und die Ausführung von Aktionen, wie z. B. das Sperren der betreffenden IP-Adresse.

Warum Fail2Ban verwenden?

Es gibt einige Gründe, fail2ban zu verwenden. Es kann:

  • Sparen Sie Zeit, indem Sie schädliche IP-Adressen automatisch sperren.
  • Helfen Sie dabei, Ihren Server zu schützen, indem Sie die Chancen eines erfolgreichen Angriffs verringern.
  • Geben Sie Ihnen die Gewissheit, dass Ihr Server überwacht und geschützt wird.

Fail2Ban installieren

Standardmäßig ist Fail2Ban in den Ubuntu-Repositorys verfügbar. Installieren Sie es mit apt.

sudo add-apt-repository universe
sudo apt update && sudo apt install fail2ban -y

Fail2Ban stellt seinen Dienst im Hintergrund ein, systemd deaktiviert ihn jedoch standardmäßig. Sie können es mit den folgenden Befehlen starten und aktivieren:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Überprüfen Sie mit dem folgenden Befehl, ob Fail2Ban ausgeführt wird:

sudo systemctl status fail2ban

Sie sehen eine Ausgabe ähnlich der Abbildung unten.

Fail2Ban konfigurieren

Das Verzeichnis „/etc/fail2ban“ enthält die Konfigurationsdateien für Fail2Ban. Standardmäßig wird Fail2Ban mit einer Datei „jail.conf“ geliefert, die Einstellungen enthält, die für alle Dienste gelten.

Es empfiehlt sich jedoch, eine lokale Datei „jail.local“ zu erstellen und die Einstellungen in „jail.conf“ zu überschreiben, da alle Änderungen, die Sie an „jail.conf“ vornehmen, bei jeder Aktualisierung des Programms verloren gehen.

Sie können Ihre Datei „jail.local“ mit den folgenden Befehlen erstellen:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Öffnen Sie die Datei jail.local, um sie zu bearbeiten:

sudo nano /etc/fail2ban/jail.local

Gut zu wissen: Erfahren Sie, wie Sie einen SSH-Honeypot erstellen, um Hacker auf Ihrem Server abzufangen.

Erkunden der jail.local-Datei

Sie erhalten eine ähnliche Ausgabe wie unten und sind möglicherweise von der Anzahl der verfügbaren Optionen überwältigt. Aber keine Sorge, wir zeigen Ihnen die wichtigsten Optionen.

Am Anfang einer Zeile sehen Sie das Symbol „#“, das darauf hinweist, dass es sich um einen Kommentar handelt. Fail2Ban verwendet diese, um zu erklären, was eine bestimmte Einstellung bewirkt. Durch Entfernen dieses Symbols können Sie hier einige Einstellungen aktivieren.

Der Abschnitt „[DEFAULT]“ enthält die Optionen, die auf alle Jails angewendet werden. Dies ist die globale Konfiguration für Fail2Ban. Der folgende Screenshot zeigt ein Beispiel hierfür.

Es gibt auch andere Abschnitte, die mit dem Namen eines Dienstes beginnen. Dieses Gefängnis gilt für einen bestimmten Dienst, der über die globalen Gefängnisse hinausgeht.

Beispielsweise gibt es einen Abschnitt für das „sshd“-Gefängnis. Dieser Abschnitt enthält die Optionen, die für den SSHD-Dienst spezifisch sind.

Tipp: Sie können auch mehr über die Serverhärtung erfahren, indem Sie Ihren SSH-Server sichern.

Aktivieren der Autoban-Funktion

Navigieren Sie zur Einstellung „bantime=1h“ und entfernen Sie das „#“-Symbol am Anfang der Zeile, um sie zu aktivieren. Diese Zeile legt die Dauer fest, wie lange Fail2Ban eine IP-Adresse deaktiviert. Die Standardeinheit ist eine Stunde. Sie können auch andere Einheiten verwenden, z. B. Minuten (m), Tage (d) oder sogar Wochen (w).

Sie können diesen Wert nach Belieben erhöhen oder verringern. Sie können diesen Wert beispielsweise auf 30 m ändern, um die Dauer des Verbots auf 30 Minuten zu reduzieren.

Ändern der Standardlänge des Anmeldefensters

Die nächsten Einstellungen sind „maxretry“ und „findtime“. Sie bestimmen, wie viele Anmeldeversuche ein Angreifer unternehmen kann, bevor Fail2Ban seine IP sperrt.

Die Standardwerte für „maxretry“ und „findtime“ sind 5 und 10 m. Wenn die Authentifizierung einer IP innerhalb von zehn Minuten fünf Mal fehlschlägt, wird sie von Fail2Ban für die in der Bantime-Einstellung festgelegte Dauer gesperrt.

Sie können diese Werte beliebig ändern. Sie können beispielsweise „maxretry“ auf 3 und „findtime“ auf 5m setzen: Fail2Ban deaktiviert eine IP, wenn die Authentifizierung innerhalb von fünf Minuten dreimal fehlschlägt.

Aktivieren der Benachrichtigungsfunktion von Fail2Ban

Die nächsten Einstellungen sind destemail, sendername und mta. Diese Einstellungen werden von Fail2Ban zum Konfigurieren von E-Mail-Benachrichtigungen verwendet.

  • Die Einstellung destemail ist die E-Mail-Adresse, an die das Programm seine Benachrichtigungen sendet.
  • Der sendername ist der Name, der im Feld „Von“ der Benachrichtigungs-E-Mail angezeigt wird.
  • Der mta ist der Mail-Transfer-Agent, den Fail2Ban zum Versenden von E-Mails verwendet. Der Standard-MTA ist sendmail, Sie können ihn jedoch in etwas anderes wie Mail ändern.

Wenn Sie E-Mail-Benachrichtigungen erhalten möchten, müssen Sie diese Zeilen auskommentieren und die entsprechenden Werte wie gezeigt eingeben.

Wenn eine Sperre erfolgt, erhalten Sie eine E-Mail-Benachrichtigung mit den angezeigten Einzelheiten zur Sperre.

Erstellen benutzerdefinierter Ban-Befehle

Die nächste Einstellung ist „action_ =“. Dies bestimmt die Aktion, die Fail2ban ausführt, wenn eine IP-Adresse gesperrt wird. Die Standardaktion besteht darin, iptables zu verwenden, um die IP zu blockieren, bis die „Bantime“ abgelaufen ist.

Sie können auch andere Aktionen verwenden, wie unten gezeigt. Der Einfachheit halber bleibt dieses Tutorial bei der Standardeinstellung.

  • action_mw: sendet eine E-Mail-Benachrichtigung, wenn eine IP gesperrt wird, mit angehängten relevanten WHOIS-Informationen.
  • action_mwl: sendet eine E-Mail-Benachrichtigung, wenn eine IP gesperrt wird, mit angehängten relevanten WHOIS-Informationen und den Protokolldateieinträgen, die die Sperre ausgelöst haben.
  • action_xarf: sendet eine E-Mail-Benachrichtigung im X-ARF-Format, wenn eine IP gesperrt wird, mit den Protokolldateieinträgen, die die Sperre ausgelöst haben.

Es stehen noch viele weitere Aktionen zur Verfügung, es ist jedoch unmöglich, sie alle in diesem Tutorial zu behandeln. Alle verfügbaren Aktionen können Sie in der Fail2ban-Dokumentation nachlesen.

Aktivieren der dienstspezifischen Konfiguration

Neben der Konfiguration des Standardverhaltens von Fail2ban ist es auch möglich, vorgefertigte „Filterdateien“ für einige der gängigen Internetdienste zu verwenden. Hierbei handelt es sich um kleine Dateien, die die Entwickler geschrieben haben, um nach bestimmten Protokollausgaben eines bestimmten Server-Daemons zu suchen.

Beispielsweise enthält die Datei „apache-shellshock.conf“ alle notwendigen Einstellungen, damit Fail2ban nach böswilligen Versuchen suchen kann, den Shellshock-Bug zu erzeugen.

Sie können alle verfügbaren Filterdateien für Ihr System finden, indem Sie das Verzeichnis „/etc/fail2ban/filter.d“ auflisten:

ls /etc/fail2ban/filter.d

Sobald Sie die Filter kennen, die Sie verwenden möchten, weisen Sie Fail2ban an, sie beim Start zu laden, indem Sie Ihre Datei „jail.local“ öffnen:

sudo nano /etc/fail2ban/jail.local

Erstellen Sie einen Bereich in „jail.local“, in dem Sie Ihre neuen Filter aktivieren können. Ich erstelle meine zwischen dem Kommentar-Header und dem [INCLUDES]-Block.

Fügen Sie die Filter hinzu, die Sie aktivieren möchten. Das Folgende ist beispielsweise ein Auszug, den ich in meiner Konfiguration verwende:

# Comments: use '#' for comment lines and ';' (following a space) for inline comments
 
[sshd]
enabled = true
 
[nginx-bad-request]
enabled = true
 
[bitwarden]
enabled = true
 
[INCLUDES]

Wenn Sie fertig sind, speichern und schließen Sie die Datei. Starten Sie fail2ban neu, um die Änderungen zu übernehmen.

sudo systemctl restart fail2ban

Testen Sie Ihre Konfiguration

Nachdem Sie fail2ban nun konfiguriert haben, ist es an der Zeit, es zu testen.

Der einfachste Weg, Ihre Konfiguration zu testen, besteht darin, mehrmals hintereinander zu versuchen, sich mit einem falschen Passwort anzumelden. Hierzu können Sie eine SSH-Verbindung nutzen.

Versuchen Sie auf einem Entsorgungscomputer, mit dem Benutzernamen „admin“ eine SSH-Verbindung zu Ihrem Fail2ban-Server herzustellen. Ersetzen Sie „your_server_ip_address“ durch die tatsächliche IP-Adresse Ihres Fail2ban-Servers.

ssh admin@your_server_ip_address

Geben Sie bei Aufforderung ein zufälliges Passwort ein und wiederholen Sie es einige Male. Nach einigen Versuchen sehen Sie eine Meldung, dass der Server Ihren Verbindungsversuch abgelehnt hat.

Neben der Verwendung von ssh können Sie auch die anderen Filterdateien in Fail2ban testen, indem Sie deren „Fehlerstatus“ auslösen. In meinem Fall verwende ich den Filter „nginx-bad-request“, der erkennt, ob ein Host den Server mit ungültigen Anfragen überschwemmt.

Wenn Sie das wissen, können Sie diese Funktion testen, indem Sie mit Curl absichtlich leere Anfragen an Ihren Webserver senden:

curl -H "User-Agent:" -H "Host:" https://yourwebsite.com -v

Gut zu wissen: Während Fail2ban hervorragend mit Nginx funktioniert, können Sie dieses Programm auch zum Schutz Ihres Apache-Servers verwenden.

Überprüfung der Aktionen von Fail2ban

Führen Sie abschließend den folgenden Befehl auf Ihrem Fail2ban-Server aus, um zu überprüfen, ob fail2ban die erforderlichen Regeln zu iptables hinzugefügt hat.

Der Befehl grep filtert die Ausgabe des Befehls iptables. Die Option -S weist iptables an, die Regeln in einem Format zu drucken, das leicht analysiert werden kann.

sudo iptables -S | grep f2b

Sie sehen eine Ausgabe ähnlich der unten abgebildeten. Das Argument „--reject-with icmp-port-unreachable“ weist iptables an, eine ICMP-Port-unreachable-Nachricht an den Client zurückzusenden, wenn dieser versucht, eine Verbindung herzustellen. Sie können auch die IP-Adressen der Computer sehen, die der Server gesperrt hat.

Tipp: Sie sollten auch SELinux nutzen, um Ihren Linux-Server zu sichern.

Häufig gestellte Fragen

Warum erhalte ich eine leere E-Mail-Benachrichtigung, wenn Fail2ban eine IP-Adresse sperrt?

Wenn Sie eine leere E-Mail-Benachrichtigung erhalten, haben Sie Ihren Mailserver wahrscheinlich nicht richtig konfiguriert. Überprüfen Sie die Konfiguration Ihres Mailservers und stellen Sie sicher, dass er E-Mails senden kann.

Wie entsperre ich eine IP-Adresse?

Suchen Sie zunächst das Gefängnis, in dem die IP-Adresse derzeit gesperrt ist: sudo fail2ban-client status , und heben Sie dann die Sperrung der IP-Adresse auf, indem Sie Folgendes ausführen: sudo fail2ban-client set Entsperren Sie .

Wie kann ich die fail2ban-Protokolldatei anzeigen?

Möglicherweise möchten Sie die fail2ban-Protokolldatei anzeigen, um Probleme zu beheben oder herauszufinden, warum eine IP gesperrt wurde. Die Datei „/var/log/fail2ban.log“ enthält alle von fail2ban generierten Protokolle. Verwenden Sie den Befehl cat, um die fail2ban-Protokolldatei anzuzeigen: cat /var/log/fail2ban.log.

Ich habe mehrere Filterdateien aktiviert. Warum funktionieren sie alle nicht?

Dieses Problem wird höchstwahrscheinlich dadurch verursacht, dass ein Filter eine andere Datei überschreibt, die davor lag. Eine Möglichkeit, dies zu beheben, besteht darin, eine eigene Filterdatei zu erstellen, indem Sie mehrere Filter miteinander kombinieren.

Schützt Fail2ban meinen Server vor einem DoS-Angriff?

Ja und nein. Fail2ban kann größtenteils jede IP-Adresse verhindern, die ungültige Anfragen an Ihren Server sendet. Eine der größten Einschränkungen dieses Programms besteht jedoch darin, dass es nicht auf Ereignisse reagieren kann, die keinen Protokolleintrag erzeugen. Daher ist es immer noch wichtig, Ihren Linux-Server mit anderen Tools gegen diese Angriffsformen zu schützen.

Bildnachweis: Unsplash. Alle Änderungen und Screenshots von Ramces Red.