Der Hauptzweck von fail2ban ist das **Bestimmen und Blockieren bestimmter IP-Adressen, die wahrscheinlich zu Angreifern gehören**, die sich Zugang zum System verschaffen wollen. fail2ban ermittelt aus Log-Dateien IP-Adressen, die in einem vom Administrator angesetzten Zeitrahmen z. B. öfter versuchen, sich mit falschen Passwörtern anzumelden oder andere gefährliche oder sinnlose Aktionen ausführen. Normalerweise ist fail2ban so konfiguriert, dass es blockierte Adressen nach einer bestimmten Zeit wieder freigibt, um keine seriösen Verbindungsversuche zu blockieren (beispielsweise, wenn die Angreifer-IP dynamisch einem anderen Host zugeteilt wird).
Die Hauptkonfiguration befindet sich unter ''/etc/fail2ban/fail2ban.conf'', Filterregeln in ''/etc/fail2ban/jail.conf''.
fail2ban-client start
fail2ban-client stop
fail2ban-client status
fail2ban-client reload --unban
fail2ban-client unban
fail2ban-client get sshd bantime
fail2ban-client set sshd bantime 1
fail2ban-client get dbfile
systemctl stop fail2ban
rm -f /var/lib/fail2ban/fail2ban.sqlite3
systemctl start fail2ban
=====Filter=====
Um Filter in Fail2Ban zu erstellen, muss man bestimmte Muster definieren, die auf bestimmte Logdateieinträge abzielen. Diese Filter sind notwendig, um potenziell schädliche Aktivitäten wie unerlaubte Login-Versuche zu erkennen. Filterdateien befinden sich normalerweise im Verzeichnis /etc/fail2ban/filter.d/. Jede Filterdatei sollte die Endung .conf haben.
sudo nano /etc/fail2ban/filter.d/meinfilter.conf
Ein Filter besteht aus einem [Definition]-Block, der die wichtigsten Informationen enthält.
[Definition]
failregex = REGEL_1
REGEL_2
ignoreregex =
* failregex: Hier definierst du reguläre Ausdrücke (Regex), die auf verdächtige Einträge in den Logdateien passen.
* ignoreregex: (Optional) Definiert Muster, die ignoriert werden sollen.
Nachdem du den Filter erstellt hast, musst du ihn in einer Jail-Datei einbinden. Jails befinden sich normalerweise in /etc/fail2ban/jail.local.
[meinfilter]
enabled = true
port = ssh
logpath = /var/log/auth.log
bantime = 3600
findtime = 600
maxretry = 3
* enabled: Aktiviert den Filter.
* logpath: Gibt den Pfad zur Logdatei an, die überwacht werden soll.
* bantime: Dauer (in Sekunden), wie lange eine IP gesperrt wird.
* findtime: Zeitfenster (in Sekunden), innerhalb dessen maxretry-Versuche erkannt werden.
* maxretry: Maximale Anzahl erlaubter Fehlversuche.
Man kann das Jail auch in einer eigenen Datei definieren. Bearbeite oder erstelle eine Datei, z. B. ''/etc/fail2ban/jail.d/meinfilter.local''.
[meinfilter]
enabled = true
port = ssh
filter = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 10m
findtime = 10m
Man kann den Filter mit dem Tool fail2ban-regex testen, um sicherzustellen, dass die Regex mit den Logdateieinträgen übereinstimmt.
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/meinfilter.conf
fail2ban neu starten
sudo systemctl restart fail2ban
Status testen
sudo fail2ban-client status [meinfilter]
=====Apache Filter Example=====
Eine neue Datei unter ''/etc/fail2ban/jail.d''
# filename apache-test.conf
[apache-test]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
action = %(action_)s # Variable von Haus aus definiert (in der Datei weiter am Anfang)
maxretry = 3
findtime = 600
bantime = 600
und unter ''/etc/fail2ban/filter.d'' konfiguriert man es.
# filename: apache-test.local
[Definition]
failregex = ^(.*)parameter=hacky(.*)$
ignoreregex =
''findtime'' definiert, wie weit zurückliegende Logeinträge überprüft werden. Der Filter wird anhand von Eingaben geprüft, deren Datum zwischen ''now - findtime'' und ''now'' liegt. Wenn der Filter innerhalb dieses Zeitraums ''maxretry'' oder mehr übereinstimmende Zeilen gefunden hat (ohne die, die auch mit der Ignorieren-Regex übereinstimmen), gibt er die Ban-Aktion aus.
| findtime | bantime |
----------------+--*--*-*--*---*-+-------------------+------------->
| | |
| | +--> now + bantime
| +--> now
+--> now - findtime
=====Links=====
* [[https://ixnfo.com/en/configuring-fail2ban-for-asterisk.html|Fail2Ban Asterisk Setup]]
* [[https://www.fail2ban.org/wiki/index.php/Asterisk|Fail2Ban Wiki - Asterisk]]