0

私はfail2banをセットアップしようとしていて、正規表現で失敗しています...私のApacheログには次のような行があります

xxx.xxx.xxx.xxx - - [27/Sep/2013:12:41:21 +0200] "GET /shop/index.php?do=/blog/add HTTP/1.1" 301 566 "http://www.tld.com/shop/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"

これらのエントリはすべて、まったく無効な "?do=" を共通に持っています (したがって、通常のページには影響しません)。次のような正規表現でキャッチしようとしました

failregex = <HOST> - - * "GET *\?do\=* 

しかし、それは一致しません。数時間の検索の後、私は迷子になりました。誰でも正規表現で私を助けることができますか?

4

2 に答える 2

1

別のドットがありません:

failregex = <HOST> - - .* "GET *\?do\=.*
                       ^              ^

オンライン正規表現テスターで遊んだ:

http://regex101.com/r/jQ7wQ9/1

于 2014-07-07T16:15:38.470 に答える
0

あなたのやり方では、「*」はスペースの文字列を検索してから、取得した「?do」をチェックしています。私はあなたが欲しいと思います:

failregex = <HOST> - - .* "GET *\?do\=* 
                       ^
于 2013-09-27T12:17:06.210 に答える