Tuning Security Settings
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

Webアプリケーションファイアウォール

ライフレイクラウド 5.xx

Liferay Cloud には、 ModSecurityと呼ばれる Web アプリケーション ファイアウォールが含まれています。 Webサーバーに送信されたリクエストを、あらかじめ定義されたカスタムルールと照らし合わせて検査します。 このステップでは、XSS、SQLインジェクションなどの典型的なWebアプリケーションのリアルタイムL7攻撃や、機密情報の損失につながる可能性のあるその他の形式の乗っ取りを防止します。

重要

OWASP ModSecurity Core Rule Set (CRS) などのサードパーティのルール セットをインポートする場合は、アプリケーションに合わせてそれらのルールを 調整する 必要があります。 調整せずにブロッキングモードで完全なルールセットを有効にすると、正当な Liferay DXP リクエスト(たとえば、 /combo リソースローダー、ログイン、またはコントロールパネルページ)がブロックされる可能性があります。

Liferay Cloud には、 プライベートネットワーク、パブリック ロードバランサー (レイヤー 7)、 CDNなどの追加のネットワークセキュリティ機能が含まれています。

Web アプリケーション ファイアウォールは、一般的な攻撃から保護します。

カスタム ファイアウォール ルールは、 共有クラスター サブスクリプションでは使用できません。

ModSecurityの有効化

ModSecurityはデフォルトで無効になっています。 これを有効にするには、プロジェクト リポジトリの webserver/LCP.json ファイルに LCP_WEBSERVER_MODSECURITY 環境変数 を追加します。

攻撃検知ルールは、ModSecurityが有効な場合のみ処理されます。 独自のルールを追加 し、特定の構成を調整する必要があります。

警告

正当なトラフィックの中断を避けるには、まず LCP_WEBSERVER_MODSECURITYDetectionOnly に設定し、 変更を展開 します。 テスト、ログの確認、ModSecurity 構成の調整を行った後、機能に影響がないと判断された場合は、値を On に変更して再デプロイできます。

これらの値は、 LCP_WEBSERVER_MODSECURITYで許可されています。

  • オン: ModSecurity を有効にします。 攻撃検知ルールが処理されます。

  • オフ: ModSecurity を無効にします。 ルールが処理されません。

  • DetectionOnly: ModSecurity を有効にします。 ルールは処理されますが、破壊的なアクション(ブロック、拒否、ドロップ、許可、プロキシ、リダイレクト)は実行されません。

ヒント

LCP_WEBSERVER_MODSECURITY 環境変数は、ModSecurity 独自の SecRuleEngine ディレクティブと同等です。

ModSecurityの設定を変更する

ModSecurityの設定はデフォルトを推奨します。 デフォルト設定を上書きするには、プロジェクト リポジトリの webserver/configs/[ENV]/modsec/ ディレクトリに modsecurity.conf ファイルを作成します。 Liferay Cloudのデフォルトmodsecurity.confを完全に上書きするため、必要な設定をすべて行う必要があります。

ヒント

長くてパラメータの多い URL や大きなフォームの送信は、ModSecurity で PCRE をトリガーしたり、本文のサイズ制限を要求したりする可能性があります。 これらの制限を増やすには、 SecRequestBodyLimitSecRequestBodyNoFilesLimit の値を modsecurity.confで増やし、 SecRuleEngine ディレクティブを SecRuleEngine ${LCP_WEBSERVER_MODSECURITY}に更新します。

デフォルトのサイズ制限は、特定の種類の攻撃を防ぐことを目的とした、ファイアウォールの業界標準の制限であることに注意してください。 これらの制限を増やすと、攻撃に対する脆弱性も増加するため、この値は慎重に調整してください。

この推奨設定の例 をコピーして、独自の modsecurity.conf ファイルの開始点として使用します。 このファイルを使用する場合は、 SecRuleEngine DetectionOnly の行を次の行に置き換えてください。

SecRuleEngine ${LCP_WEBSERVER_MODSECURITY}

許可される設定の詳細については、 ModSecurity リファレンス マニュアル を参照してください。

攻撃検出ルールの追加と調整

攻撃検知ルールはデフォルトでは提供されません。 お客様指定のニーズに従ってルールを提供する必要があります。

重要

アプリケーションに大きな混乱が生じないようにするには、ルール セット (除外や異常しきい値を含む) を調整する必要があります。 一部のルール設定では、Liferay DXP をルールセットで再コンパイルする必要がある場合があります。 ルール セットの強化については、Liferay サポート チームにお問い合わせください。

OWASP ModSecurity Core Rule Set (CRS) などの汎用ルール セットをインポートする場合は、まずそれらをアプリケーションに合わせて調整する必要があります。

このワークフローにより、ルール セットを追加するときにサービスの中断が回避されます。

  1. 検出のみモードで ModSecurity を有効にします

  2. 検出のみモードを有効にして、Liferay DXP インスタンスのキーパスをテストします。 サインインして、サイトのページ、カスタム アプリケーションやフォーム、よく使用する構成ページ (コントロール パネルなど) に移動します。

    テストするパスごとに、一致して異常スコアを発生させたルールがないか、ModSecurity 監査ログ (/var/log/modsec_audit.log) を確認します。

  3. セキュリティ チームと協力して、ログに一致した各ルールを分析します。

    各インスタンスを注意深く調べて、実際の攻撃を示しているのか、または正当な Liferay リクエストに対する誤検知を示しているのかを判断します。

  4. ModSecurity 構成 内のルールを調整して、誤検知を排除しながら実際の脅威をブロックします。

  5. ルール セットの調整が完了したら、 ModSecurity をブロッキング モードで有効にします

ルール セットの調整に関するガイダンスについては、 公式の Core Rule Set ドキュメント を参照してください。 一般的なチューニングオプションには以下が含まれます

  • ルール 900110 を使用して異常しきい値を調整します (たとえば、受信または送信の異常しきい値を増やす)。

  • 特定の URL またはパラメータを対象にしたルール除外を追加することで、展開内の安全性を保証できます。

たとえば、次の構成では、 /combo エンドポイントの特定のルールが無効になります。

SecRule REQUEST_URI "@beginsWith /combo" \
    "id:1000001,phase:1,pass,nolog,ctl:ruleRemoveById=920100"

構成を変更するときは常に、セキュリティ チームと協力してリスクを評価し、独自のセキュリティ ポリシーに準拠してください。 さらなる除外や変更が必要になる場合に備えて、アプリケーションの進化に合わせてログの監視と監査を継続してください。

ModSecurity監査ログの使用

有効にすると、ModSecurityは自動的に監査ログを生成し、すべてのトランザクションの詳細情報を記録します。 ログに記録された情報を見るには、Webサーバーの/var/logディレクトリにある modsec_audit.logファイルを開いてください。

独自のmodsecurity.confファイルを提供してModSecurityを設定する場合modsec_audit.logの代わりに、Webサーバーのコンソール(ダウンロード可能)に情報を記録することができます。 modsecurity.confファイル内のこの行を変更してください。

SecAuditLog /var/log/modsec_audit.log

/var/log/modsec_audit.log/dev/stdoutに置き換えると、各トランザクションの監査ログがコンソールに表示されます。 監査ログは、変更をデプロイした時点で表示されます。

必要であれば、modsecurity.confファイルに1行追加して、監査ログの形式をJSONに変更します。

SecAuditLogFormat JSON