
私のログには、ボットが特定のソフトウェアのインストールのためにサーバーを体系的にスキャンしていることが明らかな大量の 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:port
common
LogFormat
答え2
これを試しましたか
failregex = ^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)