-セキュリティ対策の一環で導入。 *インストール [#dccfda40] EPELリポジトリから導入可能 *稼動確認 [#gdfa2ca0] |fail2ban-client status [フィルター名]|フィルターごとの禁止IP| |ipset --list|フィルターごとの禁止IP| |ipset --list|?残り時間が出ているが上記とはまた別?| *設定ファイル [#c8249a93] たくさんあってややこしい **/etc/fail2ban/fail2ban.conf 全体の設定ファイル [#f875f3c8] fail2ban全体の設定ファイル。動作ログの出力先などを変更すべし。後述するrecidiveの設定の時にログの出力先をsyslogから変更する必要がある。 logtarget = /var/log/fail2ban.log **/etc/fail2ban/jail.conf 適用すべきフィルターをまとめたファイル [#le377db7] -sshdのログを見て攻撃をシャットアウトするには以下の記述を追加する。fileterの定義は/etc/fail2ban/filter.d/sshd.confにあるが、sshdに関してはカスタマイズ不要。 [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=dest@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] logpath = /var/log/secure bantime = 3600 maxretry = 3 なお基本的にはjail.confはデフォルトとしてそのまま変更せず、同じフォルダにjail.localを作成すべき。conf→localの順番で読み込んで設定を追記またはオーバーライドできる。 **/etc/fail2ban/filter.d/*.conf 各フィルターの動作 [#nd3e9b7c] 主要なサービスの定義はすでにある。カスタマイズしたものはここに配置して、jail.localから[ファイル名]で適用できる。 *ブロック時の挙動 [#i63fbcc1] **ブロックされているIP確認 [#r97d7b35] -jail sshdのブロックIPを表示(apache-noscriptなど任意のjail名で実施する) fail2ban-client status sshd **SSHの場合 [#db94b4b6] #ブロックされていない状態 [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との連携 [#v976f6a2] iptablesは直接触らないので一工夫必要。SSHの成功は確認できたが、Apacheを入れるとエラーになってしまう。 **Script Kiddy [#u905dfa2] https://github.com/miniwark/miniwark-howtos/wiki/Fail2Ban-setup-for-Apache *注意点 [#e3b15902] ログに出力したものを解析するので、sshで22番ポートをふさいでいたりした場合は検知できない。また禁止期間中にアクセスしても回数にはカウントされないし、禁止期間が延びるわけではない(最初の禁止から設定時間後にクリア)。厳しくしすぎると解除するのが大変。 **解除コマンド [#vb5ea0c8] fail2ban-client set JAIL名 unbanip MYIP *実際のログ [#g640a059] 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 **悪い奴ら抽出 [#h5bd0e0b] grep -v "ERROR" fail2ban.log | awk '{print $8}' | sort | uniq -c | sort