カスタム保護ルール
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
の基準が満たされたときに実行されるアクション(OFF
、DETECT
または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 - カスタム保護ルールは非アクティブであり、何も実行しません。
コンソールの使用
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- 「カスタム保護ルール」をクリックします。
- 「カスタム保護ルールの作成」をクリックします。
- 「カスタム保護ルールの作成」ダイアログ・ボックスで、次のように入力します:
- 名前: 保護ルールの一意の名前。
- 説明:オプションです。カスタム保護ルールの説明。
- テンプレート: ModSecurityルール言語で保護ルール基準を入力します。各ルールには、id:{{id_1}}およびctl:ruleEngine={{mode}}の2つのプレースホルダ変数を含める必要があります。ModSecurity構文の詳細は、ルールの作成: 基本構文を参照してください。
- 拡張オプションの表示: このリンクをクリックすると、タグ付けのオプションが表示されます。タグ付けの概要を参照してください。
-
次のいずれかを選択します:
- ルールを作成するには、「作成」をクリックします。
- 後でリソース・マネージャを使用してルールを作成するには、「リソース作成ページからのスタックの作成」を参照してください。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- 「カスタム保護ルール」をクリックします。
- 編集するカスタム保護ルールの名前をクリックします。
- 「編集」をクリックします。
- 必要な変更を行い「変更の保存」をクリックします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- 「カスタム保護ルール」をクリックします。
- リストで保護ルールを検索し、 をクリックして、「リソースの移動」をクリックします。
-
リストから宛先コンパートメントを選択します。
- 「リソースの移動」をクリックします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- 「カスタム保護ルール」をクリックします。
-
削除する保護ルールのチェック・ボックスを選択します。
- 「削除」をクリックします。
- 確認ダイアログ・ボックスで「削除」をクリックします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- ルール設定を構成するWAFポリシーの名前をクリックします。WAFポリシーの概要が表示されます。
- 「保護ルール」をクリックします。
- 「カスタム・ルール」タブをクリックします。
- 「アクション」ドロップダウン・メニューから「追加」をクリックします。
- 「カスタム・ルールの追加」ダイアログ・ボックスで、ドロップダウン・メニューからカスタム保護ルールを選択します。カスタム保護ルールが別のコンパートメントに存在する場合は、ルールが存在するコンパートメントを変更できます。
- ルールに適用するアクションを次から1つ選択します:
- 検出: 一致したリクエストによってアラートが生成され、リクエストがプロキシされます。
- ブロック: 一致したリクエストはブロックされます。
- 「追加」をクリックします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- カスタム保護ルールを編集するWAFポリシーの名前をクリックします。
- 「保護ルール」をクリックし、「カスタム・ルール」タブをクリックします。
- アクションを変更するカスタム・ルールのチェック・ボックスを選択します。
- 「アクション」ドロップダウン・メニューからアクションを選択します。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「Web Application Firewall」で、「ポリシー」を選択します。
- カスタム保護ルールを削除するWAFポリシーの名前をクリックします。WAFポリシーの概要が表示されます。
- 「保護ルール」をクリックします。
- 「カスタム・ルール」タブをクリックします。
-
削除するカスタム・ルールのチェック・ボックスを選択します。
- 「アクション」ドロップダウン・メニューから「削除」を選択します。
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コールを使用します。