eCDN WAFv2

Web Application Firewall (WAF) は、悪意をもつ行為者を軽減し、ストアフロントを保護する上で重要なコンポーネントです。詳細については、eCDN Web アプリケーションファイアウォールを参照してください。

WAFv2 では、特定の管理ルールを上書きし、特定のトラフィックニーズに合わせて各ルールセットをカスタマイズできます。WAFv2 ルールセットは、ゼロデイ脆弱性、トップ 10 の攻撃手法、盗まれた/公開された認証情報の使用、機密データの抽出などの脅威から保護するように特別に設計されており、新しい脆弱性が発見されると定期的に更新され、パフォーマンスの向上と誤検知の削減が行われます。

WAFv2 ルールセットには、次のものが含まれます。

  • eCDN 管理ルールセット
  • OWASP 管理ルールセット
  • 公開認証情報チェックルールセット

Business Manager は、各インスタンス (Development (開発)、Staging (ステージング)、Production (本番)) に固有の WAFv2 設定の eCDN 構成をサポートしているため、インスタンスを個別に管理できます。WAFv2 に移行、設定、または更新する場合、これらの変更は他のインスタンスにレプリケートされません。このアプローチにより、開発およびステージングから本番環境への移行時に WAFv2 セキュリティ設定のテストとデプロイが簡素化されます。

eCDN 管理ルールセット 

ルールセット ID: efb7b8c949ac4650a09736fc376e9aee

eCDN セキュリティチームによって作成されたこのルールセットは、すべてのアプリケーションに対して迅速かつ効果的な保護を提供します。デフォルトでは、ルールセット内の一部のルールは無効になっているか、デフォルトで log に設定されており、適切な保護の提供と誤検知の数の削減のバランスが取れています。

このルールセットでは、次の設定を構成できます。

  • アクション:
    • defaultblocklogmanaged_challengejs_challengelegacy_captcha
  • 有効化:
    • truefalse

OWASP 管理ルールセット 

ルールセット ID: 4814384a9e5d4991b9815dcfc25d2f1f

OWASP 管理ルールセットは、OWASP ModSecurity コアルールセット (CRS) の実装です。このルールセットは、公式コードリポジトリから入手可能な最新バージョンに基づいて、OWASP の更新について定期的に監視されます。OWASP 管理ルールセットは、単一のエンティティとして機能し、脅威スコアを計算し、そのスコアに基づいてアクションを実行するように設計されています。OWASP 管理ルールセット内の個々のルールには、独自のデフォルトアクションはありません。ルールセットのアクションは、計算された脅威スコアがスコアのしきい値を超えた場合に実行されるものです。

パラノイアレベル 

パラノイアレベル (PL) は、OWASP ルールをその攻撃性に応じて分類します。利用可能なパラノイアレベルは次のとおりです。

  • PL1
  • PL2
  • PL3
  • PL4 (最も攻撃的)

より高いパラノイアレベルに関連するルールは、より攻撃的であると見なされ、保護が強化されます。ただし、誤検知が原因で正当なトラフィックがブロックされる可能性があります。OWASP 管理ルールセットのパラノイアレベルを構成すると、選択したレベルまでのすべてのパラノイアレベルに属するすべてのルールが有効になります。たとえば、ルールセットのパラノイアレベルを PL3 に構成すると、パラノイアレベル PL1、PL2、および PL3 に属するルールが有効になります。

脅威スコア 

現在のリクエストに一致する各 OWASP ルールには、スコアが関連付けられています。リクエスト脅威スコアは、リクエストに一致したすべての OWASP ルールの個々のスコアの合計です。

異常スコアのしきい値 

異常スコアのしきい値 (または異常スコア) は、構成された OWASP 管理ルールセットのアクションを WAF が適用するための最小累積スコアを定義します。このスコアは、一致する OWASP ルールから取得されます。

