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

3 分钟阅读
0

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

简短描述

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

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

-或-

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

解决方案

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

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

**注意:**托管式规则受版本更改和过期限制。有关更多信息,请参阅 Best practices for handling managed rule group versions

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

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

SignalNonBrowserUserAgent
此规则来源于 AWS WAF 机器人控制功能规则组。此规则用于检查疑似不是来自 Web 浏览器的用户代理字符串,包括没有用户代理的请求。

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

  1. 打开 AWS WAF 控制台

  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL

  3. 对于区域,选择在其中创建了 Web ACL 的 AWS 区域。
    **注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 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. 对于区域,选择在其中创建了 Web ACL 的 AWS 区域。
    **注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Edit(编辑)以查看和修改设置。
    **注意:**有关编辑设置的更多信息,请参阅 Working with managed rule groups
  6. 完成编辑后,选择 Save(保存)。

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

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

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

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于区域,选择已创建 Web ACL 的 AWS 区域。
    **注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 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. 对于如果请求,则选择与语句不匹配 (NOT)
  10. Statement(语句)上,对于 Inspect(检查),选择 Single header(单标头)。
    对于 Header field name(标头字段名称),输入字段的名称。例如: 用户代理
    对于 Match type(匹配类型),选择 Size greater than(大小大于)。
    对于
    大小 (以字节为单位)
    ,输入 0(零)。
    (可选)选择文本转换或选择
  11. 对于操作,选择阻止
  12. 选择添加规则
  13. (可选)对于设置规则优先级,选择您的规则并移动其优先级。规则将按照出现的顺序进行处理。有关详细信息,请参阅 Processing order of rules and rule groups in a web ACL
  14. 选择 Save(保存)。

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

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

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于区域,选择已创建 Web ACL 的 AWS 区域。
    **注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 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(标头字段名称),输入字段的名称。例如: 用户代理
    对于 Match type(匹配类型),选择 Contains string(包含字符串)。
    对于 String to match(要匹配的字符串),输入要阻止的特定用户代理的值。
    (可选)选择文本转换或选择
  11. 对于操作,选择阻止
  12. 选择添加规则
  13. (可选)对于设置规则优先级,选择您的规则并移动其优先级。规则将按照出现的顺序进行处理。有关详细信息,请参阅 Processing order of rules and rule groups in a web ACL
  14. 选择 Save(保存)。

AWS 官方
AWS 官方已更新 2 年前
没有评论