ウェブアプリケーションに対する攻撃を検出して防御するために、ウェブアプリケーションファイアウォール(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 用の新規ライセンスキーを取得する必要があります。
ウェブアプリケーションファイアウォールを有効にするには:
注: ウェブアプリケーションファイアウォールは、サーバレベルでもドメインレベルでも設定可能です。ただし、ドメインレベルモードは、サーバに対して設定されたモードより高くできません。例えば、ウェブアプリケーションファイアウォールがサーバレベルで[検出のみ]モードである場合、ドメインに対して[オン]に設定することはできません。[オフ]および[検出のみ]モードのみが表示されます。
注意: Atomic ルールセットを選択する場合、以下の手順を行って、ModSecurity が正しく機能することを確認してください。
サーバで aum -u
コマンドを実行します。Plesk modsecurity パッケージが Atomic リポジトリからのパッケージに置き換えられます。次に、以下のコマンドを実行します。
plesk sbin modsecurity_ctl --disable
plesk sbin modsecurity_ctl ?enable
service httpd restart
注: パフォーマンスを最適化するために、ウェブアプリケーションファイアウォールは要求のキャッシュを有効にしたローカル DNS サーバを必要とします。これがないと、ウェブアプリケーションファイアウォールをオンにした場合に、ウェブサイトの読み込みに時間がかかります。
ModSecurity では、次の 2 つの場所にログが保存されます。
/var/log/httpd/modsec_audit.log
)は、非常に詳細にわたり、Plesk サーバ全体で使用されます。ModSecurity が何らかのイベントの発生を検知すると、監査ログファイルにエントリが生成されます。ModSecurity 監査ログを表示するには、 [ツールと設定] > [ウェブアプリケーションファイアウォール(ModSecurity)]を選択し、[ModSecurity 監査ログ]セクションの[ログアーカイブ]リンクをクリックします。 ここで、ModSecurity ログファイルとその変更日付を表示したり、ログファイルをダウンロードしたりすることができます。/var/www/vhosts/DOMAIN.TLD/logs/error_log
)には、ウェブサイトエラーに関する簡潔な情報だけが記録されます。特定のウェブサイトのエラーログを表示するには、顧客パネルで[ウェブサイトとドメイン]> <ドメイン名> > [ログ]に進み、右上で[すべてのログ]ではなく[Apache エラー]と[nginx エラー]のみを選択してください。ウェブアプリケーションファイアウォールモードを[オフ]または[検出のみ]から[オン]に変更した後で、ウェブサイトの機能が停止することがあります。ウェブサイトエラーログで、403
、404
、500
などのエラーコードが見つかりますが、ウェブアプリケーションファイアウォールモードを[検出のみ]または[オフ]に変更すると、こうしたエラーコードは表示されなくなります。この場合、ModSecurity 監査ログを参照し、何が起こっているのかを確認してください。厳格すぎるセキュリティルールをオフにしたり、ウェブサイトを調整することができます。
あるウェブサイトに対する HTTP 要求が完了しない理由を確認してセキュリティルールを無効にするには:
Ctrl+F
)を使用して、問題が発生したウェブサイト(ドメイン名)のイベントを探します。例えば、your_domain.tld
を探します。ブラウザで「HOST: your_domain.tld
」のようにエントリがハイライトされます。ハイライトされたエントリの 3 行上に「 --eece5138-B--
」のようなエントリがあります。ハイフンの間の 8 文字(この例では「eece5138
」)は、HTTP 要求でトリガされたイベントの ID です。H
という文字が付いたエントリ(この例では eece5138-H--
)を探します。このエントリには、HTTP 要求のチェック時にトリガされたセキュリティルールの ID と説明が含まれています。セキュリティルール ID とは、引用符に囲まれた 3
から始まる整数であり、プレフィックス id
付きで角括弧に囲まれています (例:[id "340003"]
)。[id "3
という文字列の一部を使用して、イベント内でセキュリティルール ID を探します。340003
など)、タグ(CVE-2011-4898 など)、または正規表現(XSS
など)に基づいてセキュリティルールを選択して、[OK]をクリックします。