概要: このトピックでは、オープンソースのウェブアプリケーションファイアウォールである ModSecurity を使用してウェブアプリケーション(WordPress、Joomla!、Drupal など)を保護する方法を説明します。

このトピックでは、ModSecurity の仕組みを概説し、有効化して構成する方法についても説明します。

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

ModSecurity は Plesk for Linux と Plesk for Windows の両方でサポートされ、ウェブサーバ(Apache、Nginx、または IIS)のモジュールとして機能します。

ModSecurity を有効にする

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

  1. [ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]([セキュリティ]の下)の順に選択します。

    このリンクが表示されない場合、[ツールと設定] > [アップデート] > [コンポーネントを追加/削除] > [Web hosting]グループから ModSecurity コンポーネントをインストールします。

    image mode selector

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

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

  3. (Plesk for Linux のみ)[設定]タブに移動して、[ルールを実行]ドロップダウンメニューから必要なバージョンの ModSecurity を選択します。

    • Apache (ModSecurity 2.9)(推奨)。ModSecurity 2.9 は、[Apache と nginx の設定]で「プロキシモード」が有効になっているドメインに対してのみ機能します。
    • Nginx (ModSecurity 3.0)。ModSecurity 3.0 は、OWASP と Comodo のルールセットのみを使用できます。本番環境で ModSecurity 3.0 を使用する前に、テストサーバで試してみることを強くお勧めします。
  4. 受信 HTTP 要求ごとにウェブアプリケーションファイアウォールエンジンでチェックされる利用可能なルールセットを選択するか、カスタムルールセットをアップロードします。以下のルールセットを選択できます。

    image rule sets

    • Atomic Standard(無料、Atomic Advanced にアップグレード可能です):Plesk にバンドルされている Atomic ModSecurity ルールの無料のスターターバージョンです。重要なセキュリティ機能と不具合の修正が毎月リリースされます。このルールセットに含まれるルールについては、「Atomic ModSecurity ルールセット」を参照してください。

    • OWASP(無料) :OWASP ModSecurity Core Rule Set(CRS)は、ウェブアプリケーションでしばしば検出される未知の脆弱性に対する包括的な保護を実現します。このルールセットは無料で付属しています。非常に厳格なルールセットとして知られており、本番環境で使用する場合は、追加調整が必要になります。このルールセットを選択すると、WordPress の一部が機能しなくなり、ウェブメールとファイル共有も機能しません。代わりに、Atomic または Comodo ルールセットを使用できます。

    • (Plesk for Linux)Comodo(無料):カスタマイズ可能で使いやすい無料のルールベースのトラフィック制御システムです。ウェブベースのアプリケーションを保護します。ルールデータベースを高頻度で更新することで、最新のハッキング技術にも対応します。

    • Atomic Advanced:最新バージョンのルールです。パフォーマンスが向上しており、 Atomicorp GotRoot から新しいセキュリティ機能や不具合の修正が定期的にリリースされています。フルサポートされる商用ルールセットであり、本番環境での使用をお勧めします。Plesk は、このルールセットを有効化するための Security Core Complete by Atomicorp 追加機能を提供しています。この追加機能は、以下の方法で入手できます。

      • Plesk オンラインストア で Advanced ModSecurity Rules by Atomicorp を購入する。
      • Plesk ライセンスを既にお持ちのお客様は、Plesk Partner Central の UI またはパートナー API を経由して追加機能を追加できます(詳しくは Partner Central ユーザガイド または Partner API 3.0 リファレンス を参照してください)。
      • Plesk ライセンスを既にお持ちのお客様が Plesk Partner Central へのアクセス権をお持ちでない場合には、プロバイダまでお問い合わせください。

      既に Atomic サイトのアカウントをお持ちの場合、ユーザ名とパスワードを指定してこのルールセットを有効にすることができます。

      注釈: この追加機能を取得すると、Plesk インターフェースには Atomic Standard(無料、Atomic Advanced にアップグレード可能です)ではなく Atomic Advanced と表示されます。これが実際に意味するのは、完全な Atomic Advanced ModSecurity ルールセットです。

      このルールセットに含まれるルールについては Atomic ModSecurity ルールセット を参照してください。

    • カスタムルールセット:Atomic の評価版パッケージや Comodo の無償パッケージなど、カスタムウェブアプリケーションファイアウォールルールセットをアップロードできます。サポートされるフォーマット:zip、tar.gz、tgz、tar.bz2、conf

  5. 特定のルールセットを自動更新にするには、[ルールセットを更新]チェックボックスをオンにして、更新周期を選択します。

  6. 定義済みのパラメータセットを選択するか、カスタム ModSecurity ディレクティブを指定します。以下の定義済みのパラメータセットを選択することができます。

    • 高速:HTTP 要求の URI およびヘッダ部分を解析する場合。このモードでは、CPU の消費が最少になります。

    • トレードオフ:HTTP 要求の URI、ヘッダ、および要求の POST データを解析する場合。このモードは、品質とパフォーマンスのバランスに優れています。

    • 完全:HTTP 要求のヘッダ全体、要求の POST データ、および HTTP 応答の本文を解析する場合。このモードは、CPU リソースの消費が最大になりますが、特別なセキュリティ対策を必要とするサイトに対して推奨されます。たとえば、カード払いが可能なオンラインショップが該当します。

      注釈: パフォーマンスを最大化するために、ウェブアプリケーションファイアウォールは、要求キャッシュが有効なローカル DNS サーバを必要とします。これがないと、ウェブアプリケーションファイアウォールがオンになっている場合にウェブサイトの読み込みに時間がかかります。

      image configuration

