fail2ban

fail2ban ist eine Software, welche Logdateien des Systems und von Anwendungen überwacht, und anhand definierter Muster, die sich anpassen lassen, IP-Adressen temporär sperrt um DoS-Angriffe auf das eigene System möglichst zu verhindern.

fail2ban bringt für die gängigsten Serverdienste vorkonfigurierte Suchmuster / Filter mit, welche lediglich aktiviert werden müssen.


Anzeige

Installation

Die Installation von fail2ban erfolgt über folgenden Befehl:

sudo apt install fail2ban

Konfiguration

Die Konfiguration für das Ban-Verhalten einzelner IP-Adressen in Bezug auf die jeweiligen Serverdienste erfolgt über die Datei /etc/fail2ban/jail.conf. Diese sollte jedoch nach /etc/fail2ban/jail.local kopiert werden, da die Datei jail.conf bei Updates von fail2ban überschrieben wird.

Mit folgenden Befehl daher eine jail.local erstellen.

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

Ein Beispiel der Filter-Konfiguration kann dann so aussehen:

[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.1.0/24 # IP-Adressen bzw. Adressbereiche, welche von fail2ban ignoriert werden sollen

bantime  = 10m # wie lange soll eine IP-Adresse geblockt werden Xm, Xd, Xw etc.
findtime  = 20m # in welcher Zeitspanne muss die IP-Adresse aufgefallen sein, bevor sie auch als auffällig gilt

maxretry = 3 # wie oft darf die IP-Adresse innerhalb von findtime aufgefallen sein, bevor sie geblockt wird

...

enabled = false # alle aufgeführten Filter automatisch aktivieren

...

#
# JAILS
#

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 2

[mysqld-auth]
enabled = true
filter   = mysqld-auth
port     = 3306
logpath   = /var/log/mysql/error.log
maxretry = 2

Die Konfigurationsdateien der einzelnen Filter befinden sich unter /etc/fail2ban/filter.d.

gesperrte IP-Adressen eines Filters abfragen

Um herauszufinden, welche IP-Adressen durch einen Filter gesperrt wurden fragt man den Status des Filters ab. Im Beispiel:

sudo fail2ban-server status sshd

Das Ergebnis würde wie folgt aussehen:

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

IP-Adresse manuell entsperren

Sofern es notwendig ist eine gesperrte IP-Adresse vor Ablauf der Sperrfrist (bantime in jail.local) freizugeben, muss man wissen durch welchen Filter die IP-Adresse gesperrt wurde.

Hierfür ist folgender Befehl hilfreich:

sudo fail2ban-server status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("sudo fail2ban-server status " a[i])}' | grep -v "File list"

Es werden alle aktiven Filter und die durch fail2ban gesperrten IP-Adressen aufgelistet, ohne jeden Filter einzeln abfragen zu müssen.

Freigegeben wird die IP-Adresse dann so:

sudo fail2ban-server set FILTERNAME unbanip XX.XX.XXX.XXX

fail2ban-Service neustarten

Wenn Änderungen an der Konfiguration von fail2ban durchgeführt werden, sollte der Dienst neugestartet werden.

sudo service fail2ban restart

Anzeige

weiterführende Links