![fail2ban sperrt nicht, stimmt aber mit den Protokollen überein](https://rvso.com/image/776300/fail2ban%20sperrt%20nicht%2C%20stimmt%20aber%20mit%20den%20Protokollen%20%C3%BCberein.png)
Ich versuche, mit Fail2ban einen Brute-Force-Schutz zu erstellen. Mit dem Fail2ban-Test werden die Protokolle abgeglichen, die ich abgleichen möchte, aber mit meinem Brute-Force-Test auf der Site mit 7+ fehlgeschlagenen Anmeldungen wird meine IP-Adresse nicht gesperrt.
Filter:
[Definition]
failregex = <HOST>:.*"POST /login.*" 200 .*$
ignoreregex =
Gefängnis:
[shop-brute-force]
enabled = true
filter = shop-brute-force
logpath = /etc/exampleorg/shop/log/access.log
maxretry = 7
findtime = 60
bantime = 900
ignoreip =
Log-Beispiel (anonymisiert mit ..., 88.88.88.88 und example.org):
2022/04/01 08:09:25.413720 88.88.88.88:10729 - - [01/Apr/2022:08:09:25 +0000] "POST /login?target=%2Fshop%2F HTTP/1.1" 200 2192 "https://example.org/login?target=%2Fshop%2F" "..."
prüfen:
Running tests
=============
Use failregex filter file : shop-brute-force, basedir: /etc/fail2ban
Use log file : /home/user/test.log
Use encoding : UTF-8
Results
=======
Failregex: 3 total
|- #) [# of hits] regular expression
| 1) [3] <HOST>:.*"POST /login.*" 200 .*$
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [106] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
`-
Lines: 106 lines, 0 ignored, 3 matched, 103 missed
[processed in 0.02 sec]
Missed line(s): too many to print. Use --print-all-missed to print all 103 lines
Antwort1
Ich versuche einen Brute-Force-Schutz mit fail2ban zu schaffen
failregex = ... 200 ...
Dies ist nicht unbedingt ein Brute-Force-Versuch, da 200 eine normale Antwort ist, also OK... Normalerweise würden Codes wie 401 oder 403 nicht autorisierte Versuche signalisieren, oder wenn der Dienst mit 200 antwortet, würde er einen zusätzlichen Log-Eintrag in eine Log-Datei oder ein Journal schreiben (nicht unbedingt ins access.log
). Aber auch andere Dinge sind hier sehr fragwürdig, ganz zu schweigen davon, dass man theoretisch mit anderen Methoden als Brute Force durchführen kann POST
.
aber bei meinem Test habe ich die Site mit 7+ fehlgeschlagenen Logins per Brute Force-Angriff gehackt ...
Lines: 106 lines, 0 ignored, 3 matched, 103 missed
Sie haben nicht den gesamten Protokollauszug bereitgestellt, der diesen 7 Versuchen entspricht. Und fail2ban-regex
finden Sie nur 3 Übereinstimmungen, die sich auf Ihre beziehen failregex
(was überhaupt nicht gut ist, z. B. nicht verankert und hat Catch-Alls, aber egal – die Übereinstimmungen sind nicht da). Wahrscheinlich protokolliert es etwas anderes als eine einzelne Protokollzeile aus Ihrem Beispiel, weil Ihr RE im Wesentlichen damit übereinstimmt. Aktualisieren Sie daher bitte Ihre Frage mit einem vollständigen Protokollauszug, der allen 7 Versuchen entspricht, die Sie unternommen haben.
Und zu guter Letzt könnte ein viel besseres RE so aussehen:
failregex = ^\s*<ADDR>:\d+ [^"]*"[A-Z]+ /login\b[^"]*" 200\b
Ich bin mir jedoch immer noch nicht sicher, ob Sie das wirklich verwenden würden (aufgrund der 200. Problematik usw., die ich oben erwähnt habe).
Wenn es nur ein Test war (mit 3 Protokollzeilen) und Sie wirklich alle 7 Protokollzeilen im realen Protokoll sehen, können Sie dies überprüfenFAQ zu den möglichen Gründen, warum fail2ban nicht sperrt. Es kann zum Beispiel falsch sein backend
(setzen Sie es auf auto
dateibezogene Überwachung ein), eine ungeeignete Sperraktion oder ein Fehler auf der Fail2ban-Seite sein (überprüfen Sie auch das Fail2ban.log).