Linuxサーバー管理

fail2banで不正アクセスを自動ブロックする【設定完全ガイド】

Linuxサーバー管理
記事内に広告が含まれています。

ファイアウォールでポートを制限しても、公開ポートへのブルートフォース攻撃は防げません。fail2banはログを監視して攻撃元IPを自動的にブロックするツールです。

fail2banのインストールと基本設定

⚠️ 設定は必ず jail.local に書きます。jail.conf を直接編集するとアップデート時に上書きされます。

# インストール
$ sudo apt install fail2ban       # Ubuntu/Debian
$ sudo dnf install fail2ban       # CentOS/RHEL

# 設定ファイルをコピー(必ずlocalを作成する)
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# fail2banを有効化・起動
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban

jail.local の基本設定

# /etc/fail2ban/jail.local

[DEFAULT]
# ブロック除外リスト(自分のIPは必ず入れる)
ignoreip = 127.0.0.1/8 ::1
# ⚠️ /24(サブネット全体)の除外は同一セグメント全体を緩めることになります
# 本来は自分の固定IPやVPN出口のIPのみを指定するのが安全です
# ignoreip = 127.0.0.1/8 ::1 203.0.113.10   # 固定IPの例

# 何秒間ログを監視するか
findtime = 600   # 10分間

# 何回失敗したらブロックするか
maxretry = 5

# 何秒間ブロックするか(-1 = 永久ブロック)
bantime = 3600   # 1時間

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3     # SSHは3回失敗でブロック
# 設定を反映
$ sudo systemctl restart fail2ban

fail2banの管理コマンド

# 全ジェイルの状態を確認
$ sudo fail2ban-client status

# 特定ジェイルの詳細(ブロックされているIPを確認)
$ sudo fail2ban-client status sshd

# IPを手動でブロック
$ sudo fail2ban-client set sshd banip 192.168.1.100

# IPのブロックを解除
$ sudo fail2ban-client set sshd unbanip 192.168.1.100

# ブロックログを確認
$ sudo tail -f /var/log/fail2ban.log

Nginxのブルートフォース対策

# /etc/fail2ban/jail.local に追記
[nginx-http-auth]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/error.log
maxretry = 5

[nginx-limit-req]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/error.log
maxretry = 10

まとめ

  • 設定は jail.conf をコピーした jail.local に書く(直接編集しない)
  • ignoreip に自分のIPを必ず登録。自分がロックアウトされる事故を防ぐ
  • SSHは maxretry = 3 に設定して厳しくブロック
  • fail2ban-client status sshd でブロック中のIPを確認
  • 攻撃が多い場合は bantime = -1(永久ブロック)も検討する

📋 Linuxサーバー運用・管理チェックリスト完全版でPhase 2の全要点を確認できます。

コメント

タイトルとURLをコピーしました