0

403 リクエストを見つけて禁止したいのですが、これが私のログ形式です

112.253.6.182 - - [08/Sep/2014:17:42:56 -0400] "GET / HTTP/1.1" 403 579 "baidu" "Mozilla/4.0" 50.117.86.72
106.37.177.251 - - [08/Sep/2014:17:42:56 -0400] "GET /index.php HTTP/1.1" 404 576 "baidu" "Mozilla/4.0" 204.44.65.173
190.254.173.14 - - [08/Sep/2014:17:42:56 -0400] "GET /index.php HTTP/1.1" 404 576 "baidu" "Mozilla/4.0" 204.44.65.173
41.222.196.37 - - [08/Sep/2014:17:42:56 -0400] "GET / HTTP/1.1" 403 579 "baidu" "Mozilla/4.0" 50.117.86.72

私のfailregは次のとおりです。

failregex = ^<HOST> -.*"(GET|POST).*.php.*\ 403\ .*$

無視正規表現 =

しかし、 fail2ban-regex コマンドを使用してテストすると、以下が返されます

Failregex: 32 total
|-  #) [# of hits] regular expression
|   1) [32] ^<HOST> -.*"(GET|POST).*.php.*\ 403\ .*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [3266] Day/MONTH/Year:Hour:Minute:Second
`-

Lines: 3266 lines, 0 ignored, 32 matched, 3234 missed
Missed line(s): too many to print.  Use --print-all-missed to print all 3234 lines

403 リクエストに一致する正規表現を作成し、IP を出力するのを手伝ってくれませんか。前もって感謝します

4

2 に答える 2

2

まず、例のログ エントリは の 403/と の 404 です/index.phpが、正規表現はphp拡張子と 403 コードを一致させようとします。あなたが一致しないのも不思議ではありません。

したがって、パスに関係なく 403 エラー エントリのみに関心がある場合、これは機能するはずです。

^<HOST> .* "(GET|POST) [^"]+" 403

正規表現をデバッグするには、このスニペットを使用できます。fail2banによって<HOST>前処理されていることに注意してください。(?:::f{4,6}:)?(?P<host>\S+)

于 2014-09-15T11:34:47.170 に答える