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
- ubuntuusers.de beschreibt fail2ban noch genauer.