使用防火墙规则日志记录

通过防火墙规则日志记录,您可以审核、验证和分析防火墙规则所带来的影响。例如,您可以确定用于拒绝流量的防火墙规则是否如期发挥作用。如果您需要确定某特定防火墙规则影响的连接数,日志记录功能也十分有用。

本页面介绍了如何启用和停用日志记录功能以及如何查看所生成的日志。如需详细了解所记录的内容、日志记录示例和日志格式,请参阅防火墙规则日志记录概述

权限

如需修改防火墙规则或访问 Stackdriver 日志,IAM 成员需具备下列某一角色:

任务 所需的角色
创建、删除或更新防火墙规则 项目 Owner 或 Editor,或者 Security Admin
查看 Stackdriver 日志 项目 Owner、Editor 或 Viewer,或者 Logs Viewer
如需详细了解 Stackdriver IAM 角色和权限,请参阅 Stackdriver 访问权限控制指南

启用和停用防火墙规则日志记录

创建防火墙规则时,可选择启用防火墙规则日志记录。如需了解详情,请参阅创建防火墙规则

如需对现有防火墙规则启用或停用防火墙规则日志记录,请按照以下说明操作。

启用防火墙规则日志记录

Console

  1. 转到 Google Cloud Platform Console 中的“防火墙规则”页面。
    转到“防火墙规则”页面
  2. 选择要更新的防火墙规则。
  3. 点击修改
  4. 对于日志设置,选择启用
  5. 点击保存

gcloud

gcloud compute firewall-rules update [NAME] \
    --enable-logging

停用防火墙规则日志记录

Console

  1. 转到 Google Cloud Platform Console 中的“防火墙规则”页面。
    转到“防火墙规则”页面
  2. 选择要更新的防火墙规则。
  3. 点击修改
  4. 对于日志设置,选择关闭
  5. 点击保存

gcloud

gcloud compute firewall-rules update [NAME] \
    --no-enable-logging

查看日志

防火墙规则日志是在托管网络的项目中创建的,该网络包含虚拟机实例和防火墙规则。使用共享 VPC 时,虚拟机实例会在服务项目中予以创建,但它们会使用宿主项目中的共享 VPC 网络。防火墙规则日志存储在该宿主项目中。

如需查看防火墙规则日志,请使用 GCP Console 的日志部分

下列高级 Stackdriver 过滤条件展示了如何搜索特定防火墙事件。在每个过滤条件中,请将 [PROJECT_ID] 替换为您的项目 ID

所有防火墙日志

resource.type="gce_subnetwork"
logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Ffirewall"

特定子网

resource.type="gce_subnetwork"
logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Ffirewall"
resource.labels.subnetwork_name="[SUBNET_NAME]"

[SUBNET_NAME] 替换为特定子网的名称。

特定虚拟机

resource.type="gce_subnetwork"
logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Ffirewall"
jsonPayload.instance.vm_name="[INSTANCE_NAME]"

[INSTANCE_NAME] 替换为特定虚拟机实例的名称。

来自特定国家/地区的连接

resource.type="gce_subnetwork"
logName="projects/[PROJECT_ID]/logs/compute.googleapis.com%2Ffirewall"
jsonPayload.remote_location.country=[COUNTRY]

其中 [COUNTRY]ISO 3166-1 alpha-3 代码。

导出日志

如需导出防火墙规则日志,请按照使用日志查看器导出中的 Stackdriver 说明进行操作。

您可以使用示例高级筛选条件缩小要导出的日志的范围。

互动表

  • 如果是虚拟机之间的通信,则两个虚拟机都可能生成日志记录,具体取决于其各自的防火墙规则。
  • 如果防火墙允许初始数据包,则记录的连接包含双向流动的数据包。
  • 对于给定的虚拟机,系统会根据该虚拟机上配置的防火墙规则来匹配传入连接,并会根据该虚拟机上配置的出站防火墙规则来匹配传出连接。
  • 对于与设有“允许并进行日志记录”的防火墙规则相匹配的被允许的连接,系统仅记录一次。即使连接持续,系统也不会每 5 秒钟重复记录一次日志条目。
  • 如果某个被拒的连接与设有“拒绝并进行日志记录”的防火墙规则相匹配,那么只要这一被拒的连接中存在数据包,系统就会每 5 秒钟重复记录一次日志条目。

下表介绍了单个虚拟机的防火墙日志记录行为。

如果 VM1 具有入站规则 R1 和出站规则 R2,且它们均与数据包匹配,则防火墙日志记录的行为如下所示:

