Fail2Banのインストールと設定メモ【SSHの不正アクセスを自動遮断】
はじめに
Fail2Banは、不正アクセスを自動的に検出して遮断するツールです。 SSHやWebサービスのログを監視し、繰り返しログインに失敗したIPアドレスをiptablesやufwを使って自動的にブロックします。
サーバを外部に公開している場合は、導入しておくべきセキュリティツールの一つです。
インストール
sudo apt update
sudo apt install fail2ban
サービスの開始・停止
# 開始
sudo systemctl start fail2ban
# 停止
sudo systemctl stop fail2ban
# 再起動
sudo systemctl restart fail2ban
# 状態確認
sudo systemctl status fail2ban
設定ファイル
Fail2Banの設定ファイルは以下の通りです。
/etc/fail2ban/fail2ban.conf- 基本設定/etc/fail2ban/jail.conf- 監視対象とアクションの設定
デフォルトではjail.confを直接編集せず、jail.localを作成して上書きするのが推奨されています。
jail.localの作成
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.localを編集して設定を上書きします。
基本的な設定項目
[DEFAULT]
# ブロックする時間(秒)
bantime = 3600
# この時間内に指定回数以上の失敗がある場合、ブロックする
findtime = 600
# ブロックするまでの試行回数
maxretry = 5
# 自分のIPをホワイトリストに追加(スペース区切りで複数指定可)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
# メール通知を有効にする場合
destemail = [email protected]
sender = [email protected]
action = %(action_mwl)s
有効化するサービス(jail)
デフォルトでいくつかのjailが有効です。 SSH(sshd)は必ず有効にしておきましょう。
sshdの有効化
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
nginxの認証失敗を監視
WebサービスのBasic認証などをしている場合、設定を追加します。
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
WordPressのログイン失敗を監視
WordPressを使用している場合、ログイン失敗を監視できます。
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
フィルタの自作
独自のサービスを監視する場合、フィルタを作成します。
/etc/fail2ban/filter.d/に.confファイルを作成します。
[Definition]
failregex = ^<HOST> - .* "POST /login.*" 401
ignoreregex =
確認コマンド
ブロックされているIPの確認
sudo fail2ban-client status
特定のjailの確認
sudo fail2ban-client status sshd
手動でIPをBAN・解除する
# 手動でIPをBAN
sudo fail2ban-client set sshd banip 192.168.1.100
# BANを解除
sudo fail2ban-client set sshd unbanip 192.168.1.100
ログの確認
sudo tail -f /var/log/fail2ban.log
メモ
ignoreipに自分のIPアドレスやサブネットを必ず追加してください。設定ミスで自分がBANされると、SSHでサーバにアクセスできなくなりますbantimeは最初は3600秒(1時間)程度に設定して様子を見て調整するのがおすすめですmaxretryはSSHは5回程度、Webサービスは10回程度が目安です- ufwを使用している場合、Fail2Banは自動的にufwのルールを追加します