fail2banの設定方法|Apacheサーバーを不正アクセスから守る基本手順

Apache サーバーをインターネットへ公開すると、公開直後から自動化されたアクセスが大量に飛んでくることがあります。
特に多いのは、次のようなパターンです。

  • Basic認証への総当たり

  • 存在しない PHP や CGI を探すスキャン

  • 管理画面や旧URLを狙うボット

  • 不正な User-Agent を使った巡回

  • 大量の失敗リクエストを伴う探索行為

こうしたアクセスのすべてを Fail2Ban だけで完全に防げるわけではありません。
ただし、ログに現れる明確な不審挙動をもとに自動で遮断するという点で、Apache 公開サーバーの基本防御として非常に有効です。

特に初心者のうちは、次のような疑問を持ちやすいです。

  • fail2ban は何をしてくれるのか

  • Apache ではどの jail を有効化すればいいのか

  • jail.confjail.local の違いは何か

  • apache-authapache-badbots はどう違うのか

  • iptablesnftables のどちらを使うのか

  • ban された IP を確認・解除するにはどうするのか

  • logpath はどこを見るべきなのか

  • 設定変更後は何を確認すればいいのか

この記事では、Fail2Ban で Apache サーバーを保護する方法について、インストールから jail 設定、ログ確認、テスト、運用時の注意点までを、できるだけわかりやすく解説します。


fail2banとは何か

Fail2Ban は、ログファイルを監視して、不審なアクセス元を自動的に一時遮断する侵入防止ツールです。公式 README では、/var/log/auth.log のような認証ログだけでなく、Apache の標準ログも対象にできると説明されています。Ubuntu コミュニティの解説でも、SSH や Apache などのログを読み取り、iptables 系のプロファイルを使ってブルートフォース対策を行う仕組みとして紹介されています。

どうやって動くのか

仕組みはシンプルです。

  1. Apache のログを監視する

  2. 指定回数以上の失敗や不審アクセスを検知する

  3. その送信元 IP を一定時間 ban する

  4. 一定時間後に自動解除する、または手動解除する

Fail2Ban の設定は、主に filteractionjail の3要素で構成されます。Debian の man page でも、filter.d/*.conf は検出条件、action.d/*.conf は ban / unban の処理、jail.conf はそれらを組み合わせる定義と説明されています。


Apache保護で fail2ban が向いている理由

Apache は外部公開されることが多く、攻撃者やボットの探索対象になりやすいです。
Fail2Ban の公式 README では、Apache 向けの標準ログをそのまま読めるとされており、実際に Apache 用の jail と filter が同梱されています。設定例として広く使われている jail には、apache-authapache-badbotsapache-botsearchapache-noscript などがあります。

Apache 向け Fail2Ban の代表的な用途は次のとおりです。

  • Basic認証失敗の監視apache-auth

  • 悪質なボットの検知apache-badbots

  • 不審なURL探索の検知apache-botsearch

  • 存在しないスクリプト探索の検知apache-noscript

ただし、これらを全部いきなり強く有効化すると、正規アクセスまで巻き込む可能性があります。
そのため、最初は apache-auth を中心に安全寄りの設定から始めるのが現実的です。


まず知っておきたい設定ファイルの考え方

Fail2Ban では、設定を直接 jail.conf に書き換えるより、jail.localjail.d/*.local で上書きするのが基本です。Debian の man page でも、Fail2Ban は複数の設定ファイルタイプを持ち、jail 定義は jail.conf 系で管理されると説明されています。一般的な運用では、パッケージ更新で上書きされうる jail.conf を直接編集しない方が安全です。

よくある構成

  • /etc/fail2ban/jail.conf
    パッケージ標準の基本設定

  • /etc/fail2ban/jail.local
    管理者が自分で上書きする設定

  • /etc/fail2ban/jail.d/*.conf / *.local
    jail ごとに分割して管理したいときの設定

初心者には、まず /etc/fail2ban/jail.local を作る方法がわかりやすいです。


インストールする

Ubuntu / Debian 系では、まずパッケージを入れます。

sudo apt update
sudo apt install fail2ban

Ubuntu コミュニティの解説でも、Fail2Ban はパッケージから導入する手順が案内されています。

サービス状態を確認する

sudo systemctl status fail2ban

起動していなければ、開始します。

sudo systemctl enable --now fail2ban

現在の状態を確認する

Fail2Ban には専用クライアントがあり、現在の jail 状態を確認できます。

sudo fail2ban-client status

このコマンドで、

  • 起動しているか

  • 有効な jail がいくつあるか

  • jail 名一覧

を確認できます。

特定の jail を詳しく見たい場合は、たとえば次のようにします。

sudo fail2ban-client status apache-auth

これで、現在 ban されている IP や対象ログなどを確認できます。


最初に作る jail.local の基本形

まずは、グローバル設定と Apache 向け jail を最小限書いた jail.local を作ります。

sudo nano /etc/fail2ban/jail.local

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 ::1

[apache-auth]
enabled = true
port = http,https
logpath = %(apache_error_log)s

ここで指定している意味

  • bantime
    ban する時間

  • findtime
    何分間の間に失敗が集中したら対象にするか

  • maxretry
    何回失敗したら ban するか

  • ignoreip
    ban 対象から除外するIP

  • enabled
    jail を有効化する

  • port
    関連ポート

  • logpath
    監視するログ

Fail2Ban の設定概念として、jail は filter と action の組み合わせであり、Apache 用には標準 filter が複数用意されています。apache-auth の典型設定例でも、port = http,httpslogpath = %(apache_error_log)s が使われています。


apache-auth とは何か

apache-auth は、Apache の認証失敗系を監視する jail です。
Basic認証や認証保護された領域があるサイトでは、まずこれを有効化する価値があります。

どんなログを見るのか

典型的には Apache の error log 側を見ます。
設定例でも %(apache_error_log)s を使う形が一般的です。

どんな場面で有効か

  • /admin/ に Basic認証をかけている

  • ステージング環境に Basic認証がある

  • 一部ページに認証をかけている

  • CMS管理画面前段に認証を置いている

Apache の認証保護をしていないサイトでは、apache-auth だけではほとんど効果が見えないことがあります。
その場合は後述の apache-badbotsapache-botsearch を検討します。

Si quieres conocer otros artículos parecidos a fail2banの設定方法|Apacheサーバーを不正アクセスから守る基本手順 puedes visitar la categoría Puroguramingu.

Go up