在 Google Cloud 中部署网络监控和遥测功能

Last reviewed 2024-02-13 UTC

网络遥测会从您网络上的设备收集网络流量数据,以便于分析数据。通过网络遥测,安全运营团队可以检测基于网络的威胁并搜寻高级攻击者,这对于自主安全操作至关重要。要使用网络遥测功能,您需要捕获和存储网络数据。此蓝图介绍如何使用数据包镜像Zeek 在 Google Cloud 中捕获网络数据。

此蓝图适用于想要镜像网络流量、存储此数据并将其转发以供分析的安全分析师和网络管理员。此蓝图假定您具备网络配置和网络监控方面的工作知识。

此蓝图属于安全蓝图,由以下部分组成:

  • 包含一组 Terraform 配置和脚本的 GitHub 代码库
  • 使用此蓝图实现的架构、设计和安全控制的指南(本文档)。

借助此蓝图,您可以使用数据包镜像捕获网络数据包(包括网络元数据),将网络数据包转换为 Zeek 日志,然后将其存储在 Cloud Logging 中。此蓝图会提取 IP 地址、端口、协议、第 7 层标头和请求等元数据。将网络元数据存储为 Zeek 日志使用的数据量比存储原始数据包使用的数据量少,因此更经济实惠。

本文档假定您已按照 Google Cloud 企业基础指南中所述配置了一组基本的安全控制措施。

支持的使用场景

此蓝图支持以下使用场景:

  • 您的安全运营中心 (SOC) 需要访问集中位置中的 Google Cloud 网络日志数据,以便调查安全突发事件。此蓝图会将网络数据包数据转换为日志,供您转发到分析和调查工具。分析和调查工具包括 BigQueryChronicleFlowmonExtraHop 或安全信息和事件管理 (SIEM)。
  • 您的安全团队需要了解 Google Cloud 网络,才能使用 Chronicle 等工具执行威胁搜寻。您可以使用此蓝图为 Google Cloud 网络流量创建流水线。
  • 您想要展示您的组织如何满足网络检测和响应的合规性要求。例如,您的组织必须证明符合美国行政管理和预算局 (OMB) 的 Memorandum M-21-31 规定。
  • 您的网络安全分析师需要长期的网络日志数据。此蓝图支持长期监控和按需监控。

如果您还需要数据包捕获 (pcap) 数据,则需要使用网络协议分析器工具(例如 Wiresharktcpdump)。网络协议分析器的使用不在本蓝图的介绍范围内。

您无法使用 Cloud Intrusion Detection System 部署此蓝图。此解决方案和 Cloud Intrusion Detection System 都使用数据包镜像政策,并且这些政策一次只能由一项服务使用。

费用

此蓝图可能会影响您的费用,因为您将在 Cloud Logging 中添加计算资源并存储大量数据。部署蓝图时,请考虑以下事项:

  • Compute Engine 中的每个收集器虚拟机 (VM) 都作为 e2-medium 实例运行。
  • 您可以通过以下方式控制存储费用:
    • 使用数据包镜像过滤条件。
    • 不跨可用区镜像,以避免可用区间出站流量费用。
    • 仅在您的组织需要时存储数据。

您可以使用价格计算器来估算计算、日志记录和存储费用。

架构

以下架构图展示了您使用此蓝图实现的基础架构:

网络遥测架构。

上图中展示的架构结合使用了以下 Google Cloud 服务和功能:

  • 两个 Virtual Private Cloud (VPC) 网络

    • 镜像的来源的 Virtual Private Cloud 网络。
    • 收集器实例的 VPC 网络。

    这些 VPC 网络必须位于同一项目中。

  • 作为网络数据包来源的特定区域和子网中的 Compute EngineGoogle Kubernetes Engine (GKE) 实例(称为镜像的来源)。您可以使用以下方法之一来识别对来源进行镜像的实例:

  • 充当内部直通网络负载均衡器后面的收集器实例的 Compute Engine 实例,与镜像来源位于同一区域。这些实例运行 Zeek-Fluentd 黄金映像或您的自定义 zeek-fluentd 映像。虚拟机是 e2-medium,支持的吞吐量为 4 Gbps。

  • 内部直通网络负载均衡器,用于接收来自镜像的来源的数据包并将其转发到收集器实例进行处理。该负载均衡器的转发规则使用 --is-mirroring-collector 标志。

  • 允许以下各项的 VPC 防火墙规则

    • 从镜像的来源到内部直通网络负载均衡器的出站流量。
    • 从收集器实例到镜像的实例的入站流量。
  • 数据包镜像政策,用于定义区域、子网、镜像的实例、协议、方向和转发规则。每个区域都需要自己的数据包镜像政策。

  • VPC 网络对等互连,允许使用内部 IP 地址在多个区域中的高可用性 Compute Engine 虚拟机之间进行连接。VPC 网络对等互连允许镜像的来源与内部直通网络负载均衡器通信。

  • Cloud Logging 实例,用于通过分析和调查工具收集所有数据包以进行存储和检索。

了解您需要的安全控制

