-セキュリティ対策の一環で導入。 *インストール [#dccfda40] EPELリポジトリから導入可能 *設定ファイル [#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, [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 各フィルターの動作 [#nd3e9b7c] 主要なサービスの定義はすでにある。カスタマイズしたものはここに配置して、jail.localから[ファイル名]で適用できる。 **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