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]]