应用威胁情报

借助 Google Cloud Armor 威胁情报,Google Cloud Armor Enterprise 订阅者可以根据多个类别的威胁情报数据允许或阻止流向外部应用负载平衡器的流量,从而保护其流量。威胁情报数据分为以下几类:

  • Tor 退出节点:Tor 是一种开源软件,可实现匿名通信。如需排除隐藏其身份的用户,请阻止 Tor 退出节点的 IP 地址(流量离开 Tor 网络的点)。
  • 已知的恶意 IP 地址:需要屏蔽以改善应用安全状况的 IP 地址,因为针对 Web 应用的攻击通常来自于这些地址。
  • 搜索引擎:您可以允许以启用网站索引的 IP 地址。
  • VPN 提供商:声誉不佳的 VPN 提供商使用的 IP 地址。您可以屏蔽此类别,以阻止尝试规避基于 IP 地址的规则。
  • 匿名代理:已知匿名代理使用的 IP 地址。
  • 加密货币挖矿工具:已知加密货币挖矿网站使用的 IP 地址。
  • 公有云 IP 地址范围:您可以阻止此类别以免恶意自动化工具浏览 Web 应用;或者,如果您的服务使用其他公有云,则您可以允许此类别。

如需使用威胁情报,您可以使用 evaluateThreatIntelligence 匹配表达式以及表示上述类别之一的 Feed 名称来定义安全政策规则,用于根据这些类别的一部分或全部来允许或阻止流量。 此外,您还必须订阅 Cloud Armor Enterprise。如需详细了解 Cloud Armor Enterprise,请参阅 Cloud Armor Enterprise 概览

配置威胁情报

如需使用威胁情报,请使用 evaluateThreatIntelligence('FEED_NAME') 匹配表达式配置安全政策规则,并根据您要允许或阻止的类别提供 FEED_NAME。每个 Feed 中的信息都会不断更新,从而保护服务免受新威胁的影响,而无需额外的配置步骤。有效的参数如下。

Feed 名称 说明
iplist-tor-exit-nodes 匹配 Tor 退出节点的 IP 地址
iplist-known-malicious-ips 匹配已知用于攻击 Web 应用的 IP 地址
iplist-search-engines-crawlers 匹配搜索引擎抓取工具的 IP 地址
iplist-vpn-providers 匹配声誉不佳的 VPN 提供方使用的 IP 地址范围
iplist-anon-proxies 匹配属于开放匿名代理的 IP 地址范围
iplist-crypto-miners 匹配属于加密货币挖矿网站的 IP 地址范围
iplist-cloudflare 匹配 Cloudflare 代理服务的 IPv4IPv6 地址范围
iplist-fastly 匹配 Fastly 代理服务的 IP 地址范围
iplist-imperva 匹配 Imperva 代理服务的 IP 地址范围
iplist-public-clouds
  • iplist-public-clouds-aws
  • iplist-public-clouds-azure
  • iplist-public-clouds-gcp
匹配属于公有云的 IP 地址
  • 匹配 Amazon Web Services 使用的 IP 地址范围
  • 匹配 Microsoft Azure 使用的 IP 地址范围
  • 匹配 Google Cloud 使用的 IP 地址范围

您可以使用以下 gcloud 命令以及上表中的 FEED_NAME 和任何 ACTION(如 allowdenythrottle)来配置新的安全政策规则。如需详细了解规则操作,请参阅政策类型

gcloud compute security-policies rules create 1000 \
    --security-policy=NAME \
    --expression="evaluateThreatIntelligence('FEED_NAME')" \
    --action="ACTION"

如果您要排除威胁情报可能阻止评估的 IP 地址或 IP 地址范围,则可以使用以下表达式将地址添加到排除列表中,注意将 ADDRESS 替换为您要排除的地址或地址范围。

evaluateThreatIntelligence('iplist-known-malicious-ips', ['ADDRESS'])

使用已命名的 IP 地址列表

利用 Google Cloud Armor 的已命名 IP 地址列表,您可以引用第三方提供商维护的 IP 地址和 IP 地址范围列表。您可以在安全政策中配置已命名的 IP 地址列表。您无需手动指定每个 IP 地址或 IP 地址范围。

在本文档中,术语“IP 地址”和“IP 地址列表”包括“IP 地址范围”。

已命名的 IP 地址列表是以不同的名称分组的 IP 地址列表。该名称通常是指提供商。已命名的 IP 地址列表不受制于每个规则的 IP 地址数量配额限制。

已命名的 IP 地址列表不是安全政策。您可以像引用预配置的规则一样,将已命名的 IP 地址列表作为表达式引用,从而将它们整合到一项安全政策中。

例如,如果第三方提供商的 IP 地址列表 {ip1, ip2, ip3....ip_N_} 的名称为 provider-a,那么您可以创建一个安全规则,以允许列表 provider-a 中的所有 IP 地址,并排除该列表以外的 IP 地址:

gcloud beta compute security-policies rules create 1000 \
    --security-policy POLICY_NAME \
    --expression "evaluatePreconfiguredExpr('provider-a')" \
    --action "allow"

