配置高级网络 DDoS 防护

分布式拒绝服务 (DDoS) 攻击是恶意行为者故意中断公开网站、系统和 API 的操作,旨在影响合法用户的体验。对于使用外部直通式网络负载均衡器协议转发或具有公共 IP 地址的虚拟机的工作负载,Google Cloud Armor 提供以下选项帮助保护系统免受 DDoS 攻击:

  • 标准网络 DDoS 攻击防护:为外部直通式网络负载平衡器、协议转发或具有公共 IP 地址的虚拟机提供基本的始终开启防护。这些内容在 Google Cloud Armor 标准版下介绍,不需要任何额外订阅。
  • 高级网络 DDoS 攻击防护:为使用外部直通式网络负载平衡器、协议转发或具有公共 IP 地址的虚拟机的 Cloud Armor Enterprise 订阅者提供额外防护。如需详细了解 Cloud Armor Enterprise,请参阅 Cloud Armor Enterprise 概览

本文档介绍标准和高级网络 DDoS 防护之间的区别、高级网络 DDoS 防护的工作原理,以及如何启用高级网络 DDoS 防护。

比较标准网络 DDoS 防护和高级网络 DDoS 攻击防护

使用下表比较标准和高级网络 DDoS 防护功能。

功能 标准网络 DDoS 防护 高级网络 DDoS 防护
受保护的端点类型
  • 外部直通式网络负载均衡器
  • 协议转发
  • 具有公共 IP 地址的虚拟机
  • 外部直通式网络负载均衡器
  • 协议转发
  • 具有公共 IP 地址的虚拟机
转发规则强制执行
始终开启攻击监控和提醒
定向攻击缓解措施
缓解遥测

网络 DDoS 防护的工作原理

标准网络 DDoS 防护始终处于启用状态。您无需执行任何操作即可启用它。

您可以按区域配置高级网络 DDoS 防护。您将网络边缘安全政策与特定区域中的网络边缘安全服务相关联,而不是将其与一个或多个目标池、目标实例、后端服务或具有外部 IP 地址的实例相关联。为该区域启用后,Google Cloud Armor 会为该区域中的外部直通式网络负载平衡器、协议转发和具有公共 IP 地址的虚拟机提供始终开启的有针对性的容量耗尽攻击检测和缓解功能。您只能对已注册 Cloud Armor Enterprise 的项目应用高级网络 DDoS 攻击防护。

配置高级网络 DDoS 防护时,您首先需要在所选区域中创建类型为 CLOUD_ARMOR_NETWORK 的安全政策。接下来,您需要更新安全政策以启用高级网络 DDoS 防护。最后,您将创建一个网络边缘安全服务,该服务是一种可以附加到 CLOUD_ARMOR_NETWORK 类型的安全政策的资源。通过将安全政策附加到网络边缘安全服务,可以为所选区域中的所有适用端点启用高级网络 DDoS 防护。

高级网络 DDoS 防护可测量您的基准流量,以提高其缓解性能。启用高级网络 DDoS 防护后,将有一个 24 小时的训练期。在这之后高级网络 DDoS 防护会确定一个可靠的基准,并使用训练来增强其缓解措施。训练期结束后,高级网络 DDoS 防护会根据历史流量应用更多缓解措施。

激活高级网络 DDoS 防护

按照以下步骤激活高级网络 DDoS 防护。

注册 Cloud Armor Enterprise

您的项目必须注册 Cloud Armor Enterprise,才能按区域启用高级网络 DDoS 攻击防护。激活后,激活的区域中的所有区域端点都会获得始终开启的高级网络 DDoS 攻击防护。

确保您的结算账号中具有有效的 Cloud Armor Enterprise 订阅,并且当前项目已注册 Cloud Armor Enterprise。如需详细了解如何注册 Cloud Armor Enterprise,请参阅订阅 Cloud Armor Enterprise 并注册项目

配置 Identity and Access Management (IAM) 权限

如需配置、更新或删除 Google Cloud Armor 边缘安全服务,您需要拥有以下 IAM 权限:

  • compute.networkEdgeSecurityServices.create
  • compute.networkEdgeSecurityServices.update
  • compute.networkEdgeSecurityServices.get
  • compute.networkEdgeSecurityServices.delete

