具体的なフィルタワードを記載してしまうと攻撃者側に手の内を晒すことに繋がるので、nginxでの設定方法の一部だけを切り出した備忘録。
フィルタの設定
正規表現なのでスペース(空白)の有無も重要。
jail.localで[hogehoge]の指定と有効化も忘れずに。
vi /etc/fail2ban/filter.d/hogehoge.conf
[Definition]
failregex = ^<HOST>.*"(GET|POST) .*(xmlrpc\.php|\.env|\.git).*" (404|403) .*$
フィルタの正規表現が正しいか確認する方法
cd /etc/fail2ban/filter.d
fail2ban-regex /var/log/access.log hogehoge.conf --print-all-matched
うちの環境では filter.d ディレクトリで実行しないとデフォルトのコンフィグが見つからない旨のエラーで動きませんでした。一度動かしてからはどこでコマンドを叩いてもエラーを吐かなくなったのだけどなんだろう?
設定のリロード
fail2ban-client reload --all
BAN状況の確認
# fail2ban-client status hogehoge
Status for the jail: hogehohe
|- Filter
| |- Currently failed: 0
| |- Total failed: 16
| `- File list: /var/log/access.log
`- Actions
|- Currently banned: 8
|- Total banned: 8
`- Banned IP list: 146.59.35.246 157.254.236.81 192.42.116.192 78.153.140.219 157.254.236.32 157.254.165.236 65.49.1.11 185.220.100.254
ログからBANフィルタに該当する16行を拾ってきて、8件のIPをBANしていますね。ちゃんと動作しているようです!
コメント