记录 Web ACL 流量信息 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录 Web ACL 流量信息

注意

这是 Amazon WAF Classic 文档。只有在 2019 年 11 月 Amazon WAF 之前创建了 Amazon WAF 资源(如规则和 Web ACL),并且尚未将其迁移到最新版本时,才应使用此版本。要迁移您的资源,请参阅将您的 Amazon WAF 经典资源迁移到 Amazon WAF

有关的最新版本 Amazon WAF,请参阅Amazon WAF

注意

您不能使用 Amazon Security Lake 收集 Amazon WAF 经典数据。

您可以启用日志记录,以获取有关 Web ACL 对流量进行分析的详细信息。日志中包含的信息包括 Amazon WAF Classic 从您的 Amazon 资源收到请求的时间、有关该请求的详细信息以及每个请求匹配的规则的操作。

要开始使用,您需要设置 Amazon Kinesis Data Firehose。在这个过程中,您需要选择用于存储日志的目标。接下来,选择您要启用日志记录的 Web ACL。启用日志记录后,通过消防水管将日志 Amazon WAF 传送到您的存储目的地。

有关如何创建 Amazon Kinesis Data Firehose 以及如何查看存储的日志的信息,请参阅什么是亚马逊数据 Firehose? 要了解 Kinesis Data Firehose 配置所需的权限,请参阅 使用 Amazon Kinesis Data Firehose 控制访问

您必须拥有以下权限才能成功启用日志记录:

  • iam:CreateServiceLinkedRole

  • firehose:ListDeliveryStreams

  • waf:PutLoggingConfiguration

有关服务相关角色以及 iam:CreateServiceLinkedRole 权限的更多信息,请参阅在 Classic 中使用服务相关角色 Amazon WAF

为 Web ACL 启用日志记录
  1. 使用aws-waf-logs前缀 “-” 开头的名称创建 Amazon Kinesis Data Firehose 例如,。aws-waf-logs-us-east-2-analytics使用 PUT 源,在您执行操作的区域中创建 Data Firehose。如果您要为 Amazon 捕获日志 CloudFront,请在美国东部(弗吉尼亚北部)创建消防水带。有关更多信息,请参阅创建 Amazon Data Firehose 传输流

    重要

    请勿选择 Kinesis stream 作为源。

    一个 Amazon WAF 经典日志相当于一个 Firehose 记录。如果您通常每秒收到 10,000 个请求并启用完整日志,则应在 Firehose 中设置每秒 10,000 条记录。如果您未正确配置 Firehose, Amazon WAF Classic 将不会记录所有日志。有关更多信息,请参阅 Amazon Kinesis Data Firehose 限额

  2. 登录 Amazon Web Services Management Console 并打开 Amazon WAF 控制台,网址为 https://console.aws.amazon.com/wafv2/

    如果您在导航窗格中看到 “切换到 Amazon WAF 经典版”,请将其选中。

  3. 在导航窗格中,选择 Web ACL

  4. 选择您要启用日志记录的 Web ACL 名称。然后将打开一个页面,其右侧窗格会显示 Web ACL 的详细信息。

  5. 日志记录 选项卡上,选择 启用日志记录

  6. 选择您在第一步中创建的 Kinesis Data Firehose。您必须选择以 “aws-waf-logs-” 开头的消防水带。

  7. (可选)如果您不希望在日志中包含特定字段及其值,请编辑这些字段。选择要编辑的字段,然后选择 添加。根据需要重复操作来编辑其他字段。编辑后的字段在日志中显示为 REDACTED。例如,如果您编辑 cookie 字段,则日志中的 cookie 字段将为 REDACTED

  8. 选择启用日志记录

    注意

    成功启用日志记录后, Amazon WAF Classic 将创建一个服务关联角色,该角色具有将日志写入亚马逊 Kinesis Data Firehose 的必要权限。有关更多信息,请参阅 在 Classic 中使用服务相关角色 Amazon WAF

禁用 Web ACL 的日志记录
  1. 在导航窗格中,选择 Web ACL

  2. 选择您要禁用日志记录的 Web ACL 名称。然后将打开一个页面,其右侧窗格会显示 Web ACL 的详细信息。

  3. 日志记录 选项卡上,选择 禁用日志记录

  4. 在对话框中,选择 禁用日志记录

