跳至内容

如何清理 AWS WAF 日志记录?

2 分钟阅读
0

我想在 AWS WAF 中记录被阻止的请求。但是,我不想记录我的保护包分析的所有请求。

简短描述

借助 AWS WAF 日志筛选功能,您可以对记录的 Web 请求进行筛选,仅保留要分析的信息。您可以指定 Web 请求在完成检查后是被记录还是从日志中丢弃。这可以节省日志传输和存储成本,因为 AWS WAF 仅发布您所需的日志。

要筛选 AWS WAF 日志,首先请启用 AWS WAF 日志记录

要清理日志,请实施字段脱敏和日志筛选。

**字段脱敏:**对您希望排除在日志之外的请求部分进行脱敏。您可以从日志记录中省略以下字段: URI 路径查询字符串单个标头HTTP 方法。脱敏后的字段在日志中显示为 REDACTED

**日志筛选:**指定筛选条件,根据规则操作或规则在评估期间生成的标签来筛选日志条目。要针对包含某个标签的所有请求筛选 AWS WAF 日志,您需要包含所有使用完全限定标签名称的标签。请使用以下格式:awswaf:account_number:webacl:webacl_name:namespace:label name

**注意:**使用 AWS 日志筛选功能无需额外付费。但是,日志记录目标会产生费用。这包括 Amazon CloudWatchAmazon Simple Storage Service (Amazon S3) 存储桶Amazon Data Firehose 传输流

使用 AWS WAF 控制台启用 AWS WAF 日志筛选

  1. 打开 AWS WAF 控制台
  2. 对于 Region(区域),选择您创建了保护包的 AWS 区域。
  3. 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
  4. 在保护包的右侧,选择区域名称旁边的图标以选择保护包。
  5. 在您选择的保护包中,选择 Logging(日志记录)。
  6. 选择日志记录旁边的 View and edit(查看和编辑),查看或修改与此保护包关联的日志记录配置。
  7. Data protection settings(数据保护设置)下,选择 active(启用)。
  8. Scope(范围)下,选择 Logging destination only(仅限日志记录目标)。
  9. 选择目标类型和 Cloudwatch 日志组。
  10. 对于 Redacted Fields(脱敏字段),请选择要从日志中删除的字段。
    **注意:**如果要对单个标头字段进行脱敏,请指定自定义标头。
  11. 对于 Filter conditions(筛选条件),选择 Rule Action on request(对请求执行的规则操作)或 Request has label(请求有标签)。
    对于 Rule Action on request(对请求执行的规则操作),选择用于筛选 AWS WAF 日志的规则操作。例如: 允许、阻止、计数、CAPTCHA 或质询。
    对于 Request has label(请求有标签),请输入在评估请求时添加到 AWS WAF 的标签
  12. 对于 Filter behavior(筛选行为),选择 Keep in logs(保留在日志中)或 Drop from logs(从日志中删除)。
  13. 对于“保留在日志中”或“从日志中删除”,选择默认的日志记录行为。
  14. 选择 Save(保存)。

使用 AWS 命令行界面 (AWS CLI) 启用 AWS WAF 日志筛选

**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

  1. 要获取当前的日志记录配置,请运行 get-logging-configuration
    aws wafv2 get-logging-configuration --region region--resource-arn arn:aws:wafv2:region:account_number:regional/webacl/webacl_name/webacl_id > waf.json
    **注意:**将 region 替换为您的 Web ACL 所在的 AWS 区域,将 resource-arn 替换为您的 Web ACL 的 Amazon 资源名称 (ARN),将 webacl_name 替换为您的 Web ACL 的名称。
  2. 打开日志记录配置文件,然后添加以下 JSON 过滤器:
    "LoggingFilter": {
        "DefaultBehavior": "string",
        "Filters": [
        {
            "Behavior": "string",
            "Conditions": [
                {
                    "ActionCondition": {
                    "Action": "string"
                    },
                    "LabelNameCondition": {
                    "LabelName": "string"
                    }
                }
            ],
            "Requirement": "string"
        }
    ]
    }
    **注意:**将筛选条件和筛选操作替换为您所需的筛选条件。
  3. 要更新您的日志记录配置,请运行 put-logging-configuration
    aws wafv2 put-logging-configuration --region region --cli-input-json file://waf.json
    **注意:**将 region 替换为您的 Web ACL 所在区域。

仅记录被阻止的请求

如需仅记录被 AWS WAF 阻止的请求,请选择基于 Rule Action(规则操作)的筛选,然后将操作设置为 Block(阻止)。Block(阻止)是 AWS WAF 中的一项终止操作。AWS WAF 日志筛选会检查 AWS WAF 日志条目的终止规则操作。如果操作为 Block(阻止),则 AWS WAF 日志筛选会将该条目添加到日志中。

记录来自规则组的计数请求

规则组中规则的设置方式决定了日志是否会筛选计数请求。

**规则组中规则的操作设置为 Count(计数):**与此规则匹配的请求日志不包含 Count(计数)操作。相反,AWS WAF 日志会在 excludedRules 字段下显示此规则。AWS WAF 在按 Count(计数)筛选日志时不会检查此字段。这意味着这些请求不会被 Count(计数)操作的日志筛选条件筛选出来。

**包含非终止操作“计数”的规则与终止规则操作(例如“允许”或“阻止”)一起检查时:**AWS WAF 日志会将这些请求包含在按 Count(计数)操作筛选的日志中。

规则组中规则的操作设置为 Override to Count(覆盖为计数): 对于这些请求,AWS WAF 日志会在 nonTerminatingMatchingRules 字段中包含 Count(计数)操作。AWS WAF 日志筛选会检查此字段,因此该规则会按 Count(计数)操作进行筛选。

**注意:**EXCLUDED_AS_COUNT 是日志筛选的有效操作类型。运行 put-logging-configuration 命令来配置此操作。

相关信息

LoggingFilter

使用更新的控制台体验

记录 AWS WAF 保护包或 Web ACL 流量

AWS 官方已更新 1 年前