ウェブアプリケーションファイアウォール(ModSecurity)

ウェブアプリケーションに対する攻撃を検出して防御するために、ウェブアプリケーションファイアウォール(ModSecurity)で、ウェブサーバへのすべての要求およびサーバからの関連する応答がルールセットに対してチェックされます。チェックが成功すると、HTTP 要求がウェブサイトコンテンツに渡されます。チェックが失敗すると、定義済みのアクションが実行されます。

ModSecurity は Apache のモジュールです。従って、チェックできるのは Apache が受信する HTTP 要求のみです。Apache は、別のウェブサーバ nginx で補完されます。ウェブサイトの動的コンテンツのために nginx ウェブサーバの[PHP を nginx で処理]オプションをオンにすると、Apache には HTTP 要求が届かないので、ウェブアプリケーションファイアウォールで HTTP 要求をチェックすることはできません。静的コンテンツについては、[静的ファイルを nginx で直接処理]オプションがオンになっている場合、HTTP 要求は Apache に届かないので、ModSecurity ではチェックされません。

注: Plesk 11.5 からアップグレードし、ウェブアプリケーションファイアウォール(ModSecurity)を使用する場合、管理者は Odin またはその他のベンダーから Plesk 12 用の新規ライセンスキーを取得する必要があります。

ウェブアプリケーションファイアウォールを有効にするには:

  1.  [ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)] ( [セキュリティ] グループ内)に進みます。ModSecurity コンポーネントは、サーバにインストールする必要があります。


    Web_Application_Firewall

  2. ウェブアプリケーションファイアウォールモードを[オン]または[検出のみ]に設定します。それぞれの受信 HTTP 要求および関連する応答がルールセットに対してチェックされます。チェックが成功すると、HTTP 要求がウェブサイトコンテンツに渡されます。チェックが失敗すると、イベントがログに記録されます。[検出のみ]モードでは、その他のアクションは実行されません。[オン]モードでは、HTTP 応答にエラーコードが割り当てられます。

    注: ウェブアプリケーションファイアウォールは、サーバレベルでもドメインレベルでも設定可能です。ただし、ドメインレベルモードは、サーバに対して設定されたモードより高くできません。例えば、ウェブアプリケーションファイアウォールがサーバレベルで[検出のみ]モードである場合、ドメインに対して[オン]に設定することはできません。[オフ]および[検出のみ]モードのみが表示されます。

  3. 受信 HTTP 要求ごとにウェブアプリケーションファイアウォールエンジンでチェックされるルールセットを選択するか、カスタムルールセットをアップロードします。以下のルールセットを選択することができます。
  4. 特定のルールセットを自動更新にするには、[ルールセットを更新]チェックボックスをオンにして、更新周期を選択します。
  5. 定義済みのパラメータセットを選択するか、カスタム ModSecurity ディレクティブを指定します。以下の定義済みのパラメータセットを選択することができます。

ModSecurity では、次の 2 つの場所にログが保存されます。

ウェブアプリケーションファイアウォールモードを[オフ]または[検出のみ]から[オン]に変更した後で、ウェブサイトの機能が停止することがあります。ウェブサイトエラーログで、403404500 などのエラーコードが見つかりますが、ウェブアプリケーションファイアウォールモードを[検出のみ]または[オフ]に変更すると、こうしたエラーコードは表示されなくなります。この場合、ModSecurity 監査ログを参照し、何が起こっているのかを確認してください。厳格すぎるセキュリティルールをオフにしたり、ウェブサイトを調整することができます。

あるウェブサイトに対する HTTP 要求が完了しない理由を確認してセキュリティルールを無効にするには:

  1.  [ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]に進みます。
  2. [ModSecurity ログファイル]リンクをクリックし、監査ログをダウンロードして新しいブラウザウィンドウで開きます。
  3. 検索機能(大半のブラウザでは Ctrl+F)を使用して、問題が発生したウェブサイト(ドメイン名)のイベントを探します。例えば、your_domain.tld を探します。ブラウザで「HOST: your_domain.tld」のようにエントリがハイライトされます。ハイライトされたエントリの 3 行上に「 --eece5138-B--」のようなエントリがあります。ハイフンの間の 8 文字(この例では「eece5138」)は、HTTP 要求でトリガされたイベントの ID です。
  4. 同じイベント ID のエントリを探します。イベント ID の後に H という文字が付いたエントリ(この例では eece5138-H--)を探します。このエントリには、HTTP 要求のチェック時にトリガされたセキュリティルールの ID と説明が含まれています。セキュリティルール ID とは、引用符に囲まれた 3 から始まる整数であり、プレフィックス id 付きで角括弧に囲まれています (例:[id "340003"])。
  5. [id "3 という文字列の一部を使用して、イベント内でセキュリティルール ID を探します。
  6.  [ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]に進みます。
  7. [セキュリティルールをオフにする]セクションで、その ID(340003 など)、タグ(CVE-2011-4898 など)、または正規表現(XSS など)に基づいてセキュリティルールを選択して、[OK]をクリックします。

Plesk 12 へのアップグレード前にサーバに ModSecurity をインストールしていた場合に役に立つヒント: