Apache Throttle (mod_qos)

BlueOnyx には、Apache Throttle と呼ばれる新しいサーバー全体の Apache リクエスト制御機能が追加されました。この機能は Apache mod_qos を基盤としており、管理者がサーバー全体に対してリクエストレート制限、レスポンスに基づくブロック、動的なリクエスト保護を一元的に管理できるようにします。

この機能は、不正または過剰なトラフィックパターンを抑制し、共有リソースを保護し、サイトごとに Apache 設定を手動で調整しなくても実用的なリクエスト制御を追加できるように設計されています。

ご注意:この機能はBlueOnyx 5210Rではご利用いただけません。BlueOnyx 5211R以降でのみご利用いただけます。

機能概要

Apache Throttle により、管理者は以下を行うことができます。

  • Apache リクエスト制御をグローバルに有効化または無効化
  • 保護プロファイルを選択:保守的、標準、積極的、カスタム
  • 一般的なリクエスト制限を設定
  • 動的リクエスト保護ルールを定義
  • 繰り返し違反するクライアントのブロック動作を制御
  • 高度なカスタムディレクティブを追加
  • 変更を適用する前に Apache 設定を検証

生成された設定は以下に書き込まれます。

  • /etc/httpd/conf.d/00-mod_qos.conf

BlueOnyx は Apache を再読み込みする前に、httpd -t を使用して Apache 設定を検証します。検証に失敗した場合は、直前に正常であることが確認されている設定が自動的に復元されます。

GUI レイアウト

Apache Throttle ページは、以下のタブで構成されています。

  1. メインステータス
  2. 一般制限
  3. 動的リクエスト保護
  4. 繰り返し違反者のブロック
  5. 詳細設定
 

メインステータス

このタブでは、機能全体の状態を制御し、mod_qos 環境の現在の状態をライブ概要として表示します。

含まれる項目は以下のとおりです。

  • Apache リクエスト制御の有効化
  • 保護レベル
  • mod_qos がインストール済みか不足しているかを示すステータス表示
  • mod_qos が読み込まれているかどうかを示すステータス表示
  • Apache 設定テストが正常か失敗したかを示すステータス表示

保護プロファイルは、デフォルトの調整値を決定します。

  • 保守的:より強力な保護、より制限的な設定
  • 標準:推奨されるデフォルト設定
  • 積極的:より厳密なリクエスト処理
  • カスタム:手動調整を有効化

一般制限

このタブでは、サーバー全体に適用される主要な mod_qos しきい値を制御します。

利用可能な設定:

  • clientEntries
  • srvMaxConnPerIP
  • srvMaxConnBusyThreshold
  • minDataRate
  • maxDataRate
  • minDataRateBusyThreshold

これらの設定は、リクエスト制御が有効な場合に Apache が使用する基本的なリクエスト処理および接続動作を定義します。

動的リクエスト保護

このタブでは、動的なリクエストスコアリングとルールベースの制御を管理します。

利用可能な設定:

  • 動的リクエスト保護の有効化
  • eventRequestLimit
  • eventLimitCount
  • eventLimitSeconds

また、管理者がリクエスト重みを付与すべき URL パターンを定義できる動的ルールテーブルも含まれています。デフォルトルールには、PHP リクエスト、WordPress ログイン、XML-RPC、AJAX リクエストが含まれます。

各ルールでは以下を設定できます。

  • 有効化または無効化
  • 説明
  • 正規表現による一致条件
  • 重みの割り当て
  • イベントリクエストとしてマーク
  • 並び順の指定

これらのルールは、SetEnvIf Request_URIQS_EventRequest 行などの mod_qos ディレクティブを生成するために使用されます。

繰り返し違反者のブロック

このタブでは、エラーや違反を繰り返し発生させるクライアントに対する、レスポンスに基づくブロックを管理します。

利用可能な設定:

  • 繰り返し違反者のブロックを有効化
  • blockCount
  • blockSeconds

ステータス別のブロック制御:

  • HTTP 400 をカウント
  • HTTP 403 をカウント
  • HTTP 404 をカウント
  • HTTP 408 をカウント
  • HTTP 500 をカウント
  • 切断された接続をカウント
  • 最小データレート違反をカウント
  • IP あたりの最大接続数超過をカウント

各ステータスベースのオプションには個別の重みを設定できるため、GUI は単純なオン/オフフラグよりも現実的なブロック動作を表現できます。

生成されるディレクティブの例には、重み付きの QS_SetEnvIfStatus 行が含まれます。

詳細設定

詳細設定タブでは、追加ディレクティブと生成される設定のプレビューを提供します。

追加ディレクティブ欄は、GUI で直接公開されていない高度な Apache または mod_qos ディレクティブを指定するためのものです。通常の Apache 構文を受け付け、生成される qos_module ブロック内に追加されます。

プレビューには、BlueOnyx が /etc/httpd/conf.d/00-mod_qos.conf に書き込む内容が正確に表示されます。

安全性と検証

BlueOnyx は Apache 設定を無条件に書き込むことはありません。

管理者が設定を保存またはテストするとき、以下の処理が行われます。

  1. BlueOnyx が候補となる設定を生成
  2. ファイルを安全に書き込み
  3. httpd -t を実行
  4. 検証に失敗した場合、以前のファイルを復元
  5. 検証に成功した場合のみ Apache を再読み込み

これにより、不適切なリクエスト制御設定によって Apache が停止してしまうことを防ぎます。

プリセット

GUI には 3 つの組み込みプリセットが用意されています。

  • 保守的
  • 標準
  • 積極的

これらのプリセットは、関連するフィールドに自動的に値を入力します。

管理者がカスタムに切り替えると、各フィールドは再び手動調整できるようになります。

ベストプラクティス

ほとんどの環境では、以下を推奨します。

  • 標準から開始
  • 設定をテスト
  • 生成された設定プレビューを確認
  • 特定のルールやしきい値が必要な場合のみカスタムに切り替え
  • 追加ディレクティブは控えめに使用し、高度な Apache 構文が必要な場合のみに限定

まとめ

Apache Throttle は、BlueOnyx 管理者に対して、mod_qos を通じた Apache リクエスト制御を一元的、安全、かつ柔軟に管理する方法を提供します。プリセットによる調整、カスタムルール処理、繰り返し違反者の保護、安全な設定生成、自動検証と復旧を組み合わせています。

これにより、Apache 設定ファイルを手動で編集しなくても、不正または過剰なリクエストパターンに対してサーバーを強化することがはるかに容易になります。