
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.log
hat standardmäßig einen anderen Wert , der im Vergleich zum Standard mit LogFormat vhost_combined
einem vorangestellt ist . Sie müssen den regulären Ausdruck entsprechend ändern.vhost:port
common
LogFormat
Antwort2
Haben Sie dieses probiert?
failregex = ^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)