Fail2Banの設定と使い方:Linuxで不正アクセス対策を徹底解説

Linuxサーバーをブルートフォース攻撃から守るFail2Banの設定方法を解説。インストールからカスタムルール作成、確認・解除コマンドまで網羅。

fail2ban設定Linux不正アクセスブルートフォースBAN2026/5/25

はじめに

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: 監視ポート(ssh22
  • 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 の場合もあります。
  • ignoreipに自宅IPを追加: 自分自身をBANしないように設定。
  • bantimeの調整: 短すぎると効果が薄く、長すぎると誤BAN時の影響が大きい。初期は3600秒(1時間)程度がおすすめ。
  • 誤BANに備える: 万が一BANされた場合に備え、コンソールアクセスや管理用IPの除外設定をしておく。
  • 定期的なログ監視: Fail2Banのログを確認し、攻撃パターンを把握する。

  • *この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

    まとめ

    Fail2Banは、Linuxサーバーへの不正アクセス対策として非常に有効なツールです。インストールから基本的な設定、カスタムフィルタの作成、管理コマンドまでを押さえておけば、サーバーのセキュリティを大幅に向上できます。

    まずはSSHの監視から始め、徐々に他のサービスにも適用していくことをおすすめします。定期的にログを確認し、必要に応じて設定をチューニングすることで、より効果的な防御が可能になります。