コンテンツにスキップ

DDoS管理ルールセット

このページでは、Terraformを使用してゾーンまたはアカウント内のDDoS管理ルールセットを構成する例を提供します。以下の構成をカバーしています。

DDoS管理ルールセットは常に有効です。Cloudflareのサービスに応じて、その動作を調整できる場合があります。

DDoS管理ルールセットに関する詳細は、Cloudflare DDoS保護ドキュメントの管理ルールセットを参照してください。ルールセットAPIを使用してルールセットを展開および構成する方法については、ルールセットエンジンドキュメントの管理ルールセットを操作するを参照してください。

開始する前に

必要なアカウント、ゾーン、および管理ルールセットIDを取得する

The Terraform configurations provided in this page need the zone ID (or account ID) of the zone/account where you will deploy the managed rulesets.

  • To retrieve the list of accounts you have access to, including their IDs, use the List accounts operation.
  • To retrieve the list of zones you have access to, including their IDs, use the List zones operation.

The deployment of managed rulesets via Terraform requires that you use the ruleset IDs. To find the IDs of managed rulesets, use the List account rulesets operation. The response will include the description and IDs of existing managed rulesets.

(オプション)既存のルールセットを削除して最初から始める

Terraform assumes that it has complete control over account and zone rulesets. If you already have rulesets configured in your account or zone, do one of the following:

  • Import existing rulesets to Terraform using the cf-terraforming tool. Recent versions of the tool can generate resource definitions for existing rulesets and import their configuration to Terraform state.
  • Start from scratch by deleting existing rulesets (account and zone rulesets with "kind": "root" and "kind": "zone", respectively) and then defining your rulesets configuration in Terraform.

例: HTTP DDoS攻撃保護の構成

この例では、Terraformを使用してゾーンのHTTP DDoS攻撃保護管理ルールセットを構成し、ID fdfdac75430c4c47a959592f0aa5e68aのルールの感度レベルをlowに変更します。

resource "cloudflare_ruleset" "zone_level_http_ddos_config" {
zone_id = "<ZONE_ID>"
name = "HTTP DDoS攻撃保護エントリポイントルールセット"
description = ""
kind = "zone"
phase = "ddos_l7"
rules {
action = "execute"
action_parameters {
# Cloudflare L7 DDoS攻撃保護ルールセット
id = "4d21379b4f9f4bb088e0729962c8b3cf"
overrides {
rules {
# ルール: 異常なHTTPヘッダーまたはURIパスを持つHTTPリクエスト(シグネチャ#11)。
id = "fdfdac75430c4c47a959592f0aa5e68a"
sensitivity_level = "low"
}
}
}
expression = "true"
description = "HTTP DDoS攻撃保護管理ルールセットをオーバーライド"
enabled = true
}
}

HTTP DDoS攻撃保護に関する詳細は、HTTP DDoS攻撃保護管理ルールセットを参照してください。

例: ネットワーク層DDoS攻撃保護の構成

この例では、Terraformを使用してアカウントのネットワーク層DDoS攻撃保護管理ルールセットを構成し、ID 599dab0942ff4898ac1b7797e954e98bのルールの感度レベルをlowに変更します。

resource "cloudflare_ruleset" "account_level_network_ddos_config" {
account_id = "<ACCOUNT_ID>"
name = "ネットワーク層DDoS攻撃保護エントリポイントルールセット"
description = ""
kind = "root"
phase = "ddos_l4"
rules {
action = "execute"
action_parameters {
# Cloudflare L3/4 DDoS攻撃保護ルールセット
id = "3b64149bfa6e4220bbbc2bd6db589552"
overrides {
rules {
# ルール: 一般的な高ボリュームUDPトラフィックフロー。
id = "599dab0942ff4898ac1b7797e954e98b"
sensitivity_level = "low"
}
}
}
expression = "ip.dst in { 192.0.2.0/24 }"
description = "HTTP DDoS攻撃保護管理ルールセットをオーバーライド"
enabled = true
}
}