利用可能なスコアのしきい値:

  • 低: 60 以上
  • 中: 40 以上 (推奨デフォルト値)
  • 高: 25 以上

このルールセットでは、次の設定を構成できます。

  • アクション
    • blocklogmanaged_challengejs_challengelegacy_captcha
  • パラノイアレベル
    • 1234
  • 異常スコア
    • lowmediumhigh
  • 有効化
    • truefalse

公開認証情報チェックルールセット 

ルールセット ID: c2e184081120413c86c3ab7e14069605

公開認証情報チェックルールセットには、公開されている盗まれた認証情報のデータベースに対してリクエスト内のユーザー名とパスワードのペアを検索する一連のルールが含まれています。リクエストが特定のルールの式と一致し、公開認証情報チェックが true の場合、ルールで構成されたアクションが実行されます。 詳細については、公開認証情報チェックのしくみを参照してください。

最近、多くの Web アプリケーションが攻撃を受けており、公開されている認証情報のデータベースからユーザー名とパスワードのペアを使用してログインが大量に試行されています。公開認証情報チェックルールセットには、次の CMS アプリケーション用の事前定義ルールが含まれています。

  • WordPress
  • Joomla
  • Drupal
  • Ghost
  • Plone
  • Magento

この管理ルールセットには、次の一般的なパターンの一般的なルールも含まれています。

  • username 引数と password 引数を含む POST リクエストを使用して送信されたフォームを確認します。
  • JSON として送信された認証情報を、email キーと password キーで確認します。
  • JSON として送信された認証情報を、username キーと password キーで確認します。

デフォルトでは、公開認証情報チェックルールセットは、ルールセット内の管理ルールによってフラグが立てられたリクエストに HTTP ヘッダーを追加することで動作します( rewrite アクションがあると表示されます)。追加された HTTP ヘッダーの名前は Exposed-Credential-Check で、その値は 1 です。その後、アプリケーションはパスワードのリセットを強制したり、2 要素認証プロセスを開始したり、その他のアクションを実行したりできます。リクエスト公開された認証情報を含むリクエストにチャレンジまたはブロックする場合は、ルールセットのアクションを更新できます。ただし、別のルールセットアクションに変更する前に、公開認証情報チェックルールセットをログモードでテストすることを強くお勧めします。

このルールセットでは、次の設定を構成できます。

  • アクション:
    • defaultblocklogmanaged_challengejs_challengelegacy_captcha
  • 有効化:
    • truefalse

管理ルールセットの構成 

管理ルールセットの構成は、Business Manager と CDN-API の両方を使用して行うことができます。

ルールセットのアクションを更新する場合、default 以外のアクションを選択すると、ルールセット内の すべて の管理ルールのアクションが上書きされます。たとえば、デフォルトでは、eCDN 管理ルールセットの一部のルールは block に設定されており、他のルールは log に設定されています。eCDN 管理ルールセットのアクションを block に更新すると、ルールセット内のすべてのルールが block に設定されます。特定の管理ルールのアクションを変更する場合は、個別のルールの上書きを設定できます。

同様に、各管理ルールセットの一部のルールはデフォルトで無効になっています。ルールセット全体を無効にすると、ルールセット内のすべての管理ルールが無効になります。ただし、ルールセットを有効にしても、ルールセット内のすべてのルールが有効になるわけではありません。ルールセットを有効にすると、各ルールのデフォルトステータスが維持されます。ルールのデフォルトステータスを更新する場合は、個々のルールの上書きを設定できます。

Business Manager を使用した管理ルールセットの構成 

  1. 埋め込み CDN 設定 に移動します。更新するゾーンを見つけて、WAF タブに移動します。ゾーンが WAFv2 を使用していることを確認します。
  2. 必要に応じて、チェックボックスとドロップダウンメニューを使用して WAFv2 ルールセット設定を更新します。