ログファイル(Linux)

Linux で、ModSecurity がログの保存に使用するのは次の 2 つの場所です。

  • ModSecurity 監査ログ(/var/log/modsec_audit.log)は、非常に詳細な情報を記録し、Plesk サーバ全体に使用されます。ModSecurity が何らかのイベントの発生を検知すると、監査ログファイルにエントリが生成されます。ModSecurity 監査ログを表示するには、[ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]を選択し、[ModSecurity 監査ログ]セクションの[ログアーカイブ]リンクをクリックします。ここで、ModSecurity ログファイルとその変更日付を表示したり、ログファイルをダウンロードしたりすることができます。
  • ドメインの Apacheエラーログ(/var/www/vhosts/DOMAIN.TLD/logs/error_log)には、ウェブサイトエラーに関する簡潔な情報だけが記録されます。特定のウェブサイトのエラーログを表示するには、顧客パネルで[ウェブサイトとドメイン] > <ドメイン名> > [ログ]に進み、右上で[すべてのログ]ではなく[Apache エラー][nginx エラー]のみを選択してください。

ログファイル(Windows)

Windows での ModSecurity 監査ログはドメイン固有であり、%plesk_dir%ModSecurity\vhosts\<domain's GUID>\logs に保存されます(ここで %plesk_dir% は Plesk のデフォルトインストールディレクトリ)。

ルールをオフにする

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

あるウェブサイトに対し、HTTP リクエストが完了しない理由を確認するには:

  1. ウェブサイトの監査ログファイルを表示します。

    Plesk for Linux では、Plesk の UI からログを表示できます。[ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]にアクセスし、[ModSecurity ログファイル]リンクをクリックして監査ログをダウンロードし、新しいブラウザウィンドウで開きます。

  2. 検索機能(大半のブラウザでは Ctrl+F)を使用して、問題が発生したウェブサイト(ドメイン名)のイベントを探します。たとえば、your_domain.tld を探します。ブラウザで HOST:your_domain.tld のようなエントリがハイライトされます。ハイライトされたエントリの 3 行上に「--eece5138-B--」のようなエントリがあります。ハイフンの間の 8 文字(この例では「eece5138」)は、HTTP 要求でトリガされたイベントの ID です。

  3. 同じイベント ID を持つエントリをさらに探します。イベント ID の後に H という文字が付いたエントリを探します (この例では eece5138-H--)。このエントリには、HTTP 要求のチェック時にトリガされたセキュリティルールの ID と説明が含まれています。セキュリティルールの ID とは、 id というプレフィックスが付いた整数で、角括弧に囲まれています (たとえば [id "340003"][id "913102"])。

  4. 文字列の一部 (たとえば [id "3) を使用して、イベント内でセキュリティルール ID を探します。この ID は、ルールをオフにするときに使用できます。

ルールをオフにする:

  1. [ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]に進みます。
  2. [セキュリティルールをオフにする]セクションで、ID(340003 など)、タグ(CVE-2011-4898 など)、または正規表現(XSS など)に基づいてセキュリティルールを選択して、[OK]をクリックします。