例 示例日志
{ "timestamp":1533689070589, "formatVersion":1, "webaclId":"385cb038-3a6f-4f2f-ac64-09ab912af590", "terminatingRuleId":"Default_Action", "terminatingRuleType":"REGULAR", "action":"ALLOW", "httpSourceName":"CF", "httpSourceId":"i-123", "ruleGroupList":[ { "ruleGroupId":"41f4eb08-4e1b-2985-92b5-e8abf434fad3", "terminatingRule":null, "nonTerminatingMatchingRules":[ {"action" : "COUNT", "ruleId" : "4659b169-2083-4a91-bbd4-08851a9aaf74"} ], "excludedRules": [ {"exclusionType" : "EXCLUDED_AS_COUNT", "ruleId" : "5432a230-0113-5b83-bbb2-89375c5bfa98"} ] } ], "rateBasedRuleList":[ { "rateBasedRuleId":"7c968ef6-32ec-4fee-96cc-51198e412e7f", "limitKey":"IP", "maxRateAllowed":100 }, { "rateBasedRuleId":"462b169-2083-4a93-bbd4-08851a9aaf30", "limitKey":"IP", "maxRateAllowed":100 } ], "nonTerminatingMatchingRules":[ {"action" : "COUNT", "ruleId" : "4659b181-2011-4a91-bbd4-08851a9aaf52"} ], "httpRequest":{ "clientIp":"192.10.23.23", "country":"US", "headers":[ { "name":"Host", "value":"127.0.0.1:1989" }, { "name":"User-Agent", "value":"curl/7.51.2" }, { "name":"Accept", "value":"*/*" } ], "uri":"REDACTED", "args":"usernam=abc", "httpVersion":"HTTP/1.1", "httpMethod":"GET", "requestId":"cloud front Request id" } }

下面是对这些日志中列出的各个项的说明:

时间戳

时间戳,以毫秒为单位。

formatVersion

日志的格式版本。

webaclId

Web ACL 的 GUID。

terminatingRuleId

终止请求的规则的 ID。如果没有任何情况会终止请求,则值为 Default_Action

terminatingRuleType

终止请求的规则的类型。可能的值:RATE_BASED、REGULAR 和 GROUP。

action

操作。终止规则的可能值为:ALLOW 和 BLOCK。COUNT 不是终止规则的有效值。

terminatingRuleMatch详情

有关与请求匹配的终止规则的详细信息。终止规则具有针对 Web 请求结束检查过程的操作。终止规则的可能操作是 ALLOW 和 BLOCK。这仅适用于 SQL 注入和跨站点脚本 (XSS) 匹配规则语句。与所有用于检查多个事物的规则语句一样, Amazon WAF 对第一个匹配应用操作并停止检查 Web 请求。除了日志中报告的威胁之外,具有终止操作的 Web 请求还可能包含其他威胁。

httpSourceName

请求的源。可能的值:CF(如果来源是亚马逊 CloudFront)、APIGW(如果来源是 Amazon API Gateway)和 ALB(如果来源是 Application Load Balancer)。

httpSourceId

源 ID。此字段显示关联的亚马逊 CloudFront 分配的 ID、API Gateway 的 REST API 或应用程序负载均衡器的名称。

ruleGroupList

对此请求进行操作的规则组的列表。在前面的代码示例中,只有一个。

ruleGroupId

规则组的 ID。如果规则阻止了请求,则 ruleGroupID 的 ID 与 terminatingRuleId 的 ID 相同。

terminatingRule

规则组中终止了请求的规则。如果这是非空值,它还会包含 ruleidaction。在这种情况下,操作将始终为 BLOCK。

nonTerminatingMatching规则

规则组中与请求匹配的规则列表。这些规则将始终为 COUNT 规则(匹配的非终止规则)。

操作(nonTerminatingMatching规则组)

它将始终为 COUNT(匹配的非终止规则)。

规则 ID(规则组)nonTerminatingMatching

规则组中与请求匹配并且为非终止规则的 ID。即 COUNT 规则。

excludedRules

规则组中您排除的规则的列表。这些规则的操作设置为 COUNT。

exclusionType(excludedRules 组)

一种类型,指示排除的规则具有操作 COUNT。

ruleId(excludedRules 组)

规则组中排除的规则的 ID。

rateBasedRule清单

对请求执行操作的基于速率的规则列表。

rateBasedRule我是

作用于请求的基于速率的规则的 ID。如果这已终止请求,则 rateBasedRuleId 的 ID 与 terminatingRuleId 的 ID 相同。

limitKey

Amazon WAF 用于确定请求是否可能来自单一来源并因此受到速率监控的字段。可能的值:IP。

maxRateAllowed

在五分钟内允许的最大请求数,具有与 limitKey 所指定的字段相同的值。如果请求数超过,maxRateAllowed并且还满足了规则中指定的其他谓词,则会 Amazon WAF 触发为此规则指定的操作。

httpRequest

关于请求的元数据。

clientIp

发送请求的客户端的 IP。

country

请求的源国家/地区。 Amazon WAF 如果无法确定原产国,则会将此字段设置为-

标头

标头的列表。

uri

请求的 URI。上述代码示例演示在编辑了此字段时应具有的值。

args

查询字符串。

httpVersion

HTTP 版本。

httpMethod

请求中的 HTTP 方法。

requestId

请求的 ID。