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

上次更新时间:2019 年 12 月 6 日

我想阻止没有用户代理标头或用户代理标头值为空的 HTTP 请求。如何使用 AWS WAF 阻止这些请求?

简短描述

默认情况下,AWS WAF 筛选条件不会检查 HTTP 请求参数。但是,您可以创建具有下列任意一项条件的规则来检查 HTTP 请求:

解决方法

方法 1:创建具有正则表达式匹配条件的规则

首先创建正则表达式匹配条件:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择字符串和正则表达式匹配
  3. 选择创建条件
  4. 对于名称,输入 UA-condition
  5. 对于区域,请选择您创建 Web 访问控制列表 (Web ACL) 的区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择全球
  6. 对于类型,请选择正则表达式匹配
  7. 对于要筛选的请求部分,请选择标头
  8. 对于标头,请选择用户代理
  9. 对于转换,请选择
  10. 对于要匹配请求的正则表达式模式,请保留创建正则表达式模式集的默认选择。
  11. 对于新模式集名称,请输入 testpattern
  12. 输入一个正则表达式 .+  并选择加号(+)。
    注意: 正则表达式与除行终止符之外的任何字符匹配。
  13. 选择创建模式集并添加筛选条件
  14. 选择创建

然后创建一条规则并添加条件:

  1. 在导航窗格中选择规则
  2. 选择创建规则
  3. 对于名称,请输入 UA-Rule
    注意:根据您在“名称”字段的输入,Amazon CloudWatch 指标名称将会自动填充。
  4. 对于规则类型,请选择常规规则
  5. 对于区域,请选择您创建 Web ACL 的区域。
    注意:如果您的 Web ACL 是为 CloudFront 设置的,请选择全球
  6. 对于添加条件,请选择不匹配至少匹配字符串匹配条件中的一个筛选条件
  7. 从条件下拉菜单中选择 UA-condition
  8. 选择创建

最后将此规则添加到您的 Web ACL:

  1. 在导航窗格中选择 Web ACL
  2. 选择您的 Web ACL 的名称。
  3. 选择规则选项卡,然后选择编辑 Web ACL
  4. 对于规则,请选择 UA-Rule
  5. 选择将规则添加到 Web ACL
  6. 对于操作,确认已选择阻止
  7. 对于默认操作,请选择允许不匹配任何规则的所有请求
  8. 选择更新

方法 2:创建具有大小约束条件的规则

注意:默认情况下,每个账户的模式集数量为 5。如果您已超出此 AWS WAF 限制,可以使用以下大小约束解决方法。

首先,创建“大小约束条件”:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中选择大小约束
  3. 选择创建条件
  4. 对于名称,输入 UA-condition2
  5. 对于区域,请选择您创建 Web ACL 的区域。
    注意:如果您的 Web ACL 是为 CloudFront 设置的,请选择全球
  6. 对于要筛选的请求部分,请选择标头
  7. 对于标头,请输入用户代理
  8. 对于比较运算符,请选择大于或等于
  9. 对于大小(字节),保留默认值 0
  10. 对于转换,请选择
  11. 选择添加筛选条件
  12. 选择创建

然后创建一条规则并添加条件:

  1. 在导航窗格中选择规则
  2. 选择创建规则
  3. 对于名称,请输入 UA-Rule2
    注意:根据您在“名称”字段的输入,CloudWatch 指标名称将会自动填充。
  4. 对于规则类型,请选择常规规则
  5. 对于区域,请选择您创建 Web ACL 的区域。
    注意:如果您的 Web ACL 是为 CloudFront 设置的,请选择全球
  6. 对于添加条件,请选择不匹配至少匹配大小约束条件中的一个筛选条件
  7. 从条件下拉菜单中选择 UA-condition2
  8. 选择创建

最后将此规则添加到您的 Web ACL:

  1. 在导航窗格中选择 Web ACL
  2. 选择您的 Web ACL 的名称。
  3. 选择规则选项卡,然后选择编辑 Web ACL
  4. 对于规则,请选择 UA-Rule
  5. 选择将规则添加到 Web ACL
  6. 对于操作,确认已选择阻止
  7. 对于默认操作,请选择允许不匹配任何规则的所有请求
  8. 选择更新

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?