下表列出了 IAM 角色的基本权限及其关联的 API 方法。

IAM 权限 API 方法
compute.networkEdgeSecurityServices.create networkEdgeSecurityServices insert
compute.networkEdgeSecurityServices.update networkEdgeSecurityServices patch
compute.networkEdgeSecurityServices.get networkEdgeSecurityServices get
compute.networkEdgeSecurityServices.delete networkEdgeSecurityServices delete
compute.networkEdgeSecurityServices.list networkEdgeSecurityServices aggregatedList

如需详细了解使用 Google Cloud Armor 时需要的 IAM 权限,请参阅为 Google Cloud Armor 安全政策设置 IAM 权限

配置高级网络 DDoS 防护

按照以下步骤启用高级网络 DDoS 攻击防护。

  1. 创建 CLOUD_ARMOR_NETWORK 类型的安全政策,或使用类型为 CLOUD_ARMOR_NETWORK 的现有安全政策。

     gcloud compute security-policies create SECURITY_POLICY_NAME \
         --type CLOUD_ARMOR_NETWORK \
         --region REGION
    

    请替换以下内容:

    • SECURITY_POLICY_NAME:您想为该安全政策指定的名称
    • REGION:您要在其中预配该安全政策的区域
  2. --network-ddos-protection 标志设置为 ADVANCED,以更新新创建的或现有的安全政策。

     gcloud compute security-policies update SECURITY_POLICY_NAME \
         --network-ddos-protection ADVANCED \
         --region REGION
    

    或者,您可以将 --network-ddos-protection 标志设置为 ADVANCED_PREVIEW,以在预览模式下启用安全政策。

     gcloud beta compute security-policies update SECURITY_POLICY_NAME \
         --network-ddos-protection ADVANCED_PREVIEW \
         --region REGION
    
  3. 创建引用您的安全政策的网络边缘安全服务。

     gcloud compute network-edge-security-services create SERVICE_NAME \
         --security-policy SECURITY_POLICY_NAME \
         --region REGION
    

停用高级网络 DDoS 防护

如需停用高级网络 DDoS 防护,您可以更新或删除安全政策。

更新安全政策

使用以下命令更新您的安全政策,以将 --network-ddos-protection 标志设置为 STANDARD。将变量替换为与您的部署相关的信息。

gcloud compute security-policies update SECURITY_POLICY_NAME \
    --network-ddos-protection STANDARD \
    --region REGION

删除安全政策

如需删除网络边缘安全政策,您必须先将其从网络边缘安全服务中移除,因为您无法删除使用中的安全政策。按照以下步骤删除安全政策:

  1. 从网络边缘安全服务中移除政策,或者删除网络边缘安全服务。

    • 如需从网络边缘安全服务中移除政策,请使用以下命令:

      gcloud compute network-edge-security-services update SERVICE_NAME \
       --security-policy="" \
       --region=REGION_NAME
      
    • 如需删除网络边缘安全服务,请使用以下命令:

      gcloud compute network-edge-security-services delete SERVICE_NAME \
       --region=REGION_NAME
      
  2. 使用以下命令删除安全政策:

    gcloud compute security-policies delete SECURITY_POLICY_NAME
    

使用预览模式

在预览模式下,您可以监控高级网络 DDoS 攻击防护的效果,而无需强制执行缓解措施。

Cloud Armor Enterprise 订阅者还可以为高级网络 DDoS 攻击防护政策启用预览模式。在预览模式下,您会收到有关检测到的攻击和建议的缓解措施的所有日志记录和遥测数据。但是,系统不会强制执行建议的缓解措施。这样您就可以在采用缓解措施之前先测试其有效性。由于每项政策都按区域配置,因此您可以启用或停用每个区域的预览模式。

如需启用预览模式,请将 --ddos-protection 标志设置为 ADVANCED_PREVIEW。您可以如以下示例所示,更新现有政策。

gcloud beta compute security-policies update POLICY_NAME \
    --network-ddos-protection ADVANCED_PREVIEW \
    --region=REGION

请替换以下内容:

  • POLICY_NAME:您的政策的名称
  • REGION:您的政策所属的区域。

