fail2banで不正アクセスのIPを自動遮断する方法【Linuxサーバー】

インターネットにサーバーを公開すると、便利な反面、不正アクセスや攻撃といったリスクが常につきまといます。特にSSHなどの管理者向けサービスは、もし突破されてしまえばサーバーを自由に操作される恐れがあります。

その対策の一つとして有効なのがfail2banです。fail2banは、不正なログイン試行を一定回数検出すると、攻撃者のIPアドレスを一時的または永久にブロックするツールです。本記事では、fail2banの基本的な設定方法と、効果的な運用方法について解説します。

目次

fail2banとは?

fail2banは、SSHなどインターネットに公開するサービスに対する不正なログイン試行を自動検出して、一定期間ブロックするセキュリティツールです。

具体的には以下のようなことが出来ます。

  • SSHやVPNなど、認証を必要とするサービスへの攻撃を防ぐ
  • 攻撃が一定回数以上発生すると、IPアドレスを自動で遮断する
  • サーバー管理者にとって不可欠な安全対策

Fail2banの動作の仕組み

Fail2banは以下のような仕組みで動いています。

  1. SSHやVPNなどのサービスがログファイルにアクセス記録や認証失敗を記録します
  2. Fail2banはそのログを常に監視します
  3. 特定のログパターン(例えば「認証失敗が何回続いた」など)が検出されると、そのアクセス元のIPを自動的にブロックします

つまり、Fail2banはログファイルを監視して不正アクセスを検出すると、指定したポート番号のサービスをブロック(遮断)します。

導入方法

1. fail2banのインストール

まずは、fail2banをインストールします。

Debian/Ubuntu系

sudo apt update
sudo apt install fail2ban -y

CentOS/RHEL系

sudo dnf install fail2ban -y

インストール後、fail2banのサービスを起動し、有効化しておきます。

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

2. 基本的な設定

fail2banの設定ファイルは/etc/fail2ban/jail.confですが、変更する際は/etc/fail2ban/jail.localを作成し、そこに設定を記述するのが推奨されています。

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

編集を行うには以下のコマンドを使用します。

sudo nano /etc/fail2ban/jail.local

3. 設定項目の調整

fail2banの設定はデフォルトのままでも動作しますが、自分の環境に合わせて調整することで効果を高めることができます。

bantime = 3600            # IPアドレスをブロックする時間
findtime = 600            # 試行回数をカウントする時間枠
maxretry = 5              # 試行回数の閾値(5回失敗でban
ignoreip = 127.0.0.1      # 除外するIPアドレス自分のIPを除外する

この設定では、10分間(600秒)の間に5回のログイン失敗があると、そのIPを1時間(3600秒)banします。
ignoreip はローカルIPや自分のIPアドレスを保護するために使います。

4. SSHの保護設定

SSHへの不正アクセスを防ぐための設定例です。

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600

設定後にfail2banを再起動して有効にします。

sudo systemctl restart fail2ban

現在のステータスを確認する場合

sudo fail2ban-client status sshd

5. Webサーバーの保護(Apache/Nginx)

Webサーバーに対する不正アクセスも防ぐことができます。

Apacheの設定

enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5
bantime = 3600

Nginxの設定

enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 3600

6. fail2banの管理方法

fail2banの管理方法を理解しておくことで、運用がよりスムーズになります。

ステータス確認

sudo fail2ban-client status

特定のjail(例:sshd)のステータス確認

sudo fail2ban-client status sshd

手動でban/unbanする方法

sudo fail2ban-client set sshd banip 192.168.1.100   # 手動でbanする
sudo fail2ban-client set sshd unbanip 192.168.1.100 # 手動でunbanする

7. ログの効率的な管理

fail2banのログは通常 /var/log/fail2ban.log に保存されます。定期的に内容を確認し、設定の見直しを行うとよいでしょう。

ログの確認

sudo tail -n 50 /var/log/fail2ban.log

ログファイルのサイズを管理する(ログローテーションの設定)

ログファイルが肥大化するのを防ぐために、logrotateの設定を調整することもおすすめです。通常、/etc/logrotate.d/fail2ban に設定ファイルがあります。

8. 効果的なセキュリティ対策

  • fail2banはあくまでログを監視し、自動的にIPをブロックするツールです。
  • SSHポートの変更や公開鍵認証の利用 など、他のセキュリティ対策と組み合わせて利用することで、セキュリティ効果が大幅に向上します。
  • ファイアウォール(ufwやiptables)と併用することで、ブロックされたIPが直接アクセスすることを防げます。

まとめ

fail2banを活用することで、不正アクセスからサーバーを自動的に守ることができます。設定を調整しつつ、他のセキュリティ対策と組み合わせることで、さらに効果を高めることが可能です。

特に、SSHやWebサーバーを保護する設定を有効にし、定期的にログを確認することが重要です。また、手動でのban/unbanの操作を理解しておくことで、迅速な対応ができるようになります。

  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次