Fail2Banの設定と使い方:Linuxで不正アクセス対策を徹底解説
Linuxサーバーをブルートフォース攻撃から守るFail2Banの設定方法を解説。インストールからカスタムルール作成、確認・解除コマンドまで網羅。
はじめに
Fail2Banは、Linuxサーバーへの不正アクセス(特にブルートフォース攻撃)を自動的に検知し、該当IPアドレスをファイアウォールでブロックするツールです。ログファイルを監視し、一定回数以上の失敗があったIPをBANすることで、サーバーセキュリティを強化します。
本記事では、Fail2Banのインストールから基本的な設定、カスタムルールの作成、確認・解除コマンドまでを解説します。
Fail2Banのインストール
主要なLinuxディストリビューションではパッケージ管理システムからインストールできます。
Debian/Ubuntu系
sudo apt update
sudo apt install fail2ban
RHEL/CentOS系
sudo yum install epel-release
sudo yum install fail2ban
Fedora
sudo dnf install fail2ban
インストール後、サービスを有効化して起動します。
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
基本設定
Fail2Banの設定ファイルは /etc/fail2ban/ にあります。メインの設定ファイルは jail.conf ですが、直接編集せずに jail.local を作成して上書きするのが推奨されます。
jail.localの作成
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local
グローバル設定
[DEFAULT] セクションで全体の設定を行います。
[DEFAULT]
<h1>BAN対象の時間(秒)</h1>
bantime = 3600
<h1>失敗回数のカウント期間(秒)</h1>
findtime = 600
<h1>上記期間内の失敗回数</h1>
maxretry = 5
<h1>無視するIP(自宅IPなど)</h1>
ignoreip = 127.0.0.1/8 192.168.1.0/24
<h1>使用するファイアウォール</h1>
banaction = iptables-multiport
<h1>メール送信設定(必要に応じて)</h1>
action = %(action_)s
各サービスの設定
[DEFAULT] 以降に、監視するサービスごとの設定を記述します。例えばSSHのブルートフォース対策は以下の通り。
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
enabled: 有効化port: 監視ポート(ssh や 22)filter: 使用するフィルタ(/etc/fail2ban/filter.d/ に定義)logpath: 監視するログファイルmaxretry: 最大失敗回数(グローバルより優先)bantime: BAN時間(秒)その他の一般的なサービスの設定例:
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5
[postfix]
enabled = true
filter = postfix
logpath = /var/log/mail.log
設定の反映
設定変更後はFail2Banを再起動します。
sudo systemctl restart fail2ban
フィルタのカスタマイズ
標準で用意されていないサービスを監視するには、フィルタファイルを作成します。
フィルタファイルの作成
/etc/fail2ban/filter.d/ に .conf ファイルを作成します。
例:WordPressのログイン試行を監視する wordpress.conf
[Definition]
failregex = ^<HOST>.*POST /wp-login.php HTTP.* 404
ignoreregex =
jail.localで使用
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 3600
確認と管理コマンド
ステータス確認
sudo fail2ban-client status
特定のjailの詳細を確認する場合:
sudo fail2ban-client status sshd
BANリストの確認
sudo iptables -L -n | grep fail2ban
IPの手動BAN/UNBAN
<h1>BAN</h1>
sudo fail2ban-client set sshd banip 192.168.1.100
<h1>UNBAN</h1>
sudo fail2ban-client set sshd unbanip 192.168.1.100
ログの確認
sudo tail -f /var/log/fail2ban.log
注意点とベストプラクティス
/var/log/auth.log の代わりに /var/log/secure の場合もあります。*この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*
まとめ
Fail2Banは、Linuxサーバーへの不正アクセス対策として非常に有効なツールです。インストールから基本的な設定、カスタムフィルタの作成、管理コマンドまでを押さえておけば、サーバーのセキュリティを大幅に向上できます。
まずはSSHの監視から始め、徐々に他のサービスにも適用していくことをおすすめします。定期的にログを確認し、必要に応じて設定をチューニングすることで、より効果的な防御が可能になります。