CDN-API を使用した管理ルールセットの構成 

  1. getWafManagedRulesets を使用し、ゾーン ID を指定して WAFv2 管理ルールセットとその現在の構成を取得します。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-managed/rulesets" \
2--header "Authorization: Bearer $TOKEN" \
3--header 'Content-Type: application/json'

成功レスポンスの例 (200 HttpStatus コード):

1{
2    "data": [
3        {
4            "name": "Managed Ruleset",
5            "rulesetId": "efb7b8c949ac4650a09736fc376e9aee",
6            "action": "default",
7            "enabled": true
8        },
9        {
10            "name": "OWASP Core Ruleset",
11            "rulesetId": "4814384a9e5d4991b9815dcfc25d2f1f",
12            "action": "log",
13            "anomalyScoreThreshold": 25,
14            "anomalyScore": "high",
15            "paranoiaLevel": 1,
16            "enabled": true
17        },
18        {
19            "name": "Leaked Credentials Check Ruleset",
20            "rulesetId": "c2e184081120413c86c3ab7e14069605",
21            "action": "block",
22            "enabled": true
23        }
24    ]
25}
  1. updateWafManagedRuleset を使用し、ゾーンとルールセット ID を指定して目的のルールセットを構成します。リクエストボディに少なくとも 1 つのフィールドを指定する必要があります。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-managed/rulesets/$RULESETID" \
2--request 'PATCH' \
3--header "Authorization: Bearer $TOKEN" \
4--header 'Content-Type: application/json' \
5--data '{
6   "action": "managed_challenge",
7   "anomalyScore": "low"
8   "paranoiaLevel": 2
9   "enabled": true
10}'

成功レスポンスの例 (200 HttpStatus コード):

1{
2    "data": {
3        "name": "OWASP Core Ruleset",
4        "rulesetId": "4814384a9e5d4991b9815dcfc25d2f1f",
5        "action": "managed_challenge",
6        "anomalyScore": "low",
7        "anomalyScoreThreshold": 60,
8        "paranoiaLevel": 2,
9        "enabled": true
10    }
11}

管理ルールの上書きの構成 

個々の管理ルールの上書きの設定は、CDN-API を使用して行う必要があります。

特定の管理ルールが原因で誤検知が発生した場合は、上書きを構成してルールのアクションまたはデフォルトの有効ステータスを調整できます。個々の管理ルールの上書きを使用すると、使用可能なルールセットレベルの設定を超えてゾーンの WAFv2 構成を微調整できます。

  1. getWafManagedRulesInRuleset を使用し、ゾーンとルールセット ID を指定して特定の管理ルールセット内のすべてのルールを表示します。レスポンスには、ルールセットの現在のアクションと有効なステータスを考慮して、各ルールの現在の構成が表示されます。また、レスポンスには、ルールに関連付けられたタグ (wordpress など) も表示され、特定のルールグループを検索するときに便利です。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-managed/rulesets/$RULESETID/rules" \
2--header "Authorization: Bearer $TOKEN" \
3--header 'Content-Type: application/json'

成功レスポンスの例 (200 HttpStatus コード):

1{
2    "data": [
3        {
4            "ruleId": "5de7edfa648c4d6891dc3e7f84534ffa",
5            "action": "block",
6            "categories": [
7                "cve-2014-5265",
8                "cve-2014-5266",
9                "cve-2014-5267",
10                "dos",
11                "drupal",
12                "wordpress"
13            ],
14            "description": "Drupal, Wordpress - DoS - XMLRPC - CVE:CVE-2014-5265, CVE:CVE-2014-5266, CVE:CVE-2014-5267",
15            "lastUpdated": "2024-07-17T21:05:18.777823Z",
16            "enabled": false
17        },
18        {
19            "ruleId": "e3a567afc347477d9702d9047e97d760",
20            "action": "block",
21            "categories": [
22                "cve-2020-12720",
23                "sqli",
24                "vbulletin",
25                "beta"
26            ],
27            "description": "vBulletin - SQLi - CVE:CVE-2020-12720 - beta",
28            "lastUpdated": "2024-07-17T21:05:18.777823Z",
29            "enabled": false
30        },
31        ...
32    ]
33}
  1. updateWafManagedRuleInRuleset を使用し、ゾーン、ルールセット、およびルール ID を指定してルールの上書きを構成します。リクエストボディに少なくとも 1 つのフィールドを指定する必要があります。

