Benutzer-Werkzeuge

Webseiten-Werkzeuge


fail2ban

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

fail2ban [2024/11/15 11:46]
fail2ban [2024/11/15 12:00] (aktuell)
Zeile 1: Zeile 1:
 +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''.
 +
 +<code>
 +fail2ban-client start <rulename>
 +fail2ban-client stop <rulename>
 +fail2ban-client status <rulename>
 +fail2ban-client reload --unban <jail|--all>
 +fail2ban-client unban <jail|ip>
 +
 +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
 +</code>
 +
 +=====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.
 +
 +<code>sudo nano /etc/fail2ban/filter.d/meinfilter.conf</code>
 +
 +Ein Filter besteht aus einem [Definition]-Block, der die wichtigsten Informationen enthält.
 +
 +<code>
 +[Definition]
 +failregex = REGEL_1
 +            REGEL_2
 +ignoreregex =
 +</code>
 +
 +  * 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.
 +
 +<code>
 +[meinfilter]
 +enabled = true
 +port = ssh
 +logpath = /var/log/auth.log
 +bantime = 3600
 +findtime = 600
 +maxretry = 3
 +</code>
 +
 +  * 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''.
 +
 +<code>
 +[meinfilter]
 +enabled = true
 +port = ssh
 +filter = ssh
 +logpath = /var/log/auth.log
 +maxretry = 5
 +bantime = 10m
 +findtime = 10m
 +</code>
 +
 +Man kann den Filter mit dem Tool fail2ban-regex testen, um sicherzustellen, dass die Regex mit den Logdateieinträgen übereinstimmt.
 +
 +<code>
 +sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/meinfilter.conf
 +</code>
 +
 +fail2ban neu starten
 +
 +<code>
 +sudo systemctl restart fail2ban
 +</code>
 +
 +Status testen
 +
 +<code>
 +sudo fail2ban-client status [meinfilter]
 +</code>
 +=====Apache Filter Example=====
 +
 +Eine neue Datei unter ''/etc/fail2ban/jail.d''
 +
 +<code>
 +# 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
 +</code>
 +
 +und unter ''/etc/fail2ban/filter.d'' konfiguriert man es.
 +
 +<code>
 +# filename: apache-test.local
 +[Definition]
 +
 +failregex = ^<HOST>(.*)parameter=hacky(.*)$
 +
 +ignoreregex = 
 +</code>
 +
 +''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.
 +
 +<code>
 +                |    findtime    |     bantime         
 +----------------+--*--*-*--*---*-+-------------------+------------->
 +                |                |                   |
 +                |                |                   +--> now + bantime
 +                |                +--> now
 +                +--> now - findtime
 +</code>
 +
 +=====Links=====
 +
 +  * [[https://ixnfo.com/en/configuring-fail2ban-for-asterisk.html|Fail2Ban Asterisk Setup]]
 +  * [[https://www.fail2ban.org/wiki/index.php/Asterisk|Fail2Ban Wiki - Asterisk]]