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

上次更新日期:2022 年 7 月 27 日

我想限制不包含特定用户代理或请求中包含特定用户代理标头值的 HTTP 请求。

简短描述

默认情况下,AWS WAF 筛选器不检查 HTTP 请求是否包含参数。要检查是否存在 HTTP 请求参数,请执行以下操作:

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

–或者–

阻止不包含用户代理标头的请求,如果请求包含使用自定义规则的特定用户代理,则阻止流量。

解决方法

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

使用适用于 AWS WAF 的 AWS 托管式规则,阻止不包含用户代理标头的 HTTP 请求,而无需编写自己的规则。

注意:托管式规则受版本更改和过期限制。有关更多信息,请参阅处理托管式规则组版本的最佳实践

以下规则用于检查缺少 HTTP 用户代理标头的请求,以及似乎不是来自 Web 浏览器的用户代理字符串的请求:

NoUserAgent_HEADER
此规则来源于核心规则集(CRS)托管式规则组。此规则用于检查缺少 HTTP 用户代理标头的请求。

SignalNonBrowserUserAgent
此规则来源于 AWS WAF Bot Control 规则组。此规则用于检查似乎不是来自 Web 浏览器的用户代理字符串,包括没有用户代理的请求。

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

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add managed rule groups(添加托管规则组)。
  6. 展开 AWS managed rule groups(AWS 托管规则组)部分。
  7. 找到规则组并打开 Add to web ACL(添加到 Web ACL)。
    例如,您可以启用 Add to web ACL(添加到 Web ACL),来添加包含 NoUserAgent_HEADER 规则的 Core rule set(Core 规则集)。
  8. (可选)选择 Edit(编辑)以查看和修改规则组的设置。
  9. 选择 Add rules(添加规则)。
  10. 选择 Save(保存)。

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

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Edit(编辑)以查看和修改设置。
    注意:有关编辑设置的更多信息,请参阅使用托管式规则组
  6. 完成编辑后,选择 Save(保存)。

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

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

要使用自定义规则阻止不包含用户代理标头的请求,请执行以下操作:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules, Add my own rules and rule groups(添加规则、添加我自己的规则和规则组)。
  6. 对于 Rule type(规则类型),选择 Rule Builder(规则生成器)。
  7. 对于 Name(名称),输入用于标识此规则的名称。
  8. 对于 Type(类型),选择 Regular rule(常规规则)。
  9. 对于 If a request(如果请求),选择 doesn’t match the statement(NOT)(与语句不匹配(NOT))。
  10. Statement(语句)上,对于 Inspect(检查),选择 Single header(单标头)。
    对于 Header field name(标头字段名称),输入字段的名称。例如:User-Agent(用户代理)。
    对于 Match type(匹配类型),选择 Size greater than(大小大于)。
    对于 Size in bytes(大小(以字节为单位)),请输入 0(零)。
    (可选)选择 Text transformation(文本转换)或选择 None(无)。
  11. 对于 Action(操作),选择 Block(阻止)。
  12. 选择 Add Rule(添加规则)。
  13. (可选)对于 Set Rule Priority(设置规则优先级),请选择您的规则并移动其优先级。规则将按照出现的顺序进行处理。有关更多信息,请参阅 Web ACL 中规则和规则组的处理顺序
  14. 选择 Save(保存)。

如果请求包含使用自定义规则的特定用户代理,则阻止流量

要在请求包含使用自定义规则的特定用户代理时阻止流量,请执行以下操作:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules, Add my own rules and rule groups(添加规则、添加我自己的规则和规则组)。
  6. 对于 Rule type(规则类型),选择 Rule Builder(规则生成器)。
  7. 对于 Name(名称),输入用于标识此规则的名称。
  8. 对于 Type(类型),选择 Regular rule(常规规则)。
  9. 对于 If a request(如果请求),选择 matches a statement(与语句匹配)。
  10. Statement(语句)上,对于 Inspect(检查),选择 Single header(单标头)。
    对于 Header field name(标头字段名称),输入字段的名称。例如:User-Agent(用户代理)。
    对于 Match type(匹配类型),选择 Contains string(包含字符串)。
    对于 String to match(要匹配的字符串),输入要阻止的特定用户代理的值。
    (可选)选择 Text transformation(文本转换)或选择 None(无)。
  11. 对于 Action(操作),选择 Block(阻止)。
  12. 选择 Add Rule(添加规则)。
  13. (可选)对于 Set Rule Priority(设置规则优先级),请选择您的规则并移动其优先级。规则将按照出现的顺序进行处理。有关更多信息,请参阅 Web ACL 中规则和规则组的处理顺序
  14. 选择 Save(保存)。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?