跳至内容

如何使用 AWS WAF 阻止不含用户代理标头的 HTTP 请求?

2 分钟阅读
0

我想使用 AWS WAF 来限制请求中不包含特定用户代理值的 HTTP 请求。或者,限制包含特定用户代理标头值的请求。

简短描述

默认情况下,AWS WAF 筛选器不检查 HTTP 请求是否包含参数。要使用 AWS WAF 基于用户代理标头阻止 HTTP 请求,请执行以下操作之一:

  • 使用 AWS 托管规则阻止不包含用户代理标头的请求。
  • 使用自定义规则阻止不包含用户代理标头的请求。
  • 使用自定义规则阻止包含特定用户代理标头的请求。

解决方法

使用 AWS 托管规则阻止不包含用户代理标头的请求

如果您使用适用于 AWS WAF 的 AWS 托管规则,则无需编写自己的规则。

**注意:**AWS 托管规则受版本更改和过期限制。有关详细信息,请参阅在 AWS WAF 中使用版本控制的托管规则组

NoUserAgent_HEADER 规则用于检查不包含 HTTP 用户代理标头的请求。SignalNonBrowserUserAgent 规则用于检查疑似不是来自 Web 浏览器的用户代理字符串,包括不含用户代理的请求。

将 AWS 托管规则组添加到 Web ACL

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 AWS WAF
  3. 选择 Resources & protection packs(资源和保护包)。
  4. 找到您的保护包,然后选择 Rules(规则)旁边的 View and edit(查看和编辑)。
  5. 在右侧窗格中,选择 Add rules(添加规则)。
    选择 AWS-managed rule group(AWS 托管规则组),然后单击 Next(下一步)。
  6. 选择要添加的规则组。
  7. 选择 Add to web ACL(添加到 Web ACL)。
    **注意:**对于 Core rule set(Core 规则集),选择 Add to web ACL(添加到 Web ACL)。Core rule set(Core 规则集)包含 NoUserAgent_HEADER 规则。
  8. 选择 Create rule(创建规则)。

编辑 Web ACL 中的现有 AWS 托管规则组

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 AWS WAF
  3. 选择 Resources & protection packs(资源和保护包)。
  4. 找到您的保护包,然后选择 Rules(规则)旁边的 View and edit(查看和编辑)。
  5. 在右侧窗格中,选择您的 AWS Managed Rule Group(AWS 托管规则组)。
  6. Rule Overrides(规则覆盖)部分中,您可以编辑设置。
    **注意:**有关编辑设置的详细信息,请参阅使用托管规则组
  7. 选择 Save Rule(保存规则)。

如果您在使用 AWS 托管规则组时遇到误报,请参阅适用于 AWS WAF 的 AWS 托管规则

使用自定义规则阻止不包含用户代理标头的请求

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 AWS WAF
  3. 选择 Resources & protection packs(资源和保护包)。
  4. 找到您的保护包,然后选择 Rules(规则)旁边的 View and edit(查看和编辑)。
  5. 在右侧窗格中,选择 Add rules(添加规则)。
    选择 Custom rule(自定义规则),然后单击 Next(下一步)。
    再次选择 Custom rule(自定义规则),然后单击 Next(下一步)。
  6. 将规则 Action(操作)设置为 BLOCK(阻止)。
  7. 输入您的 Rule name(规则名称)。
  8. 对于 If a request(如果请求),展开下拉列表并选择 does not match the statement (NOT)(与语句不匹配 (NOT))。
  9. 对于 Inspect(检查),选择 Single header(单个标头)。
  10. NOT Statement(NOT 语句)下,完成以下操作:
    对于 Header field name(标头字段名称),输入字段的名称。例如,User Agent(用户代理)。
    对于 Match type(匹配类型),选择 Size greater than(大小大于)。
    对于 Size in bytes(大小(以字节为单位)),输入 0
    (可选)选择 Text transformation(文本转换)或 None(无)。
  11. 选择 Create Rule(创建规则)。
  12. (可选)要设置规则优先级,请在右侧窗格中选择 Edit Rule Order(编辑规则顺序),然后更新优先级。有关详细信息,请参阅设置规则优先级
    **注意:**规则按其出现的顺序应用。
  13. 选择 Save Rule Order(保存规则顺序)。

使用自定义规则阻止包含特定用户代理标头的请求。

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 AWS WAF
  3. 选择 Resources & protection packs(资源和保护包)。
  4. 找到您的保护包,然后选择 Rules(规则)旁边的 View and edit(查看和编辑)。
  5. 在右侧窗格中,选择 Add rules(添加规则)。
    选择 Custom rule(自定义规则),然后单击 Next(下一步)。
    再次选择 Custom rule(自定义规则),然后单击 Next(下一步)。
  6. 将规则 Action(操作)设置为 BLOCK(阻止)。
  7. 输入您的 Rule name(规则名称)。
  8. 对于 If a request(如果请求),展开下拉列表并选择 matches the statement(与语句相匹配)。
  9. 对于 Inspect(检查),选择 Single header(单个标头)。
  10. Statement(语句)下,配置以下设置:
    对于 Header field name(标头字段名称),输入字段的名称。例如,User Agent(用户代理)。
    对于 Match type(匹配类型),请选择 Contains string(包含字符串)。
    对于 String to match(要匹配的字符串),输入要阻止的用户代理。
    (可选)选择 Text transformation(文本转换)或选择 None(无)。
  11. 选择 Create Rule(创建规则)。
  12. (可选)要设置规则优先级,请在右侧窗格中选择 Edit Rule Order(编辑规则顺序),然后更新优先级。有关详细信息,请参阅设置规则优先级
    **注意:**规则按其出现的顺序应用。
  13. 选择 Save Rule Order(保存规则顺序)。
AWS 官方已更新 9 个月前