LinuxでのFail2Banのインストールと設定方法
9分で読めます - 2026年5月14日

Ubuntu、Debian、RHELベースのLinuxサーバーにFail2Banをインストール、設定、テストするためのステップバイステップガイド。
Linux への Fail2Ban のインストールと設定方法
Fail2Banは、サーバーのログを監視して不審な活動を検知し、ファイアウォールルールを更新することで、問題のあるIPアドレスを自動的にブロックします。ブルートフォース攻撃を阻止し、ログのノイズを低減し、設定後はバックグラウンドで静かに動作します。このガイドでは、Ubuntu/Debianへのインストール、基本設定、jailの設定、および知っておくべきいくつかの高度なオプションについて解説します。
前提条件
Fail2Banは、Ubuntu、Debian、AlmaLinux、CentOS、RHEL、Rocky Linux、Fedoraなど、ほとんどのLinuxディストリビューションで動作します。必要なものは以下の通りです:
- システムにPython 3がインストールされていること
- パッケージのインストールおよびファイアウォールの設定変更を行うためのroot権限またはsudo権限
- 稼働中のファイアウォール(iptables、nftables、ufw、または firewalld)
- ログイン失敗の試行を記録するログファイル(
/var/log/auth.logDebianベースのシステムでは、/var/log/secureRHELベースのシステムの場合
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.localを編集し、 jail.confを編集してください。そうすれば、パッケージの更新によって設定が上書きされることはありません:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localすべてが正常に動作しているか確認します:
sudo systemctl status fail2ban
sudo fail2ban-client status最初のコマンドで「Active: active (running)」と表示されるはずです。2番目のコマンドではアクティブなジェイルが一覧表示されます。以下のコマンドで、Fail2Banが起動時に有効になっていることを確認してください: sudo systemctl is-enabled fail2ban.
Jailsの設定
デフォルト設定
開く /etc/fail2ban/jail.local し、 [DEFAULT] セクションを調整します。これらの設定は、上書きされない限りすべてのジェイルに適用されます:
| パラメータ | 推奨値 | 機能 |
|---|---|---|
bantime | 3600 | IPアドレスを1時間ブロックする |
findtime | 600 | 10分間のウィンドウ内で失敗回数をカウントする |
maxretry | 3 から 5 | 禁止がトリガーされるまでの失敗回数 |
ignoreip | 127.0.0.1/8 ::1 | 一度もブロックされたことのないIP |
管理用IPアドレスを追加して ignoreip 自身へのアクセスを遮断しないようにします。例: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.
SSH保護
でSSHジェイルを有効にする jail.local:
[sshd]
enabled = trueが logpath が、お使いのディストリビューションに適したログファイルを指しているか確認してください。SSHを標準以外のポート(例:2222)に移動した場合は、 port パラメータをそれに合わせて更新してください。
Webサーバーの保護
お使いの Web サーバーに合った jail を有効にします:
- Nginx:
[nginx-http-auth]認証失敗時、[nginx-botsearch]悪意のあるボット対策 - Apache:
[apache-auth]認証用、[apache-badbots]ボット対策
Recidive Jail
Recidive Jailは [recidive] このジェイルは、他のジェイルで繰り返し禁止措置を受けているIPを捕捉し、通常1週間(604,800秒)というより長いペナルティを適用します。これは、攻撃手法を頻繁に変える執拗な攻撃者に対して有効です。
変更後、再読み込みを行ってください:
sudo systemctl restart fail2ban
sudo fail2ban-client statusテストと監視
禁止措置のテスト
本番環境でFail2Banを使用する前に、必ずテストを行ってください。リモートマシン(管理用IPアドレスではない)から、 maxretryを超えるまで試行してください。ブロックされるはずです。次のコマンドで確認してください:
sudo fail2ban-client status sshdブロックがリアルタイムで発生する様子を確認するには:
tail -f /var/log/fail2ban.log誤って正当なIPをブロックしてしまった場合は、ブロックを解除してください:
sudo fail2ban-client set sshd unbanip 203.0.113.50日常的な監視
ログをgrepしてブロック履歴を確認します:
grep "Ban\|Unban" /var/log/fail2ban.log便利な管理コマンド:
| コマンド | 目的 |
|---|---|
fail2ban-client status | アクティブなすべてのジェイルを表示 |
fail2ban-client banned | 現在禁止されているすべてのIPを表示 |
fail2ban-client set <jail> unbanip <IP> | 特定のIPの禁止を解除する |
fail2ban-client unban --all | すべての禁止を解除 |
fail2ban-client set <jail> banip <IP> | IPを手動で禁止する |
禁止設定は再起動後も維持されます。Fail2Banはそれらを以下の場所にあるSQLiteデータベースに保存します。 /var/lib/fail2ban/fail2ban.sqlite3.
詳細設定
nftablesへの移行
nftablesは、iptablesに代わる最新のツールです。単一のフレームワークでIPv4とIPv6を処理し、大規模なブロックリストに対しても優れたスケーラビリティを発揮し、レート制限機能が組み込まれています。Ubuntu 22.04以降、Debian 11以降、またはその他の最近のディストリビューションを使用している場合は、nftablesの方が適しています。
設定方法 jail.local:
[DEFAULT]
banaction = nftables-multiportFail2Banを再起動し、次に sudo nft list rulesetで確認してください。 f2b-table および f2b-chain と表示されるはずです。古いシステムを使用している場合や互換性の要件がある場合のみ、iptablesを使い続けてください。
メール通知
デフォルトでは、Fail2Banは通知なしでブロックを行います。メール通知を受け取るには、 [DEFAULT] セクションに jail.local:
[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)sこの action_mwl アクションは、ブロック詳細、WHOISデータ、およびブロックを引き起こしたログ行を含むメールを送信します。WHOISデータのみが必要な場合は action_mw を使用してください。sendmail などのメール転送エージェントがインストールされているか、または msmtp.
Slack や Discord での通知を行うには、Webhook を送信するスクリプトを作成し、 /etc/fail2ban/action.d/.
Fail2Ban を実行するための完全な root アクセス権と帯域制限のないサーバーをお探しの場合は、FDC の専用サーバーをご検討ください。

遅いデプロイメントや帯域幅の制限にうんざりしていませんか?FDC Serversは、瞬時の専用電源、グローバルリーチ、あらゆる規模に対応する柔軟なプランを提供します。アップグレードの準備はできましたか?
今すぐパフォーマンスのロックを解除
Linuxのメモリ管理:スワップ、OOMキラー、Cグループ
Linuxスワップ、OOMキラー、cgroupsがどのように連携するか - データベース、ウェブサーバー、マルチテナントVPSホストの設定例付き。
12分で読めます - 2026年5月31日
Prometheusとnode_exporterのセットアップガイド
15分で読めます - 2026年5月29日

ご質問またはカスタムソリューションが必要ですか?
柔軟なオプション
グローバル・リーチ
即時展開
柔軟なオプション
グローバル・リーチ
即時展開