Oracle Cloud Infrastructureドキュメント

カスタム保護ルール

WAFサービスを使用すると、開いているソース・ファイアウォール・モジュールのカスタム保護ルールを定義し、ModSecurityモジュールなどのWAF構成に適用できます。 このトピックでは、WAAS APIを使用して、WAFポリシーでカスタム保護ルールを書式設定、作成および実装する方法について説明します。 サービスにすでにある保護ルールのリストは、「サポートされている保護ルール」を参照してください。

ノート

カスタム保護ルールはWAAS APIを使用した場合にのみ作成できます。

カスタム保護ルールの構文

カスタム保護ルールはすべて、ModSecurity Rule Languageで表されます。 ModSecurity構文の詳細は、「ルールの作成: 基本構文」を参照してください。

さらに、各ルールには、ルールの公開時にWAFサービスによって更新される2つのプレースホルダー変数を含める必要があります。

id: {{id_1}} - このフィールドは、SecRuleを識別するWAFサービスによって生成される一意のルールIDで更新されます。 CreateCustomProtectionRuleコールのtemplateフィールドでは、複数のSecRuleを定義できます。 最初のSecRuleの値はid: {{id_1}}である必要があり、後続の各SecRuleidフィールドは、例に示すように1つずつ増加する必要があります。

ctl:ruleEngine={{mode}} - SecRuleの条件が満たされたときに実行するアクション(OFFDETECTまたはBLOCKのいずれか)。 このフィールドは、UpdateWafConfig操作の使用時に、CustomProtectionRuleSettingオブジェクトのaction フィールドの対応する値で更新されます。

カスタム保護ルール・フォーマットの例:

SecRule REQUEST_COOKIES "regex matching SQL injection - part 1/2" \
	"phase:2,                                                 \
	msg:'Detects chained SQL injection attempts 1/2.',        \
	id: {{id_1}},                                             \
	ctl:ruleEngine={{mode}},                                  \
	deny"
	SecRule REQUEST_COOKIES "regex matching SQL injection - part 2/2" \
	"phase:2,                                                 \
	msg:'Detects chained SQL injection attempts 2/2.',        \
	id: {{id_2}},                                             \
	ctl:ruleEngine={{mode}},                                  \
	deny"

アクション

カスタム保護ルールの基準が満たされた場合、WAFサービスはHTTPリクエストに対してアクションを実行できます。

  • DETECT - カスタム保護の条件を満たした場合に、リクエストをログに記録します。
  • BLOCK - カスタム保護ルールの基準が満たされたときに、リクエストをブロックします。
  • OFF - カスタム保護ルールは非アクティブで、アクションを実行しません。

カスタム保護ルールの作成

WAAS APIのCreateProtectionRuleコールを使用して、カスタム保護ルールを作成し、コンパートメントに追加できます。 「ModSecurity Rule Languageの使用方法」フォーマットの場合、templateフィールドにルールの基準を入力します。

例:

{
  "compartmentId": "ocid1.compartment.region1..aaaaaaaa5n4ocdo64z66dzfftcvo6ntalkpojfiiwgmxohi4tlakqosvdrmq",
  "description": "The description text for the rule being created",
  "displayName": "Custom Protection Rule Name",
  "template": "SecRule REQUEST_URI / \"phase:2, t:none, capture, msg:'Custom (XSS) Attack. Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}', id:{{id_1}}, ctl:ruleEngine={{mode}}, tag:'Custom', severity:'2'\""
}

WAF構成へのカスタム保護ルールの追加

WAAS APIのUpdateWafConfigコールを使用して、カスタム保護ルールをWAF構成に追加できます。

OCIDおよび必要なアクションを追加して、UpdateWafConfigスキーマのCustomProtectionRuleSettingオブジェクトに実行します。

例:

[
  {
    "action": "BLOCK",
    "id": "ocid1.waascustomprotectionrule.oc1..aaaaaaaalxd4jrws4rbbnddzlnotu3giuzo53kopbj747mbvarttr7vyy7ja"
  },
  {
    "action": "DETECT",
    "id": "ocid1.waascustomprotectionrule.oc1..aaaaaaaamx5r72ntmmhwgeaspzpdqcwsgprpuvwsa7xoshnyo3xhtpwcobeq"
  }
]

コンパートメントおよび対応するOCIDs内の使用可能なカスタム保護ルールのリストを表示するには、WAAS APIのListCustomProtectionRulesコールを使用します。