インターネットにサーバーを公開すると、便利な反面、不正アクセスや攻撃といったリスクが常につきまといます。特にSSHなどの管理者向けサービスは、もし突破されてしまえばサーバーを自由に操作される恐れがあります。
その対策の一つとして有効なのがfail2banです。fail2banは、不正なログイン試行を一定回数検出すると、攻撃者のIPアドレスを一時的または永久にブロックするツールです。本記事では、fail2banの基本的な設定方法と、効果的な運用方法について解説します。
fail2banとは?
fail2banは、SSHなどインターネットに公開するサービスに対する不正なログイン試行を自動検出して、一定期間ブロックするセキュリティツールです。
具体的には以下のようなことが出来ます。
- SSHやVPNなど、認証を必要とするサービスへの攻撃を防ぐ
- 攻撃が一定回数以上発生すると、IPアドレスを自動で遮断する
- サーバー管理者にとって不可欠な安全対策
Fail2banの動作の仕組み
Fail2banは以下のような仕組みで動いています。
- SSHやVPNなどのサービスがログファイルにアクセス記録や認証失敗を記録します
- Fail2banはそのログを常に監視します
- 特定のログパターン(例えば「認証失敗が何回続いた」など)が検出されると、そのアクセス元の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の操作を理解しておくことで、迅速な対応ができるようになります。
コメント