Fail2Ban:正規表示式從 Apache 日誌中過濾掉所有 404 錯誤

Fail2Ban:正規表示式從 Apache 日誌中過濾掉所有 404 錯誤

在我的日誌中,我經常看到大量 404 錯誤,其中機器人顯然會系統地掃描伺服器以查找特定的軟體安裝。由於這也會造成大量流量,因此我想禁止它們。

因此,根據一些 HowTos,我試圖找到一個用於 fail2ban 的正規表示式,它可以從 Apache 日誌中過濾掉這些 404 請求,並基於此封鎖相關的 IP。

不幸的是,我發現並嘗試過的正規表示式模式都不起作用。舉個例子:

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

(對我來說看起來不錯)沒有找到任何東西:

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

該日誌檔案中肯定有幾個 404 錯誤。那我做錯了什麼?正確的正規表示式應該如何表現以獲得所有 404 錯誤?

謝謝!

答案1

other_vhosts_access.log預設有一個不同的,與標準相比,LogFormat vhost_combined它以 a 為前綴。您需要相應地修改正規表示式。vhost:portcommon LogFormat

答案2

你試過這個嗎

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

相關內容