Zum Hauptinhalt springen Skip to page footer

Fail2Ban: Automatischer Schutz vor böswilligen Angriffen auf Server

| Tutorial | Linux

Fail2Ban ist ein Dienstprogramm, das Server vor böswilligen Angriffen schützen soll, indem es wiederholte fehlgeschlagene Anmeldeversuche erkennt und automatisch Maßnahmen ergreift, um potenzielle Angreifer zu blockieren.

Fail2Ban

Fail2Ban ist ein Sicherheitswerkzeug, das entwickelt wurde, um wiederholte fehlgeschlagene Anmeldeversuche an Servern zu erkennen und automatisch Maßnahmen zu ergreifen, um potentielle Angreifer zu blockieren. Die Grundkonfiguration von Fail2Ban besteht aus drei Hauptkomponenten: 

  • der Fail2Ban Konfigurationsdatei, 
  • der Konfiguration der zu überwachenden Dienste und 
  • der Anpassung von Parametern wie "maxretry", "bantime" und "findtime".

Die Fail2Ban-Konfigurationsdatei

Die Fail2Ban-Konfigurationsdatei enthält die globalen Einstellungen für Fail2Ban. Diese Datei befindet sich normalerweise unter "/etc/fail2ban/jail.conf" oder "/etc/fail2ban/jail.local". In dieser Datei können Sie verschiedene Parameter konfigurieren, um das Verhalten von Fail2Ban anzupassen. Hier sind einige wichtige Konfigurationsoptionen

  • ignoreip: Diese Option ermöglicht es Ihnen, eine Liste von IP-Adressen anzugeben, die von Fail2Ban ignoriert werden sollen. Wenn ein Angreifer von einer dieser IP-Adressen aus fehlgeschlagene Anmeldeversuche durchführt, wird er nicht gesperrt.
  • bantime: Diese Option definiert die Dauer, für die ein Angreifer nach einer bestimmten Anzahl von fehlgeschlagenen Anmeldeversuchen gesperrt wird. Die Zeit kann in Sekunden, Minuten, Stunden oder Tagen angegeben werden.
  • findtime: Diese Option legt fest, innerhalb welchen Zeitraums (in Sekunden, Minuten, Stunden oder Tagen) Fail2Ban die fehlgeschlagenen Anmeldeversuche zählt.
  • maxretry: Diese Option bestimmt die maximale Anzahl von fehlgeschlagenen Anmeldeversuchen, die Fail2Ban zulässt, bevor ein Angreifer gesperrt wird.

Konfiguration der zu überwachenden Dienste

Fail2Ban kann auf verschiedene Dienste angewendet werden, um fehlgeschlagene Anmeldeversuche zu erkennen. Jeder überwachte Dienst hat eine eigene Konfigurationsdatei, die sich normalerweise unter "/etc/fail2ban/jail.d/" befindet. In diesen Dateien werden für jeden Dienst spezifische Einstellungen vorgenommen.

Die Konfigurationsdateien für die zu überwachenden Dienste enthalten Abschnitte, die "Jails" genannt werden. Jede Jail hat einen eindeutigen Namen und definiert die Regeln und Aktionen, die auf den jeweiligen Dienst angewendet werden sollen.

In den Konfigurationsabschnitten der Jails können Sie Einstellungen wie enabled (aktiviert/deaktiviert), port (überwachter Port), filter (Filterregel) und logpath (Pfad zur Protokolldatei des Dienstes) festlegen. Diese Einstellungen variieren je nach überwachtem Dienst.

Anpassen von maxretry, bantime, findtime

Fail2Ban erlaubt es, Parameter wie maxretry, bantime und findtime an die eigenen Bedürfnisse anzupassen.

  • maxretry: Diese Option definiert die maximale Anzahl von fehlgeschlagenen Anmeldeversuchen, die ein Benutzer durchführen kann, bevor Fail2Ban Maßnahmen ergreift. Wenn diese Anzahl erreicht ist, wird der Benutzer gesperrt.
  • bantime: Diese Option legt die Dauer der Sperrung fest, nachdem ein Benutzer die Maximalanzahl der fehlgeschlagenen Versuche erreicht hat. Die Zeit kann in Sekunden, Minuten, Stunden oder Tagen angegeben werden.
  • findtime: Diese Option bestimmt den Zeitraum, innerhalb dessen Fail2Ban die fehlgeschlagenen Anmeldeversuche zählt. Wenn die Anzahl der fehlgeschlagenen Versuche innerhalb dieses Zeitraums die maxretry-Grenze überschreitet, wird der Benutzer gesperrt.

Durch die Anpassung dieser Parameter können Sie die Empfindlichkeit und Reaktion von Fail2Ban steuern, um Angriffe zu erkennen und zu verhindern.

Die genaue Konfiguration von Fail2Ban kann je nach Ihren Anforderungen und der spezifischen Serverumgebung variieren. Es wird empfohlen, die Fail2Ban-Dokumentation zu konsultieren und die Konfiguration sorgfältig zu testen, um sicherzustellen, dass sie Ihren Sicherheitsanforderungen entspricht.

Konfigurationsbeispiele

1. Beispiel für die Fail2Ban-Konfigurationsdatei (/etc/fail2ban/jail.local):

[DEFAULT]
ignoreip = 192.168.0.1 10.0.0.0/24
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s

In diesem Beispiel haben wir die globale Konfiguration in der Sektion [DEFAULT] definiert. Wir ignorieren die IP-Adresse "192.168.0.1" und das gesamte Subnetz "10.0.0.0/24". Die Sperrzeit beträgt 1 Stunde und Fail2Ban zählt fehlgeschlagene Anmeldeversuche innerhalb von 10 Minuten. Nach 5 Fehlversuchen wird ein Angreifer gebannt.

Die Sektion [sshd] definiert die Konfiguration des SSH-Dienstes. Er ist aktiviert (enabled = true), überwacht den Standard-SSH-Port (port = ssh) und liest die in der Variablen %(sshd_log)s angegebene Protokolldatei.

2. Beispiel für die Konfigurationsdatei eines spezifischen Dienstes (/etc/fail2ban/jail.d/nginx.conf):

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 1d

In diesem Beispiel wird Fail2Ban für den Webserver Nginx konfiguriert. Die Sektion [nginx-http-auth] definiert die Konfiguration für die Überwachung von HTTP-Authentifizierungsfehlern. Die Jail ist aktiviert (enabled = true), überwacht die Ports 80 (http) und 443 (https) und verwendet das Filtermuster nginx-http-auth für die Log-Analyse.

Die Logdatei befindet sich unter /var/log/nginx/access.log und Fail2Ban sperrt einen Angreifer nach 3 fehlgeschlagenen Anmeldeversuchen für 1 Tag (bantime = 1d).

3. Beispiel für die Konfigurationsdatei eines Apache-Dienstes (/etc/fail2ban/jail.d/apache.conf):

[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5
bantime = 1h

In diesem Beispiel wird Fail2Ban für den Apache Webserver konfiguriert. Die Sektion [apache-auth] definiert die Konfiguration für die Überwachung fehlgeschlagener Authentifizierungsversuche. Die Jail ist aktiviert (enabled = true), überwacht die Ports 80 (http) und 443 (https) und verwendet das Filtermuster apache-auth für die Log-Analyse.

Die Logdatei befindet sich unter /var/log/apache2/error.log und Fail2Ban sperrt einen Angreifer nach 5 fehlgeschlagenen Anmeldeversuchen für 1 Stunde (bantime = 1h).