跳转到内容
搜索文档

快速入门

最后更新 查看 MarkdownAgent 设置

1. 开启检测

在 Free 计划中,leaked credentials detection 默认启用,无需操作。在付费计划中,可在 Cloudflare 仪表板、通过 API 或使用 Terraform 开启检测。

  1. 在 Cloudflare 仪表板中,前往 Security Settings(设置) 页面。

    Go to Settings ↗
  2. (可选)按 Detection tools 筛选。

  3. 开启 Leaked credential detection

  1. 登录 Cloudflare 仪表板,并选择你的账户和域名。
  2. 前往 Security(安全性) > Settings(设置)
  3. Incoming traffic detections 下,开启 Leaked credentials

使用类似以下的 POST 请求:

Required API token permissions

At least one of the following token permissions is required:
  • Zone WAF Write
  • Account WAF Write
Set Leaked Credential Checks Statusbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/leaked-credential-checks" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"enabled": true
	}'

使用 cloudflare_leaked_credential_check 资源来为区域启用泄露凭据检测。例如:

resource "cloudflare_leaked_credential_check" "zone_lcc_example" {
	zone_id = var.cloudflare_zone_id
	enabled = true
}

2. 验证泄露凭据检测行为

使用 Security Analytics 与 HTTP 日志,验证 Cloudflare 是否正确检测传入请求中的泄露凭据。

有关可用于验证配置的测试凭据的更多信息,请参阅 测试您的配置

或者,按下一步所述使用 Log 操作(仅对企业客户可用)创建自定义规则。此规则将生成 安全事件,使您能够验证配置。

3. 缓解带有泄露凭据的请求

如果您使用 Free 计划,请部署建议的 速率限制规则 模板,可在:

  • 旧版仪表板:WAF > Rate limiting rules
  • 新安全仪表板:Security(安全性) > Security rules(安全规则)

使用此模板部署规则后,您可立即获得防护,阻止在每 10 秒内尝试使用泄露密码访问您的应用超过五次的 IP。此规则可通过在一段时间内阻止攻击来延迟攻击。或者,您可以创建自定义规则。

付费计划在创建规则时拥有更细粒度的控制。如果您使用付费计划,请 创建自定义规则,对包含泄露凭据的请求提出质询:

字段 运算符
User and Password Leaked equals True

如果使用表达式编辑器,请输入以下表达式:

(cf.waf.credential_check.username_and_password_leaked)

规则操作:Managed Challenge

此规则将匹配 Cloudflare 检测到先前已泄露的凭据集(用户名与密码)的请求。有关泄露凭据检测提供的字段列表,请参阅 泄露凭据字段

与其他规则语言字段组合

您可以将先前的表达式与规则语言的其他 字段函数 组合。这使您能够自定义规则范围,或将泄露凭据检查与其他安全功能结合。例如:

  • 以下表达式将匹配发往身份验证端点且包含泄露凭据的请求:

    字段 运算符 逻辑
    User and Password Leaked equals True And
    URI Path contains /admin/login.php

    使用编辑器时的表达式:
    (cf.waf.credential_check.username_and_password_leaked and http.request.uri.path contains "/admin/login.php")

  • 以下表达式将匹配来自机器人且包含身份验证凭据的请求:

    字段 运算符 逻辑
    Authentication detected equals True And
    Bot Score less than 10

    使用编辑器时的表达式:
    (cf.waf.auth_detected and cf.bot_management.score lt 10)

更多示例请参阅 缓解规则示例

在源站处理检测到的泄露凭据

此外,您可能希望在 源站服务器 处理 Cloudflare 检测到的泄露凭据:

  1. 开启 Add Leaked Credentials Checks Header 托管转换。

  2. 对于在源站收到且包含 Exposed-Credential-Check 请求头的请求,您可以在检测到先前泄露的凭据时,将最终用户重定向到重置密码页面。

4.(可选)配置自定义检测位置

