インストール

EPELリポジトリから導入可能

設定ファイル

たくさんあってややこしい

/etc/fail2ban/fail2ban.conf 全体の設定ファイル

fail2ban全体の設定ファイル。動作ログの出力先などを変更すべし。後述するrecidiveの設定の時にログの出力先をsyslogから変更する必要がある。

logtarget = /var/log/fail2ban.log

/etc/fail2ban/jail.conf 適用すべきフィルターをまとめたファイル

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, [email protected],   [email protected], sendername="Fail2Ban"]
logpath  = /var/log/secure
bantime = 3600
maxretry = 3

なお基本的にはjail.confはデフォルトとしてそのまま変更せず、同じフォルダにjail.localを作成すべき。conf→localの順番で読み込んで設定を追記またはオーバーライドできる。

/etc/fail2ban/filter.d/*.conf 各フィルターの動作

主要なサービスの定義はすでにある。カスタマイズしたものはここに配置して、jail.localから[ファイル名]で適用できる。

ブロック時の挙動

ブロックされているIP確認

fail2ban-client status sshd

SSHの場合

#ブロックされていない状態
[ec2-user@ip-172-31-29-154 ~]$ ssh example.com
ssh_exchange_identification: read: Connection reset by peer
#ブロックされているとconnection timeoutになる
[ec2-user@ip-172-31-29-154 ~]$ ssh example.com
ssh: connect to host example.com port 22: Connection timed out

firewalldとの連携

iptablesは直接触らないので一工夫必要。SSHの成功は確認できたが、Apacheを入れるとエラーになってしまう。

Script Kiddy

https://github.com/miniwark/miniwark-howtos/wiki/Fail2Ban-setup-for-Apache

注意点

ログに出力したものを解析するので、sshで22番ポートをふさいでいたりした場合は検知できない。また禁止期間中にアクセスしても回数にはカウントされないし、禁止期間が延びるわけではない(最初の禁止から設定時間後にクリア)。厳しくしすぎると解除するのが大変。

解除コマンド

fail2ban-client set JAIL名 unbanip MYIP

実際のログ

2015-10-20 06:41:33,835 fail2ban.filter [6501]: INFO [recidive] Found 91.196.50.33 2015-10-20 06:51:34,767 fail2ban.actions [6501]: NOTICE [apache-noscript] Unban 91.196.50.33 2015-10-20 08:20:40,342 fail2ban.filter [6501]: INFO [apache-noscript] Found 144.76.58.210 2015-10-20 08:20:40,404 fail2ban.filter [6501]: INFO [apache-noscript] Found 144.76.58.210 2015-10-20 08:20:40,461 fail2ban.actions [6501]: NOTICE [apache-noscript] Ban 144.76.58.210 2015-10-20 08:20:40,463 fail2ban.filter [6501]: INFO [recidive] Found 144.76.58.210 2015-10-20 08:20:40,685 fail2ban.actions [6501]: NOTICE [apache-noscript] 144.76.58.210 already banned 2015-10-20 08:26:09,698 fail2ban.filter [6501]: INFO [apache-nokiddies] Found 5.61.40.29 2015-10-20 08:30:41,450 fail2ban.actions [6501]: NOTICE [apache-noscript] Unban 144.76.58.210

悪い奴ら抽出

 grep -v "ERROR" fail2ban.log | awk  '{print $8}' | sort | uniq -c | sort

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS