Linux fail2ban コマンド

Linux コマンド大全


fail2ban は、Linux サーバーをブルートフォース攻撃から保護するためのオープンソースの侵入防御ツールです。システムログファイル(/var/log/auth.log など)を監視して、SSH ログインの複数回の失敗試行などの悪意のある行為を検出し、ファイアウォールルールを自動的に更新して、これらの攻撃者の IP アドレスをブロックします。


fail2ban コア機能

リアルタイムログ監視

fail2ban は指定されたログファイルを継続的に監視し、事前定義されたパターンの悪意のある行為を探します。

自動IPバン

同一 IP からの複数回の失敗試行(設定可能なしきい値)を検出すると、fail2ban は自動的にその IP をファイアウォールのブロックリストに追加します。

設定可能なバン時間

管理者は初期バン時間と、複数回の違反後の漸増バン時間を設定できます。

マルチサービスサポート

SSH だけでなく、Apache、Nginx、FTP、メールサービスなど、さまざまなサービスの保護もサポートしています。

メール通知

IP をバンしたときに管理者へメール通知を送信するよう設定できます。


fail2ban のインストールと設定

インストール方法

Debian/Ubuntu ベースのシステムの場合:

例

sudo apt update
sudo apt install fail2ban

RHEL/CentOS ベースのシステムの場合:

例

sudo yum install epel-release
sudo yum install fail2ban

基本設定

fail2ban の主要な設定ファイルは次の場所にあります:

  • /etc/fail2ban/jail.conf- メイン設定ファイル(直接変更は推奨されません)
  • /etc/fail2ban/jail.local- ユーザーカスタム設定(ここでの変更を推奨)

カスタム設定ファイルを作成:

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

fail2ban のよく使うコマンド

サービスの起動/停止/再起動

例

sudo systemctl start fail2ban    # サービスを起動
sudo systemctl stop fail2ban     # サービスを停止
sudo systemctl restart fail2ban  # サービスを再起動
sudo systemctl enable fail2ban   # 起動時に自動起動を設定

サービスの状態確認

sudo systemctl status fail2ban

バンされたIPの確認

sudo fail2ban-client status sshd

特定IPのバン解除

sudo fail2ban-client set sshd unbanip 192.168.1.100

手動でのIPバン

sudo fail2ban-client set sshd banip 192.168.1.100

fail2ban 設定ファイルの詳細

主要な設定パラメータ

例

[DEFAULT]
# 無視する IP アドレス(ホワイトリスト)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# バン時間(秒)
bantime = 600

# 検出時間ウィンドウ(秒)
findtime = 600

# 最大試行回数
maxretry = 3

# 使用するファイアウォールバックエンド
banaction = iptables-multiport

[sshd]
# SSH保護を有効にするかどうか
enabled = true

# ログファイルのパス
logpath = %(sshd_log)s

# フィルター名
filter = sshd

# ポート番号
port = ssh

カスタムフィルター

フィルターは/etc/fail2ban/filter.d/ディレクトリ内に定義されています。例えば、カスタム SSH フィルターを作成する場合:

  1. デフォルトの SSH フィルターをコピー:

    sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
  2. カスタムフィルターを編集し、特定の失敗パターンに一致するように正規表現を変更します。


fail2ban 実践例

SSHサービスの保護

  1. jail.local ファイルを編集:

    sudo nano /etc/fail2ban/jail.local
  2. 以下の内容を追加または変更します:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    findtime = 600
  3. fail2ban サービスを再起動:

    sudo systemctl restart fail2ban

Apacheサービスの保護

  1. jail.local に以下の内容が含まれていることを確認します:

    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/apache2/error.log
    maxretry = 3
    bantime = 86400
  2. サービスを再起動して設定を有効にします。


fail2ban の高度な使い方

fail2ban でカスタムサービスを保護する

  1. カスタムフィルターファイルを作成:

    sudo nano /etc/fail2ban/filter.d/myapp.conf
  2. フィルタールールを追加(例):

    [Definition]
    failregex = ^.*  .* "POST /login.php.* 401
    ignoreregex =
  3. jail.local に対応する jail を追加します:

    enabled = true
    port = http,https
    filter = myapp
    logpath = /var/log/myapp/access.log
    maxretry = 5
    bantime = 3600

メール通知の設定

  1. jail.local ファイルを編集:

    [DEFAULT]
    destemail = admin@example.com
    sender = fail2ban@example.com
    mta = sendmail
    action = %(action_mwl)s
  2. メール送信ツール(sendmail や postfix など)がシステムにインストールされ、設定されていることを確認します。


fail2ban ログとトラブルシューティング

fail2ban ログの確認

sudo tail -f /var/log/fail2ban.log

よくある問題の解決

fail2ban が動作しない

  • サービスが実行されているか確認します:sudo systemctl status fail2ban
  • ログにエラーがないか確認します:sudo journalctl -u fail2ban

IP がバンされない

  • ログのパスが正しいことを確認する
  • フィルターの正規表現がログエントリに一致するか確認する
  • ログレベルをデバッグに上げる:jail.local で設定するloglevel = DEBUG

IP の誤バン

  • 信頼できる IP を ignoreip リストに追加します
  • maxretry を減らすか、findtime を増やします

fail2ban のベストプラクティス

  1. 定期的な更新:fail2ban を最新の状態に保ち、最新のセキュリティ修正と機能改善を入手します。

  2. 適切な設定:

    • 適切な maxretry と bantime を設定する
    • bantime を長く設定しすぎない。正当なユーザーを誤ってバンしないようにするため
    • 短く設定しすぎない。そうしないと保護効果が限定的になる
  3. 監視とレビュー:

    • バンされた IP のリストを定期的に確認する
    • ログを分析して攻撃パターンを把握する
  4. 多層防御:

    • fail2ban を他のセキュリティ対策(ファイアウォール、強力なパスワードポリシーなど)と組み合わせる
    • SSH のデフォルトポートの変更を検討する
  5. 設定のバックアップ:

    • カスタム設定ファイルとフィルターをバックアップする
    • 障害復旧のためにすべての変更を記録する

まとめ

fail2ban は Linux システムのセキュリティにおける重要なツールであり、悪意のある行為を自動的に検出してブロックすることで、ブルートフォース攻撃を効果的に防ぎます。fail2ban を適切に設定して使用することで、サーバーのセキュリティを大幅に向上させると同時に、管理者の手動介入の作業負担を軽減できます。この記事の紹介を通じて、fail2ban の基本的な使い方と高度な設定テクニックを習得し、実際のニーズに応じて独自のセキュリティ保護戦略をカスタマイズできるはずです。


Linux コマンド大全

その他の拡張