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などの追加のネットワークセキュリティ機能が含まれています。

カスタム ファイアウォール ルールは、 共有クラスター サブスクリプションでは使用できません。
ModSecurityの有効化
ModSecurityはデフォルトで無効になっています。 これを有効にするには、プロジェクト リポジトリの webserver/LCP.json ファイルに LCP_WEBSERVER_MODSECURITY 環境変数 を追加します。
攻撃検知ルールは、ModSecurityが有効な場合のみ処理されます。 独自のルールを追加 し、特定の構成を調整する必要があります。
正当なトラフィックの中断を避けるには、まず LCP_WEBSERVER_MODSECURITY を DetectionOnly に設定し、 変更を展開 します。 テスト、ログの確認、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 をトリガーしたり、本文のサイズ制限を要求したりする可能性があります。 これらの制限を増やすには、 SecRequestBodyLimit と SecRequestBodyNoFilesLimit の値を 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) などの汎用ルール セットをインポートする場合は、まずそれらをアプリケーションに合わせて調整する必要があります。
このワークフローにより、ルール セットを追加するときにサービスの中断が回避されます。
-
検出のみモードを有効にして、Liferay DXP インスタンスのキーパスをテストします。 サインインして、サイトのページ、カスタム アプリケーションやフォーム、よく使用する構成ページ (コントロール パネルなど) に移動します。
テストするパスごとに、一致して異常スコアを発生させたルールがないか、ModSecurity 監査ログ (
/var/log/modsec_audit.log) を確認します。 -
セキュリティ チームと協力して、ログに一致した各ルールを分析します。
各インスタンスを注意深く調べて、実際の攻撃を示しているのか、または正当な Liferay リクエストに対する誤検知を示しているのかを判断します。
-
ModSecurity 構成 内のルールを調整して、誤検知を排除しながら実際の脅威をブロックします。
-
ルール セットの調整が完了したら、 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