設定しようとしています失敗2バンテスト サーバーで、サイトを調査しようとするスクリプト ボットを一時的にブロックしたいだけです。つまりcgi-bin
、、、admin
などを含むすべてのものです。以前、 access.log でsetup.php
404 エラーを生成するものをすべて確認しました。grep "HTTP/1.1\" 404" access.log | awk '{print $7 } ' | sort | uniq -c | sort -n
どの URL にもこれらの部分が含まれていないことを確認しました。
インストール後、 を作成しjail.local
、何もしていませんjail.conf
。ファイルは次のようになります (IP を 10 分間ブロックします)。
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 600
destemail = myemail
banaction = iptables-multiport
action = %(action_mwl)s
[apache-script-bots]
enabled = true
port = http,https
filter = apache-script-bots
logpath = /var/log/apache2/access.log
maxretry = 1
apache-script-bots.conf
フォルダーも作成しましたがfilter.d
、その中には次のものだけが含まれています:
[Definition]
failregex = (admin|setup.php|main.php|w00tw00t|web-console|.jsp|manager|cgi-bin)
ignoreregex =
fail2ban を再起動すると、すべて正常であると表示されます。しかし、次のようにトリガーして jail が機能するかどうかをテストしようとすると、mydomain/main.php
jail ではないことがわかります。
fail2banのステータスを確認すると、jailが動作していることがわかります
fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: ssh, apache-script-bots
問題は正規表現にあると推測しますが、その理由がわかりません。
答え1
fail2banに(正規表現を使って)ログエントリのどこに<HOST>
ホストを禁止するかを伝える必要があります。通常のアクセスログでは、それは行の先頭にあるので、
<HOST> -.*(w00tw00t|main.php|setup.php)
動作しますが、ログ エントリ内の任意の場所にある関連するトリガーと一致するため、希望どおりに動作しない可能性があります。
次のようなことを試してみるといいかもしれません
<HOST> -.*(/w00tw00t|/main.php |setup.php )
これにより、いくつかの文字列をより具体的な場所に結び付けることができる