本部分讨论了 Google Cloud 中可用于帮助保护网络监控架构不同组件的安全控制。

VPC 网络安全控制

您可以针对镜像的来源和收集器创建 VPC 网络。为收集器创建 VPC 网络时,您需要删除系统生成的默认路由,这意味着所有默认互联网网关路由都会被关闭。关闭默认互联网网关有助于减少来自外部威胁攻击者的网络攻击面。

您可以在 VPC 网络中为每个区域创建子网。通过子网,您可以控制 Google Cloud 上的工作负载之间以及来自于外部来源的流量流动。子网启用了专用 Google 访问通道。专用 Google 访问通道还有助于减少网络攻击面,同时允许虚拟机与 Google API 和服务通信。

如需在 VPC 网络之间进行通信,请启用 VPC 网络对等互连。VPC 网络对等互连使用子网路由进行内部 IP 地址连接。您可以导入和导出自定义路由,以允许镜像来源和收集器之间直接连接。您必须限制与区域路由的所有通信,因为收集器的内部直通网络负载均衡器不支持全局路由。

防火墙规则

您可以使用防火墙规则来定义镜像的来源和收集器可以建立的连接。您可以设置入站规则以允许常规正常运行时间健康检查,为镜像的来源上的所有协议设置出站规则,并为收集器上的所有协议设置入站规则。

收集器虚拟机安全控制

收集器虚拟机负责接收数据包数据。收集器虚拟机是作为代管式实例组 (MIG) 运行的相同虚拟机。您可以启用健康检查,以允许自动重新创建无响应的虚拟机。 此外,您可以允许收集器根据您的使用要求进行自动扩缩。

每个收集器虚拟机都运行 zeek-fluentd Packer 映像。此映像由 Zeek(生成日志)和 Fluentd(将日志转发到 Cloud Logging)组成。部署 Terraform 模块后,您可以更新虚拟机操作系统和 Zeek 软件包并应用组织所需的安全控制措施。

内部负载均衡器安全控制

内部直通网络负载均衡器会将来自镜像的来源的网络数据包流量定向到收集器虚拟机进行处理。所有收集器虚拟机必须在内部直通网络负载均衡器所在的区域中运行。

内部直通网络负载均衡器的转发规则定义了可以从所有端口进行访问,但不允许全球访问。此外,转发规则使用 --is-mirroring-collector 标志将此负载均衡器定义为镜像收集器。

您无需设置负载均衡器进行存储,因为每个收集器虚拟机都会将日志直接上传到 Cloud Logging。

数据包镜像

数据包镜像需要您识别要镜像的实例。您可以使用网络标记、实例名称或实例所在的子网来识别要镜像的实例。此外,您还可以使用以下一项或多项来进一步过滤流量:

  • 第 4 层协议,例如 TCP、UDP 或 ICMP。
  • IP 标头中的 IPv4 CIDR 范围,例如 10.0.0.0/8。
  • 您要镜像的流量的方向,例如入站和/或出站。

服务账号和访问权限控制

服务账号是 Google Cloud 可用于代表您运行 API 请求的身份。服务账号可确保用户身份无法直接访问服务。

如需部署 Terraform 代码,您必须模拟在项目中具有以下角色的服务账号

收集器虚拟机也需要此服务账号,以便它们向 Google Cloud 服务进行身份验证、获取网络数据包并将其转发到 Cloud Logging。

数据保留做法

您可以使用日志存储桶保留规则来指定 Cloud Logging 存储网络日志的时长。如需确定数据的存储时长,请查看您的组织的监管要求。

日志记录和审核

您可以使用 Cloud Monitoring 分析收集器虚拟机的性能,并为拨测和性能条件(如 CPU 负载)设置提醒。

您可以使用 Cloud Audit Logs 来跟踪管理员对数据和配置的访问和更改。审核日志记录受 Compute EngineCloud Load BalancingCloud Logging 支持。

您可以按如下方式导出监控信息:

综合应用

如需实现本文档中所述的架构,请执行以下操作:

  1. 按照 Google Cloud 企业基础蓝图中的说明在 Google Cloud 中部署安全基准。如果您选择不部署企业基础蓝图,请确保您的环境设置了类似的安全基准。
  2. 查看有关蓝图的自述文件,并确保满足所有前提条件。
  3. 在测试环境中,部署一个示例网络遥测配置以查看蓝图的实际运用。在测试过程中,请执行以下操作:

    1. 验证数据包镜像政策和子网是否已创建。
    2. 验证您是否具有 Logs Viewer (roles/logging.viewer) 角色并运行 curl 命令来查看日志数据。例如:

      curl http://example.com/

      您应该会看到日志数据存储在 Cloud Logging 中。

    3. 使用 Security Command Center 根据您的合规性要求扫描新创建的资源。

    4. 验证您的系统是否捕获并存储了相应的网络数据包,并根据需要微调性能。

  4. 将蓝图部署到生产环境中。

  5. 将 Cloud Logging 连接到 SIEMChronicle,以便 SOC 和网络安全分析师能够将新的遥测数据整合到信息中心。

后续步骤