前回CentOS 7上でfail2banのインストール・設定を行ったが、アタックを検知して対象のIPアドレスをBANした際、メールではなくSlackに通知させることもできるようだ。 まず、事前にSlackのWebHookを作成しておく必要がある。
次に、actionとしてslackへのポストが行えるよう、設定ファイルを作成する。
/etc/fail2ban/action.d/slack.conf[Definition] actionban = curl -X POST --data-urlencode 'payload={"channel": "#test", "username": "fail2ban", "text": "不正なアクセスが多発したため、フィルター「<name>」に基づき<ip>からのアクセスを<bantime>秒遮断します。", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/XXXXXXXX/XXXXXXXX/XXXXXXXX
次に、jail側でslack呼び出しをするようにactionの値を書き換えてやる。
/etc/fail2ban/jail.d/jail.local[apache-ddos] enabled = true port = http,https filter = apache-ddos logpath = %(apache_access_log)s maxretry = 10 findtime = 5 bantime = 86400 action = %(action_mwl)s slack[name=%(__name__)s, bantime="%(bantime)s"] destemail = user@domain.com
設定完了後、ログローテートを行ってからサービスの再起動を行う。
/usr/sbin/logrotate -f /etc/logrotate.conf
systemctl restart fail2ban
その後、問題のあるアクセスが発生しBANが発生すると、Slackに以下のような通知がされるようになる。
参考
- fail2banでslackに通知する - Qiita
- Send notifications to the Slack from fail2ban · GitHub(シェルスクリプトでSlackポスト時にグローバルIPがどこの国のものか、国旗付きでポストしてくれる)