VM1 具有入站规则 R1(匹配数据包) VM1 具有出站规则 R2(匹配数据包) 连接方向 操作 日志
允许并记录 允许 入站 允许 一个日志条目:
disposition=allow, rule=R1
拒绝
允许并记录
拒绝并记录
允许 允许 入站 允许 无日志记录
拒绝
允许并记录
拒绝并记录
拒绝并记录 不适用 入站 拒绝 每 5 秒一个日志条目:
disposition=deny, rule=R1
拒绝 不适用 入站 拒绝 无日志记录
允许 允许并记录 出站 允许 一个日志条目:
disposition=allow, rule=R2
拒绝
允许并记录
拒绝并记录
允许 允许 出站 允许 无日志记录
拒绝
允许并记录
拒绝并记录
不适用 拒绝并记录 出站 拒绝 每 5 秒一个日志条目:
disposition=deny, rule=R2
不适用 拒绝 出站 拒绝 无日志记录

请注意,入站和出站是对称的。

下面是防火墙日志语义的详细说明:

  • 允许并记录(只有 TCP 和 UDP 支持日志记录)

    • 如果连接是应用了规则的方向发起的,则系统会创建一条日志记录。
    • 出于连接跟踪目的,回复流量会被允许。无论该方向的防火墙规则如何,回复流量均不会产生任何日志记录。
    • 如果防火墙导致连接过期(处于非活动状态 10 分钟或收到 TCP RST),则任一方向的其他数据包都有可能触发日志记录。
    • 日志记录基于五元组。TCP 标志不影响日志记录行为。
  • 拒绝并记录(只有 TCP 和 UDP 支持日志记录)

    • 丢弃数据包(不发起任何连接)。
    • 与唯一五元组对应的每个数据包均会被记录为一次失败的连接尝试。
    • 如果继续收到数据包,则系统会每 5 秒钟重复记录一次同一五元组。

问题排查

无法查看日志

如果您无法在 GCP Console 中的“日志”部分查看防火墙规则日志,请检查以下内容:

可能的原因:权限不足

联系项目所有者,确保您的 IAM 成员至少具有该项目的 Logs Viewer 角色。如需了解详情,请参阅权限
可能的原因:子网日志可能从 Stackdriver 中被排除
在 GCP Console 中,导航到日志 > 日志提取,并确保 GCE 子网均被排除;如果 GCE 子网被部分排除,请确保该排除过滤条件应用于防火墙日志
可能的原因:不支持旧版网络
无法在旧版网络中使用防火墙规则日志记录。仅支持 VPC 网络
可能的原因:当前查看的项目有误
防火墙规则日志存储在包含此网络的项目中,因此必须确保在相应的项目中查找日志。使用共享 VPC 时,虚拟机实例在服务项目中进行创建,但它们使用宿主项目中的共享 VPC 网络。对于共享 VPC 方案,防火墙规则日志存储在该宿主项目中。

如果涉及到共享 VPC,则需具备适当的宿主项目权限才能查看防火墙规则日志。即使虚拟机实例本身位于服务项目中,其防火墙规则日志仍在此宿主项目中。

缺少日志条目

可能的原因:连接可能与您预期的防火墙规则不匹配

确保您预期的防火墙规则位于实例的适用防火墙规则列表中。使用 GCP Console 查看相关实例的详细信息,然后点击其虚拟机实例详情页面上“网络接口”部分中的查看详情按钮。在其网络接口详情页面的“防火墙规则和路由详情”部分中检查适用的防火墙规则

查看防火墙规则概述,确保您已正确创建防火墙规则。

您可以在虚拟机上使用 tcpdump 来确定其发送或接收的连接是否具有与您预期的防火墙相匹配的地址、端口和协议。

可能的原因:可能需遵守某一条具有更高优先级的禁用了防火墙日志记录的规则

防火墙规则根据其优先级进行评估。从虚拟机实例来看,流量仅应用一条防火墙规则。

您认为具有最高优先级的适用规则可能实际上并不具备最高优先级,实际上适用的是某条具有更高优先级并且未启用日志记录的规则。

如需排查问题,您可以暂时为可能适用于某台虚拟机的所有防火墙规则启用日志记录。使用 GCP Console 查看相关虚拟机的详细信息,然后点击其虚拟机实例详情页面上“网络接口”部分中的查看详情按钮。在其网络接口详情页面的“防火墙规则和路由详情”部分中检查适用的防火墙规则,并在该列表中识别您的自定义规则。暂时对上述所有自定义防火墙规则启用日志记录功能。

启用日志记录后,即可识别适用的规则。完成识别后,请务必对实际上无此需要的所有规则停用日志记录功能。

部分日志条目缺少元数据

可能的原因:配置传播延迟

如果您更新了启用防火墙日志记录的防火墙规则,GCP 可能需要几分钟才能完成更改的传播,开始记录与更新后的规则部分相匹配的流量日志。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页