Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
|
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 Hauptkonfiguration befindet sich unter ''/ | ||
| + | |||
| + | < | ||
| + | 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 / | ||
| + | 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 / | ||
| + | |||
| + | < | ||
| + | |||
| + | Ein Filter besteht aus einem [Definition]-Block, | ||
| + | |||
| + | < | ||
| + | [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: | ||
| + | |||
| + | Nachdem du den Filter erstellt hast, musst du ihn in einer Jail-Datei einbinden. Jails befinden sich normalerweise in / | ||
| + | |||
| + | < | ||
| + | [meinfilter] | ||
| + | enabled = true | ||
| + | port = ssh | ||
| + | logpath = / | ||
| + | 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. ''/ | ||
| + | |||
| + | < | ||
| + | [meinfilter] | ||
| + | enabled = true | ||
| + | port = ssh | ||
| + | filter = ssh | ||
| + | logpath = / | ||
| + | maxretry = 5 | ||
| + | bantime = 10m | ||
| + | findtime = 10m | ||
| + | </ | ||
| + | |||
| + | Man kann den Filter mit dem Tool fail2ban-regex testen, um sicherzustellen, | ||
| + | |||
| + | < | ||
| + | sudo fail2ban-regex / | ||
| + | </ | ||
| + | |||
| + | fail2ban neu starten | ||
| + | |||
| + | < | ||
| + | sudo systemctl restart fail2ban | ||
| + | </ | ||
| + | |||
| + | Status testen | ||
| + | |||
| + | < | ||
| + | sudo fail2ban-client status [meinfilter] | ||
| + | </ | ||
| + | =====Apache Filter Example===== | ||
| + | |||
| + | Eine neue Datei unter ''/ | ||
| + | |||
| + | < | ||
| + | # filename apache-test.conf | ||
| + | [apache-test] | ||
| + | enabled | ||
| + | port = http,https | ||
| + | logpath | ||
| + | action | ||
| + | maxretry = 3 | ||
| + | findtime = 600 | ||
| + | bantime | ||
| + | </ | ||
| + | |||
| + | und unter ''/ | ||
| + | |||
| + | < | ||
| + | # filename: apache-test.local | ||
| + | [Definition] | ||
| + | |||
| + | failregex = ^< | ||
| + | |||
| + | ignoreregex = | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | < | ||
| + | | findtime | ||
| + | ----------------+--*--*-*--*---*-+-------------------+-------------> | ||
| + | | | | | ||
| + | | | | ||
| + | | +--> now | ||
| + | +--> now - findtime | ||
| + | </ | ||
| + | |||
| + | =====Links===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||