您无法创建自己的自定义已命名 IP 地址列表。此功能仅适用于与 Google 合作的第三方提供商维护的已命名 IP 地址列表。如果此类已命名的 IP 地址列表不能满足您的需求,您可以创建一个安全政策,其中的规则根据请求源自的 IP 地址允许或拒绝对资源的访问。如需了解详情,请参阅配置 Google Cloud Armor 安全政策

如需使用已命名的 IP 地址列表,您必须订阅 Google Cloud Armor Enterprise,并在 Cloud Armor Enterprise 中注册项目。如需了解详情,请参阅已命名 IP 地址列表的可用性

仅允许来自允许的第三方提供商的流量

典型的使用场景是创建一个许可名单以包含允许的第三方合作伙伴的 IP 地址,从而确保只有来自该合作伙伴的流量才能访问负载均衡器和后端。

例如,CDN 提供商需要定期从来源服务器拉取内容,以将其分发到自己的缓存。与 Google 合作有助于 CDN 提供商与 Google 广告网络边缘建立直接联系。Google Cloud 上的 CDN 用户可以在来源拉取期间使用此直接联系。在这种情况下,CDN 用户可能希望构建一项安全政策,以仅允许来自该特定 CDN 提供商的流量。

在此示例中,CDN 提供商发布其 IP 地址列表 23.235.32.0/20, 43.249.72.0/22, ⋯,。CDN 用户配置了一条安全规则以仅允许来自这些 IP 地址的流量。因此,允许两个 CDN 提供商接入点(23.235.32.1043.249.72.10),从而允许其流量。来自未经授权的接入点 198.51.100.1 的流量已被阻止。

Google Cloud Armor 的已命名 IP 地址
Google Cloud Armor 的已命名 IP 地址(点击可放大)

使用预配置规则简化配置和管理

CDN 提供商通常使用众所周知的 IP 地址,许多 CDN 用户都需要使用这些地址。当提供商添加、移除和更新 IP 地址时,这些列表会随时间而变化。

在安全政策规则中使用已命名的 IP 地址列表可简化 IP 地址的配置和管理过程,因为 Google Cloud Armor 每天都会自动同步 CDN 提供商的信息。这样一来,您不必再手动维护大型 IP 地址列表,这个过程既耗时又容易出错。

以下是允许来自一个提供商的所有流量的预配置规则示例:

evaluatePreconfiguredExpr('provider-a') => allow traffic

IP 地址列表提供商

Google Cloud Armor 支持下表中的 IP 地址列表提供者。这些提供商是与 Google 合作的 CDN 提供商。其 IP 地址列表通过各个公共网址发布。

这些合作伙伴提供单独的 IPv4 地址和 IPv6 地址列表。Google Cloud Armor 使用提供的网址提取列表,然后将列表转换为已命名的 IP 地址列表。您可以通过表中的名称引用列表。

例如,以下代码会在优先级为 750 的安全政策 POLICY_NAME 中创建规则,将来自 Cloudflare 的已命名 IP 地址列表整合在一起,并允许访问这些 IP 地址:

gcloud beta compute security-policies rules create 750 \
    --security-policy POLICY_NAME \
    --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
    --action "allow"
提供方 网址 IP 地址列表名称
Fastly https://api.fastly.com/public-ip-list sourceiplist-fastly
Cloudflare

https://www.cloudflare.com/ips-v4

https://www.cloudflare.com/ips-v6

sourceiplist-cloudflare
Imperva

https://my.imperva.com/api/integration/v1/ips

如需访问 Imperva 的列表,请发出 POST 请求。您还可以使用以下命令:

curl -d "" https://my.imperva.com/api/integration/v1/ips

sourceiplist-imperva

如需列出预配置的已命名 IP 地址列表,请使用以下 gcloud CLI 命令:

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

此操作会返回:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

同步 IP 地址列表

仅当检测到使用有效格式的更改时,Google Cloud Armor 才会与每个提供商同步 IP 地址列表。Google Cloud Armor 会对所有列表中的 IP 地址执行基本语法验证。

已命名 IP 地址列表的可用性

Google Cloud Armor Enterprise 的正式版已发布。第三方已命名 IP 地址列表的可用性如下:

  1. 如果您订阅了 Google Cloud Armor Enterprise 层级,则您有权在已注册的项目中使用已命名 IP 地址列表。您可以创建、更新和删除具有已命名 IP 地址列表的规则。
  2. 如果您的 Google Cloud Armor Enterprise 层级订阅过期或返回标准层级,则您无法添加或修改具有已命名 IP 地址列表的规则,但可以删除现有规则并更新规则来移除已命名 IP 列表。
  3. 如果项目已包含具有已命名 IP 地址列表的规则,而且您尚未在 Google Cloud Armor Enterprise 中注册该项目,您可以继续在该项目中使用、更新和删除具有已命名 IP 地址列表的现有规则。在此类项目中,您可以创建包含已命名 IP 地址列表的新规则。

后续步骤