地方在住IT系ニート

bkds

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の設定ファイルは以下の通りです。

デフォルトでは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 = your-email@bkds-hi.com
sender = fail2ban@bkds-hi.com
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

メモ

<-- Back to home
にほんブログ村 IT技術ブログ IT技術メモへ PVアクセスランキング にほんブログ村