管理ルールを更新する際に、以下の設定を構成できます。

  • アクション:
    • defaultblocklogmanaged_challengejs_challengelegacy_captcha
    • default アクションは、既存のアクションの上書きをリセットし、ルールをデフォルトのアクションに戻します。
    • アクションフィールドは、eCDN 管理ルールセットおよび公開認証情報チェックルールセットにのみ適用できます。OWASP 管理ルールセットは、合計脅威スコアを計算してからルールセット全体のアクションを適用することによって動作するため、アクションの上書きの設定は適用されません。
  • 有効化:
    • truefalse
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-managed/rulesets/$RULESETID/rules/$RULEID" \
2--request 'PATCH' \
3--header "Authorization: Bearer $TOKEN" \
4--header 'Content-Type: application/json' \
5--data '{
6   "action": "log",
7   "enabled": false
8}'

成功レスポンスの例 (200 HttpStatus コード):

1{
2    "data": {
3        "ruleId": "5de7edfa648c4d6891dc3e7f84534ffa",
4        "action": "log",
5        "categories": [
6            "cve-2014-5265",
7            "cve-2014-5266",
8            "cve-2014-5267",
9            "dos",
10            "drupal",
11            "wordpress"
12        ],
13        "description": "Drupal, Wordpress - DoS - XMLRPC - CVE:CVE-2014-5265, CVE:CVE-2014-5266, CVE:CVE-2014-5267",
14        "lastUpdated": "2024-07-17T21:05:18.777823Z",
15        "enabled": false
16    }
17}

WAFv2 移行のベストプラクティス 

WAFv2 ルールには WAF ルールへの 1 対 1 のマッピングがなく、既存の WAFv1 ルールのカスタマイズは必要ないか、適用できない場合があります。

WAF の初めての使用の説明に従って、log モードでセキュリティ設定を再評価します。次のいずれかの方法を使用して、WAF ログを確認します。

OWASP 管理ルールセットでは、以前の OWASP WAFv1 機密性設定に基づいて、以下の WAFv2 設定をお勧めします。

  1. OWASP WAFv1 機密性 (高) → パラノイアレベル: PL2、異常スコア: 中 (40 以上)
  2. OWASP WAFv1 機密性 (中) → パラノイア レベル: PL1、異常スコア: 高 (25 以上)
  3. OWASP WAFv1 機密性 (低) → パラノイア レベル: PL1、異常スコア: 中 (40 以上)

WAFv2 のデフォルトの機密性設定 → パラノイア レベル: PL2、異常スコア: 中 (40 以上)

Note

誤検知 

  • 影響を直ちに軽減するには、ルールセットを log に設定します。
  • WAFv2 ファイアウォールイベントを可視化するには、logTypefirewall_events に設定して eCDN Logpush を設定します。ゾーン内のファイアウォールイベントのログを表示し、誤検知の原因となっているルールセットとルールに関する分析情報を得ることができます。問題のある管理ルールを特定したら、updateWafManagedRuleInRuleset CDN-API エンドポイントを使用して、ルールのアクションを上書きするか、ルールを完全に無効にします。
  • OWASP 管理ルールセットから誤検知が発生した場合は、ルールセットのパラノイアレベルとスコアしきい値を調整できます。
  • skip_wafv2 アクションを含むカスタムルールを作成して、特定のリクエストで WAFv2 を完全にスキップできます。ルール式に一致するトラフィックは、WAFv2 によって評価されません。