ネットワーク層DDoS攻撃保護に関する詳細は、ネットワーク層DDoS攻撃保護管理ルールセットを参照してください。


ユースケース: 大規模なHTTP DDoS攻撃を緩和し、フラグ付きトラフィックを監視する

以下の例では、顧客は誤検知を懸念していますが、大規模なHTTP DDoS攻撃からの保護を求めています。彼らのHTTP DDoS保護構成に含まれる2つのルールは、それぞれ2つのオーバーライドを持ち、以下の動作を持ちます。

  1. Low 感度レベルと_Blocked_アクションを持つルールを構成することで、大規模なHTTP DDoS攻撃を緩和します。
  2. DDoS保護システムによってフラグが付けられたトラフィックを監視するために、デフォルトの感度レベル(High)と_Log_アクションを持つルールを構成します。

ルールの順序は重要です: 最も高い感度レベルのルールは、最も低い感度レベルのルールの後に来なければなりません。そうでなければ、評価されることはありません。

variable "zone_id" {
default = "<ZONE_ID>"
}
resource "cloudflare_ruleset" "zone_level_http_ddos_config" {
zone_id = var.zone_id
name = "HTTP DDoS - Terraform管理"
description = ""
kind = "zone"
phase = "ddos_l7"
# リソース構成には2つのルールが含まれています:
# 1. 最も低い感度レベル(最高の閾値)を持つ最初のルールは攻撃をブロックします。
# 2. より高い感度レベル(低い閾値)を持つ2番目のルールは、Logアクションのみを適用します。
#
# 実際には、評価はルールが式と閾値の両方に一致するたびに停止するため、ルールの順序は重要です:
# - トラフィックレートがデフォルトの感度レベル('High')の(low)閾値を下回ると、ルールは一致しません(アクションは適用されません)。
# - トラフィックレートが'Low'とデフォルト('High')の感度レベルの閾値の間にあると、最初のルールは一致しませんが、2番目のルールは一致します(トラフィックがログに記録されます)。
# - トラフィックレートが'Low'の(high)閾値を超えると、最初のルールが一致します(トラフィックがブロックされます)。
#
# DDoS保護システムは、_Essentially Off_感度レベルの閾値を超えるトラフィックに対しても緩和アクションを適用します。
rules {
description = "低感度閾値でトラフィックをブロック"
action = "execute"
action_parameters {
# Cloudflare L7 DDoS攻撃保護ルールセット
id = "4d21379b4f9f4bb088e0729962c8b3cf"
overrides {
rules {
# ルール: 知られたボットネットからのHTTPリクエスト(シグネチャ#4)。
id = "29d170ba2f004cc787b1ac272c9e04e7"
sensitivity_level = "low"
action = "block"
}
rules {
# ルール: 異常なHTTPヘッダーまたはURIパスを持つHTTPリクエスト(シグネチャ#16)。
id = "60a48054bbcf4014ac63c44f1712a123"
sensitivity_level = "low"
action = "block"
}
}
}
expression = "true"
enabled = true
}
rules {
description = "デフォルトの感度閾値で、正当なトラフィックが捕まるかどうかを確認するためにログを記録"
action = "execute"
action_parameters {
# Cloudflare L7 DDoS攻撃保護ルールセット
id = "4d21379b4f9f4bb088e0729962c8b3cf"
overrides {
rules {
# ルール: 知られたボットネットからのHTTPリクエスト(シグネチャ#4)。
id = "29d170ba2f004cc787b1ac272c9e04e7"
sensitivity_level = "default"
action = "log"
}
rules {
# ルール: 異常なHTTPヘッダーまたはURIパスを持つHTTPリクエスト(シグネチャ#16)。
id = "60a48054bbcf4014ac63c44f1712a123"
sensitivity_level = "default"
action = "log"
}
}
}
expression = "true"
enabled = true
}
}