如果在您的安全政策处于预览模式时发生了主动攻击,并且您希望强制采用缓解措施,您可以更新安全政策以将 --network-ddos-protection 标志设置为 ADVANCED。政策几乎会立即强制执行,并且下一个 MITIGATION_ONGOING 日志记录事件会反映此更改。MITIGATION_ONGOING 日志记录事件每五分钟发生一次。

网络 DDoS 缓解遥测

Google Cloud Armor 在缓解 DDoS 攻击时会生成三种类型的事件日志:MITIGATION_STARTEDMITIGATION_ONGOINGMITIGATION_ENDED。您可以使用以下日志过滤条件按缓解措施类型查看日志:

缓解措施类型 日志过滤条件
缓解措施生效

resource.type="network_security_policy"

jsonPayload.mitigationType="MITIGATION_STARTED"

缓解进行中

resource.type="network_security_policy"

jsonPayload.mitigationType="MITIGATION_ONGOING"

缓解措施结束

resource.type="network_security_policy"

jsonPayload.mitigationType="MITIGATION_ENDED"

Cloud Logging 攻击缓解事件日志

以下部分提供了每种事件日志的日志格式示例:

已启动缓解

  @type: "type.googleapis.com/google.cloud.networksecurity.cloudarmor.logging.v1.CloudArmorMitigationAlert"
  alertId: "11275630857957031521"
  mitigation_type: "MITIGATION_STARTED"
  target_vip: "XXX.XXX.XXX.XXX"
  total_volume: {
   pps: 1400000
   bps: 140000000
  }
  started: {
   total_attack_volume: {
    pps: 1100000
    bps: 110000000
   }
   classified_attack: {
    attack_type: "NTP-udp"
    attack_volume: {
       pps: 500000
       bps: 50000000
    }
   }
   classified_attack: {
    attack_type: "CHARGEN-udp"
    attack_volume: {
       pps: 600000
       bps: 60000000
    }
   }
   attack_sources: {
    top_source_asns: {
      asn: "ABCDEF"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
    top_source_asns: {
      asn: "UVWXYZ"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
    top_source_geos: {
      region_code: "XX"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
    top_source_geos: {
      region_code: "XY"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
   }
  }
  

缓解进行中

  @type: "type.googleapis.com/google.cloud.networksecurity.cloudarmor.logging.v1.CloudArmorMitigationAlert"
  alertId: "11275630857957031521"
  mitigation_type: "MITIGATION_ONGOING"
  target_vip: "XXX.XXX.XXX.XXX"
  total_volume: {
   pps: 1500000
   bps: 150000000
  }
  ongoing: {
   total_attack_volume: {
    pps: 1100000
    bps: 110000000
   }
   classified_attack: {
    attack_type: "NTP-udp"
    attack_volume: {
       pps: 500000
       bps: 50000000
    }
   }
   classified_attack: {
    attack_type: "CHARGEN-udp"
    attack_volume: {
       pps: 600000
       bps: 60000000
    }
   }
   attack_sources: {
    top_source_asns: {
      asn: "ABCDEF"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
    top_source_asns: {
      asn: "UVWXYZ"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
    top_source_geos: {
      region_code: "XX"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
    top_source_geos: {
      region_code: "XY"
      volume: {
        pps: 20000
        bps: 2000000
      }
    }
   }
  }
  

已完成缓解

  @type: "type.googleapis.com/google.cloud.networksecurity.cloudarmor.logging.v1.CloudArmorMitigationAlert"
  alertId: "11275630857957031521"
  mitigation_type: "MITIGATION_ENDED"
  target_vip: "XXX.XXX.XXX.XXX"
  ended: {
      attack_duration_seconds: 600
      attack_type: "NTP-udp"
  }
  

在预览模式下,上述每个 mitigation_type 前面都带有 PREVIEWED_。例如,在预览模式下,MITIGATION_STARTED 会改为 PREVIEWED_MITIGATION_STARTED

如需查看这些日志,请转到 Logs Explorer 并查看 network_security_policy 资源。

转到 Logs Explorer

如需详细了解如何查看日志,请参阅查看日志

后续步骤