カスタム保護ルール

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

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

Web Application Firewallサービスのカスタム保護ルールの構文に関する情報を提供します。

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

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

id:{{id_1}} - This field is updated with a unique rule ID generated by the WAF service which identifies a SecRule. More than one SecRule can be defined in the template field of a CreateCustomProtectionRule call. The value of the first SecRule must be id:{{id_1}} and the id field of each subsequent SecRule should increase by one, as shown in the example.

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 - カスタム保護ルールは非アクティブであり、何も実行しません。

コンソールの使用

カスタム保護ルールを作成するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. 「カスタム保護ルール」をクリックします。
  3. 「カスタム保護ルールの作成」をクリックします。
  4. 「カスタム保護ルールの作成」ダイアログ・ボックスで、次のように入力します:
    • 名前: 保護ルールの一意の名前。
    • 説明:オプションです。カスタム保護ルールの説明。
    • テンプレート: ModSecurityルール言語で保護ルール基準を入力します。各ルールには、id:{{id_1}}およびctl:ruleEngine={{mode}}の2つのプレースホルダ変数を含める必要があります。ModSecurity構文の詳細は、ルールの作成: 基本構文を参照してください。
    • 拡張オプションの表示: このリンクをクリックすると、タグ付けのオプションが表示されます。タグ付けの概要を参照してください。
  5. 次のいずれかを選択します:
カスタム保護ルールを編集するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. 「カスタム保護ルール」をクリックします。
  3. 編集するカスタム保護ルールの名前をクリックします。
  4. 「編集」をクリックします。
  5. 必要な変更を行い「変更の保存」をクリックします。
カスタム保護ルールのタグを管理するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. 「カスタム保護ルール」をクリックします。
  3. タグを管理する保護ルールの名前をクリックします。
  4. 既存のタグを表示または編集するには、「タグ」タブをクリックします。または、「タグの追加」をクリックして、新規タグを追加します。

詳細は、リソース・タグを参照してください。

カスタム保護ルールを別のコンパートメントに移動するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. 「カスタム保護ルール」をクリックします。
  3. リストで保護ルールを検索し、「アクション」メニュー(アクション・メニュー)をクリックして、「リソースの移動」をクリックします。
  4. リストから宛先コンパートメントを選択します。

  5. 「リソースの移動」をクリックします。
カスタム保護ルールを削除するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. 「カスタム保護ルール」をクリックします。
  3. 削除する保護ルールのチェック・ボックスを選択します。

  4. 「削除」をクリックします。
  5. 確認ダイアログ・ボックスで「削除」をクリックします。
WAFポリシーにカスタム保護ルールを追加するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. ルール設定を構成するWAFポリシーの名前をクリックします。WAFポリシーの概要が表示されます。
  3. 「保護ルール」をクリックします。
  4. 「カスタム・ルール」タブをクリックします。
  5. 「アクション」ドロップダウン・メニューから「追加」をクリックします。
  6. 「カスタム・ルールの追加」ダイアログ・ボックスで、ドロップダウン・メニューからカスタム保護ルールを選択します。カスタム保護ルールが別のコンパートメントに存在する場合は、ルールが存在するコンパートメントを変更できます。
  7. ルールに適用するアクションを次から1つ選択します:
    • 検出: 一致したリクエストによってアラートが生成され、リクエストがプロキシされます。
    • ブロック: 一致したリクエストはブロックされます。
  8. 追加」をクリックします。
WAFポリシーのカスタム保護ルールに新しいアクションを適用するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. カスタム保護ルールを編集するWAFポリシーの名前をクリックします。
  3. 「保護ルール」をクリックし、「カスタム・ルール」タブをクリックします。
  4. アクションを変更するカスタム・ルールのチェック・ボックスを選択します。
  5. 「アクション」ドロップダウン・メニューからアクションを選択します。
WAFポリシーからカスタム保護ルールを削除するには
  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
  2. カスタム保護ルールを削除するWAFポリシーの名前をクリックします。WAFポリシーの概要が表示されます。
  3. 「保護ルール」をクリックします。
  4. 「カスタム・ルール」タブをクリックします。
  5. 削除するカスタム・ルールのチェック・ボックスを選択します。

  6. 「アクション」ドロップダウン・メニューから「削除」を選択します。

APIの使用

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

例:

{
  "compartmentId": "ocid1.compartment.region1..<unique_ID>",
  "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"
  }
]

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