ウェブアプリケーションファイアウォール(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 要求ごとにウェブアプリケーションファイアウォールエンジンでチェックされるルールセットを選択するか、カスタムルールセットをアップロードします。以下のルールセットを選択することができます。
    • OWASP ModSecurity Core Rule Set(CRS): CRS では、ウェブアプリケーションでよく見られる未知の脆弱性に対する包括的な保護を実現します。このルールセットは無料で付属しています。また、非常に厳格なルールセットとして知られており、本番環境で使用する場合は、さらに調整する必要があります。このルールセットを選択すると、WordPress は一部機能せず、ウェブメールとファイル共有のどちらも機能しません。代わりに Atomic または Comodo ルールセットを使用することができます。
    • Atomic ModSecurity ルールセット: 最新バージョンのルールです。パフォーマンスが向上しており、Atomicorp GotRoot から新しいセキュリティ機能やバグ修正が定期的にリリースされています。フルサポートされる商用ルールセットであり、本番環境での使用をお勧めします。Plesk でこのルールセットを有効にするには、Atomic サイトで登録を行い、このサイトでユーザ名およびパスワードを提供してください。

      注意: Atomic ルールセットを選択する場合、以下の手順を行って、ModSecurity が正しく機能することを確認してください。

      サーバで aum -u コマンドを実行します。Plesk modsecurity パッケージが Atomic リポジトリからのパッケージに置き換えられます。次に、以下のコマンドを実行します。

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl ?enable
      • service httpd restart
    • Comodo ModSecurity ルールセット: このルールセットは、カスタマイズ可能で使いやすいルールベースのトラフィック制御システムであり、ウェブベースのアプリケーションを保護し、ルールデータベースの高頻度の更新によって最新のハッキング技術にも対応します。このルールセットは無料で付属しています。Plesk でこのルールセットを有効にするには、Comodo サイトで登録を行い、このサイトでユーザ名およびパスワードを提供してください。
  4. 特定のルールセットを自動更新にするには、[ルールセットを更新]チェックボックスをオンにして、更新周期を選択します。
  5. 定義済みのパラメータセットを選択するか、カスタム ModSecurity ディレクティブを指定します。以下の定義済みのパラメータセットを選択することができます。
    • 高速:HTTP 要求の URI およびヘッダ部分を解析する場合。このモードでは、CPU の消費が最少になります。
    • トレードオフ:HTTP 要求の URI、ヘッダ、および要求の POST データを解析する場合。このモードは、品質とパフォーマンスのバランスに優れています。
    • 完全:HTTP 要求のヘッダ全体、要求の POST データ、および HTTP 応答の本文を解析する場合。このモードは、CPU リソースの消費が最大になりますが、特別なセキュリティ対策を必要とするサイトに対して推奨されます。例えば、カード払いが可能なオンラインショップが該当します。

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

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

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

ウェブアプリケーションファイアウォールモードを[オフ]または[検出のみ]から[オン]に変更した後で、ウェブサイトの機能が停止することがあります。ウェブサイトエラーログで、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 をインストールしていた場合に役に立つヒント:
  • Plesk は独自の ModSecurity パッケージをインストールしますが、 アップグレード前チェック中、Plesk インストーラにより、既存のインストールを上書きして Plesk ModSecurity がインストールされることに同意するかどうかを確認される場合があります。
  • 既存の ModSecurity 構成は、そのまま維持されます。ただし、ModSecurity には多数のディストリビューションや構成があるため、古い構成と新しい構成にどのようなコンフリクトが生じるか予測するのは困難です。問題を回避するには、Plesk 12 へのアップグレードまたは Plesk の ModSecurity のインストールを行う前に、既存の構成を保存して ModSecurity をアンインストールしてください。