Fail2Ban: RegEx um alle 404 Fehler aus dem Apache-Log zu filtern

Fail2Ban: RegEx um alle 404 Fehler aus dem Apache-Log zu filtern

In meinen Logs sehe ich regelmäßig jede Menge 404-Fehler, bei denen Bots offensichtlich systematisch den Server nach bestimmten Softwareinstallationen durchsuchen. Da dies auch jede Menge Traffic verursacht, möchte ich sie sperren.

Daher habe ich anhand einiger HowTos versucht, einen RegEx für fail2ban zu finden, der diese 404-Anfragen aus den Apache-Logs herausfiltert und auf dieser Basis die zugehörigen IPs sperrt.

Leider funktioniert keines der RegEx-Muster, die ich gefunden und ausprobiert habe. Als Beispiel:

fail2ban-regex /var/log/apache2/other*access.log '^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$'

(was für mich gut aussieht) findet nichts:

Date template hits:
|- [# of hits] date format
|  [1210] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 1210 lines, 0 ignored, 0 matched, 1210 missed

In dieser Logdatei sind definitiv mehrere 404-Fehler. Was mache ich also falsch? Wie muss ein richtiger RegEx aussehen, um alle 404-Fehler zu erhalten?

Danke!

Antwort1

other_vhosts_access.loghat standardmäßig einen anderen Wert , der im Vergleich zum Standard mit LogFormat vhost_combinedeinem vorangestellt ist . Sie müssen den regulären Ausdruck entsprechend ändern.vhost:portcommon LogFormat

Antwort2

Haben Sie dieses probiert?

failregex = ^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)

verwandte Informationen