LinuxでのFail2Banのインストールと設定方法

9分で読めます - 2026年5月14日

hero section cover
目次
  • Linux上でのFail2Banのインストールと設定方法
  • 前提条件
  • Ubuntu/DebianへのFail2Banのインストール
  • ジェイルの設定
  • テストと監視
  • 高度な設定
共有

Ubuntu、Debian、RHELベースのLinuxサーバーにFail2Banをインストール、設定、テストするためのステップバイステップガイド。

Linux上でのFail2Banのインストールと設定方法

Fail2Banは、不審なアクティビティがないかサーバーログを監視し、ファイアウォールルールを更新することで、問題のあるIPを自動的に禁止します。Fail2Banは、ブルートフォース攻撃を阻止し、ログのノイズを低減し、設定後はバックグラウンドで静かに動作します。このガイドでは、Ubuntu/Debianへのインストール、コアの設定、jailのセットアップ、そして知っておく価値のあるいくつかの高度なオプションについて説明します。

前提条件

Fail2Banは、ほとんどのLinuxディストリビューションで動作します:Ubuntu、Debian、AlmaLinux、CentOS、RHEL、Rocky Linux、Fedora。必要なもの

  • システムにインストールされたPython 3
  • パッケージのインストールとファイアウォールの変更のためのroot または sudo 権限
  • アクティブなファイアウォール(iptables、nftables、ufw、firewalld)
  • 失敗したログイン試行をキャプチャするログファイル(Debianベースのシステムでは/var/log/auth.log、RHELベースでは/var/log/secure)。

RHELベースのシステムでは、まずEPELリポジトリを有効にする。Fail2Banをインストールする前に、ufw statusまたはsystemctl status firewalldでファイアウォールが動作していることを確認してください。

Ubuntu/DebianへのFail2Banのインストール

パッケージを更新し、Fail2Banをインストールする:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

サービスを有効にし、起動時に開始するようにします:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

デフォルトの設定をローカルの上書きファイルにコピーする。パッケージのアップデートが設定を上書きしないように、jail.confではなく、常にjail.localを編集する:

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

すべてが実行されていることを確認する:

sudo systemctl status fail2ban
sudo fail2ban-client status

最初のコマンドは、"Active: active (running) "を表示する。2番目のコマンドは、アクティブなjailをリストします。sudo systemctl is-enabled fail2banで、ブート時にFail2Banが有効になっていることを確認します。

ジェイルの設定

デフォルト設定

etc/fail2ban/jail.localを開き、[DEFAULT]セクションを調整する。これらの設定は、上書きされない限り、すべての jail に適用されます:

パラメータ推奨値何をするか
バンタイム3600IPを1時間ブロック
ファインドタイム60010分以内の失敗をカウント
最大再試行回数35回BANが発動するまでの失敗回数
無視IP127.0.0.1/8 ::1決して禁止されないIP

ignoreipに自分の管理IPを追加して、自分自身をロックアウトしないようにする。例:ignoreip = 127.0.0.1/8 ::1 203.0.113.50

SSH保護

jail.localでSSH jailを有効にします:

[sshd]
enabled = true

logpathがあなたのディストロの正しいログファイルを指していることを確認してください。SSHを非標準ポート(例えば2222)に移動した場合、ポートパラメータを一致するように更新します。

ウェブサーバ保護

あなたのウェブサーバにマッチするjailを有効にします:

  • NginxNginx: [nginx-http-auth]認証失敗のため、[nginx-botsearch]悪意のあるボットのため
  • Apache[apache-auth]認証のため、[apache-badbots]ボットのため

recidiveジェイル

recidive]ジェイルは、他のジェイルで禁止され続けるIPを捕らえ、通常1週間(604,800秒)の長いペナルティを適用します。アプローチをローテーションするしつこい攻撃者のために有用である。

変更を行った後、リロードしてください:

sudo systemctl restart fail2ban
sudo fail2ban-client status

テストと監視

禁止措置のテスト

本番環境でFail2Banに依存する前に、テストしてください。リモートマシン(管理者IPではない)から、maxretryを超えるまでSSHログインを試みます。ブロックされるはずです。で確認してください:

sudo fail2ban-client status sshd

リアルタイムでBANの様子を見る:

tail -f /var/log/fail2ban.log

誤って正当なIPをBANしてしまった場合は、BANを解除してください:

sudo fail2ban-client set sshd unbanip 203.0.113.50

日次モニタリング

ログをグリップしてBAN履歴を確認:

grep "Ban\|Unban" /var/log/fail2ban.log

便利な管理コマンド

コマンド目的
fail2ban-clientステータスすべてのアクティブな jail をリストアップ
fail2ban-client禁止現在禁止されているIPをすべて表示
fail2ban-client set <jail> unbanip <IP>特定のIPを禁止解除する
fail2ban-client unban --allすべての禁止を解除する
fail2ban-client set <jail> banip <IP> を設定する。手動でIPを禁止する

禁止は再起動後も持続する。Fail2Banはそれらを/var/lib/fail2ban/fail2ban.sqlite3のSQLiteデータベースに保存する。

高度な設定

nftablesへの切り替え

nftablesはiptablesに代わる最新のものです。単一のフレームワークでIPv4とIPv6を処理し、大規模な禁止リストに対応し、レート制限を内蔵しています。Ubuntu 22.04+、Debian 11+、または最近のディストロを使用している場合、より良い選択です。

jail.localで設定してください:

[DEFAULT]
banaction = nftables-multiport

Fail2Banを再起動し、sudo nft list rulesetで確認してください。出力にf2b-tableと f2b-chainが表示されるはずだ。古いシステムを使っているか、互換性の要件がある場合のみ、iptablesにこだわってください。

メール通知

デフォルトでは、Fail2Banは静かに禁止します。電子メールアラートを受け取るには、jail.localの [DEFAULT]セクションに以下を追加してください:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

action_mwlアクションは、禁止詳細、WHOISデータ、禁止をトリガーしたログ行を含むメールを送信します。WHOISデータだけが必要な場合は、action_mwを使用してください。sendmailのようなメール転送エージェントがインストールされているか、msmtpのようなもので設定されたSMTPリレーが必要です。

SlackやDiscordのアラートについては、Webhookを送信するスクリプトを作成し、/etc/fail2ban/action.d/にあるカスタムアクションファイルで設定します。

Fail2Banを実行するために、フルルートアクセスと無制限帯域幅のサーバーを探しているなら、FDCの専用サーバーをチェックしてください

background image
サーバーが成長を妨げていませんか?

遅いデプロイメントや帯域幅の制限にうんざりしていませんか?FDC Serversは、瞬時の専用電源、グローバルリーチ、あらゆる規模に対応する柔軟なプランを提供します。アップグレードの準備はできましたか?

今すぐパフォーマンスのロックを解除

ブログ

今週の特集

その他の記事
Linuxサーバー・ハードニング・チェックリスト

Linuxサーバー・ハードニング・チェックリスト

Linuxサーバーを堅牢化するためのステップバイステップのチェックリスト。SSH、ファイアウォール、パッチ適用、ファイルパーミッション、SELinux/AppArmor、監査ロギングをカバー。

15分で読めます - 2026年5月8日

iperf3 チュートリアル:LinuxとWindowsでネットワーク速度をテストする

10分で読めます - 2026年5月7日

その他の記事
background image

ご質問またはカスタムソリューションが必要ですか?

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時展開

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時展開