Fail2Ban: Apache ログからすべての 404 エラーをフィルタリングする正規表現

Fail2Ban: Apache ログからすべての 404 エラーをフィルタリングする正規表現

私のログには、ボットが特定のソフトウェアのインストールのためにサーバーを体系的にスキャンしていることが明らかな大量の 404 エラーが定期的に表示されています。これも大量のトラフィックを発生させるため、ボットを禁止したいと思います。

そこで、いくつかの HowTo に基づいて、これらの 404 リクエストを Apache ログからフィルタリングし、それに基づいて関連する IP をブロックする fail2ban の正規表現を見つけようとしました。

残念ながら、私が見つけて試した RegEx パターンはどれも機能しません。たとえば、次のようになります。

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、 のプレフィックスが付けられた が異なります。それに応じて正規表現を変更する必要があります。vhost:portcommon LogFormat

答え2

これを試しましたか

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

関連情報