要以默认配置未覆盖的方式检查泄露凭据,请添加 自定义检测位置

  1. 在 Cloudflare 仪表板中,前往 Security Settings(设置) 页面。

    Go to Settings ↗
  2. (可选)按 Detection tools(检测工具) 过滤。

  3. Leaked credential detection(泄露凭据检测) > Configurations(配置) 下,选择编辑图标。

  4. 选择 Add custom username and password location(添加自定义用户名和密码位置)

  5. Username location(用户名位置) 与 **Password location(密码位置,可选)**中,输入用于从 HTTP 请求获取用户名与密码的表达式。例如,您可以使用以下表达式:

    • Username location(用户名位置):
      lookup_json_string(http.request.body.raw, "user")
    • Password location(密码位置):
      lookup_json_string(http.request.body.raw, "secret")

    此配置将扫描包含类似以下结构的 JSON 请求体的传入 HTTP 请求:

    {"user": "<USERNAME>", "secret": "<PASSWORD>"}

    有关此函数的更多信息,请参阅 lookup_json_string() 文档。

  6. 选择 Save(保存)

  1. 登录 Cloudflare 仪表板,并选择您的账户与域名。

  2. 前往 Security(安全性) > Settings(设置)

  3. Incoming traffic detections(传入流量检测) 下,选择 Leaked credentials(泄露凭据),然后选择 Add custom username and password location(添加自定义用户名和密码位置)

  4. Username location(用户名位置) 与 **Password location(密码位置,可选)**中,输入用于从 HTTP 请求获取用户名与密码的表达式。例如,您可以使用以下表达式:

    • Username location(用户名位置):
      lookup_json_string(http.request.body.raw, "user")
    • Password location(密码位置):
      lookup_json_string(http.request.body.raw, "secret")

    此配置将扫描包含类似以下结构的 JSON 请求体的传入 HTTP 请求:

    {"user": "<USERNAME>", "secret": "<PASSWORD>"}

    有关此函数的更多信息,请参阅 lookup_json_string() 文档。

  5. 选择 Save(保存)

使用类似如下的 POST 请求:

Required API token permissions

At least one of the following token permissions is required:
  • Zone WAF Write
  • Account WAF Write
Create Leaked Credential Checks Custom Detectionbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/leaked-credential-checks/detections" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"username": "lookup_json_string(http.request.body.raw, \"user\")",
		"password": "lookup_json_string(http.request.body.raw, \"secret\")"
	}'

这对查找表达式(用于用户名与密码)将扫描包含类似以下结构的 JSON 请求体的传入 HTTP 请求:

{"user": "<USERNAME>", "secret": "<PASSWORD>"}

有关此函数的更多信息,请参阅 lookup_json_string() 文档。

使用 cloudflare_leaked_credential_check_rule 资源来添加自定义检测位置。例如:

resource "cloudflare_leaked_credential_check_rule" "custom_location_example" {
	zone_id = var.cloudflare_zone_id
	username = "lookup_json_string(http.request.body.raw, \"user\")"
	password = "lookup_json_string(http.request.body.raw, \"secret\")"
}

有关此函数的更多信息,请参阅 lookup_json_string() 文档。

在自定义检测位置中,您只需提供用户名的表达式。

有关不同请求类型的自定义检测位置的更多示例,请参阅 自定义检测位置


测试您的配置

Cloudflare 提供一组区分大小写的特殊凭据,用于测试泄露凭据检测的配置。

在启用并配置检测后,您可以在测试 HTTP 请求中使用本节提到的凭据。

Free 计划用户的测试凭据(在付费计划中也可用):

  • 用户名:CF_LEAKED_USERNAME_FREE
  • 密码:CF_LEAKED_PASSWORD

付费计划用户的测试凭据(在 Free 计划上不可用):

Cloudflare 会将这些特定凭据视为先前已泄露。在测试中使用它们以检查当前配置的行为。

这篇文档对您有帮助吗?