Cloudflare のセキュリティチームが作成したこのルールセットは、すべてのアプリケーションに対して、速く効果的な保護を提供します。新しい脆弱性をカバーし、誤検知を減らすために、頻繁に更新されます。
テクノロジースタックに対応するタグのルールを有効にすることを、Cloudflare は推奨します。たとえば WordPress を使っている場合は、wordpress タグのルールを有効にします。
Cloudflare の WAF changelog で、WAF のマネージドルールセットへの継続的な変更を監視できます。
-
Cloudflare ダッシュボードで、Security の Settings ページを開きます。
Settings を開く ↗ -
(任意)Web application exploits で絞り込みます。
-
Cloudflare managed ruleset をオンにします。
-
デプロイ設定を確認します。受信リクエストの一部にだけルールセットを適用する場合はスコープを編集します。カスタム設定(オーバーライド)も必要に応じて設定します。
-
Save を選択します。
この操作は、現在のゾーンにマネージドルールセットをデプロイし、Execute アクションの新しいルールを作成します。
Cloudflare Managed Ruleset は、デフォルト設定を上書きして、次のレベルで設定(またはオーバーライド)できます。
複数のレベルでオーバーライドを作ると、より具体的な設定(タグおよびルールレベル)が、より広い設定(ルールセットレベル)より優先されます。詳細は、Ruleset Engine のドキュメントの マネージドルールセットをオーバーライドする を参照してください。
Cloudflare ダッシュボードでは、次の Cloudflare Managed Ruleset の設定を変更(またはオーバーライド)できます。
-
Scope: スコープにカスタムのフィルター式を定義すると、Cloudflare Managed Ruleset は受信リクエストの一部にだけ適用されます。ダッシュボードでデプロイしたマネージドルールセットは、デフォルトですべての受信トラフィックに適用されます。
-
Ruleset action: ルールセットにアクションを定義すると、各ルールのデフォルトアクションを上書きします。利用できるアクションは、Block、Log、Non-Interactive Challenge、Managed Challenge、Interactive Challenge です。 ルールセットレベルのアクションオーバーライドを外すには、ルールセットアクションを Default にします。
-
Ruleset status: ルールセット内のすべてのルールを有効または無効にします。
-
ペイロードログ: 有効にすると、マネージドルールセットの特定のルールをトリガーしたリクエスト情報(ペイロード)を記録します。ペイロードを暗号化するには、公開鍵の設定が必要です。
Cloudflare Managed Ruleset をデプロイ したあと、ダッシュボードで次の手順で設定します。
-
Cloudflare ダッシュボードで Security rules ページを開きます。
Security rules を開く ↗ -
(任意)Managed rules で絞り込みます。
-
Cloudflare Managed Ruleset を検索します。Execute アクションのルールを探します。
-
ルール名(マネージドルールセット名を含む)を選択し、デプロイ設定ページを開きます。
-
(任意)受信リクエストの一部にだけ Cloudflare Managed Ruleset を実行するには、Edit scope を選択し、マネージドルールセットをデプロイする現在のルールのスコープを決める 式を設定 します。
-
ルールセット設定のセクションで、ドロップダウンリストを使い、Cloudflare Managed Ruleset 内のすべてのルールに対するフィールドを 1 つ以上設定します。
たとえば、ルールセット内のすべてのルールに対して実行するアクションを選びます。
-
Save を選択します。
選択したタグのうち少なくとも 1 つが付いたルールに対して、ダッシュボードで次の Cloudflare Managed Ruleset の設定を変更(またはオーバーライド)できます。
- Rule action: 選択したタグを持つすべてのルールのアクションを設定します。利用できるアクションは、Block、Log、Non-Interactive Challenge、Managed Challenge、Interactive Challenge です。
- Rule status: 選択したタグを持つすべてのルールのステータスを設定します。
Cloudflare Managed Ruleset をデプロイ したあと、ダッシュボードで特定タグのルールを次の手順で設定します。
-
Cloudflare ダッシュボードで Security rules ページを開きます。
Security rules を開く ↗ -
(任意)Managed rules で絞り込みます。
-
Cloudflare Managed Ruleset を検索します。Execute アクションのルールを探します。
-
ルール名(マネージドルールセット名を含む)を選び、Browse rules を選択します。
-
検索入力の下でタグを 1 つ以上選び、そのタグのルールに絞り込みます。次に、テーブル左上のチェックボックスを選び、現在のページに表示されているすべてのルールを選択します。
現在のページにすべてのルールが表示されていない場合は、Select all <NUMBER> rules を選び、選択したタグを持つすべてのページのルールに選択範囲を広げます。
-
テーブル右上のボタン(例: Set status)で、選択したルールの設定を 1 つ以上更新します。
-
Next を選びます。
-
選択したタグを持つ新しいルールにも、指定したフィールド値を適用するかを確認するダイアログが表示されます。
- 選択したタグを持つ新しいルールにも設定を適用する場合は、Include new rules を選びます。
- 選択したルールにだけ設定を適用する場合は、Only selected rules を選びます。
-
Save を選びます。
選択したルールに対して、ダッシュボードで次の Cloudflare Managed Ruleset の設定を変更(またはオーバーライド)できます。
- Rule action: 1 つのルール、または複数選択した場合は選択したルールのアクションを設定します。利用できるアクションは、Block、Log、Non-Interactive Challenge、Managed Challenge、Interactive Challenge です。 ルールの設定を変更したあと、Cloudflare Managed Ruleset で定義されたデフォルト設定に戻すこともできます。
- Rule status: 1 つのルール、または複数選択した場合は選択したルールのステータス(有効または無効)を設定します。
Cloudflare Managed Ruleset をデプロイ したあと、ダッシュボードで個々のルールセットルールを次の手順で設定します。
-
Cloudflare ダッシュボードで Security rules ページを開きます。
Security rules を開く ↗ -
(任意)Managed rules で絞り込みます。
-
Cloudflare Managed Ruleset を検索します。Execute アクションのルールを探します。
-
ルール名(マネージドルールセット名を含む)を選び、Browse rules を選択します。
-
利用できるフィルターでルールを検索します。
-
結果一覧で、表示されているドロップダウンリストとトグルを使い、各ルールの値を必要に応じて変更します。たとえば、ルール横の Status トグルでルールのステータスを変更します。
複数のルールに同じ値を設定するには、設定するすべてのルールのチェックボックスを選びます。現在のページにすべてのルールが表示されていない場合は、Select all <NUMBER> rules を選び、すべてのページのルールに選択範囲を広げます。次に、テーブル右上のボタン(例: Set status)で、選択したルールのフィールドを 1 つ以上更新します。
-
Next を選び、Save を選びます。
API で特定ゾーンに Cloudflare Managed Ruleset をデプロイするには、http_request_firewall_managed フェーズの エントリポイントルールセット に、execute アクションのルールを作成します。
次の例では、指定したゾーン($ZONE_ID)の http_request_firewall_managed フェーズに Cloudflare Managed Ruleset をデプロイします。マネージドルールセットを実行するルールを作成します。
-
Get a zone entry point ruleset オペレーションを呼び出し、
http_request_firewall_managedフェーズのエントリポイントルールセットの定義を取得します。この作業には ゾーン ID が必要です。Get a zone entry point rulesetbash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Zone-level phase entry point", "id": "<RULESET_ID>", "kind": "zone", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "zone", "phase": "http_request_firewall_managed", "rules": [ // ... ], "source": "firewall_managed", "version": "10" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットがすでに存在する場合(つまり、
200 OKステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、ゾーンルールセットのルールを作成する 操作を呼び出して、既存のルールセットに Cloudflare Managed Ruleset(ID はefb7b8c949ac4650a09736fc376e9aee) をデプロイするexecuteルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。Create a zone ruleset rulebash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset" }'{ "result": { "id": "<RULESET_ID>", "name": "Zone-level phase entry point", "description": "", "kind": "zone", "version": "11", "rules": [ // ... any existing rules { "id": "<RULE_ID>", "version": "1", "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee", "version": "latest" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset", "last_updated": "2024-03-18T18:08:14.003361Z", "ref": "<RULE_REF>", "enabled": true } ], "last_updated": "2024-03-18T18:08:14.003361Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットが存在しない場合(ステップ 1 で
404 Not Foundステータスコードを受け取った場合)、ゾーンルールセットを作成する 操作で作成します。rules配列に、Cloudflare Managed Ruleset(ID はefb7b8c949ac4650a09736fc376e9aee) を ゾーン内のすべての受信リクエスト 向けに実行するルールを 1 件含めます。Create a zone rulesetbash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "My ruleset", "description": "Entry point ruleset for WAF managed rulesets", "kind": "zone", "phase": "http_request_firewall_managed", "rules": [ { "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset" } ] }'
API で Cloudflare Managed Ruleset を設定するには、Rulesets API を使って オーバーライド を作成します。次の設定ができます。
ルールセットオーバーライドを作成し、ルールセット内のすべてのルールに対して実行するアクションを指定する。
ルールオーバーライドを作成し、個々のルールを無効にするか、アクションをカスタマイズする。
API でオーバーライドを作成する例は、マネージドルールセットをオーバーライドする を参照してください。
API でマネージドルールセットを扱う詳細は、Ruleset Engine のドキュメントにある マネージドルールセットを使う を参照してください。
次の例は、ゾーンに Cloudflare Managed Ruleset をデプロイし、特定ルールのアクションとステータスをオーバーライドします。
cloudflare_ruleset ↗ リソースを設定します。
# Configure a ruleset at the zone level for the "http_request_firewall_managed" phase
resource "cloudflare_ruleset" "zone_level_managed_waf" {
zone_id = var.cloudflare_zone_id
name = "Managed WAF entry point ruleset"
description = "Zone-level WAF Managed Rules config"
kind = "zone"
phase = "http_request_firewall_managed"
# Execute Cloudflare Managed Ruleset
rules = [{
ref = "execute_cloudflare_managed_ruleset"
description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
expression = "true"
action = "execute"
action_parameters = {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides = {
rules = [{
id = "5de7edfa648c4d6891dc3e7f84534ffa"
action = "log"
enabled = true
}]
}
}
}]
}# Configure a ruleset at the zone level for the "http_request_firewall_managed" phase
resource "cloudflare_ruleset" "zone_level_managed_waf" {
zone_id = var.cloudflare_zone_id
name = "Managed WAF entry point ruleset"
description = "Zone-level WAF Managed Rules config"
kind = "zone"
phase = "http_request_firewall_managed"
# Execute Cloudflare Managed Ruleset
rules {
ref = "execute_cloudflare_managed_ruleset"
description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
expression = "true"
action = "execute"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
rules {
id = "5de7edfa648c4d6891dc3e7f84534ffa"
action = "log"
enabled = true
}
}
}
}
}詳細は、Terraform で WAF Managed Rules を設定する を参照してください。