我想限制不包含特定用户代理或请求中包含特定用户代理标头值的 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
-
打开 AWS WAF 控制台。
-
在导航窗格中的 AWS WAF 下,选择 Web ACL。
-
对于区域,选择在其中创建了 Web ACL 的 AWS 区域。
**注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 Global(全球)。
-
选择您的 Web ACL。
-
选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add managed rule groups(添加托管规则组)。
-
展开 AWS managed rule groups(AWS 托管规则组)部分。
-
找到规则组并打开 Add to web ACL(添加到 Web ACL)。
例如,您可以启用 Add to web ACL(添加到 Web ACL),来添加包含 NoUserAgent_HEADER 规则的 Core rule set(Core 规则集)。
-
(可选)选择 Edit(编辑)以查看和修改规则组的设置。
-
选择 Add rules(添加规则)。
-
选择 Save(保存)。
Web ACL 中的现有 AWS 托管规则组
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于区域,选择在其中创建了 Web ACL 的 AWS 区域。
**注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 Global(全球)。
- 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Edit(编辑)以查看和修改设置。
**注意:**有关编辑设置的更多信息,请参阅 Working with managed rule groups。
- 完成编辑后,选择 Save(保存)。
如果您在使用 AWS 托管式规则组时遇到误报情况,请参阅 AWS Managed Rules for AWS WAF。
使用自定义规则阻止不包含用户代理标头的请求
要使用自定义规则阻止不包含用户代理标头的请求,请执行以下操作:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于区域,选择已创建 Web ACL 的 AWS 区域。
**注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 Global(全球)。
- 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Add Rules, Add my own rules and rule groups(添加规则、添加我自己的规则和规则组)。
- 对于 Rule type(规则类型),选择 Rule Builder(规则生成器)。
- 对于 Name(名称),输入名称以标识此规则。
- 对于 Type(类型),选择 Regular rule(常规规则)。
- 对于如果请求,则选择与语句不匹配 (NOT)。
- 在 Statement(语句)上,对于 Inspect(检查),选择 Single header(单标头)。
对于 Header field name(标头字段名称),输入字段的名称。例如: 用户代理。
对于 Match type(匹配类型),选择 Size greater than(大小大于)。
对于大小 (以字节为单位),输入 0(零)。
(可选)选择文本转换或选择无。
- 对于操作,选择阻止。
- 选择添加规则。
- (可选)对于设置规则优先级,选择您的规则并移动其优先级。规则将按照出现的顺序进行处理。有关详细信息,请参阅 Processing order of rules and rule groups in a web ACL。
- 选择 Save(保存)。
如果请求包含使用自定义规则的特定用户代理,则阻止流量
要在请求包含使用自定义规则的特定用户代理时阻止流量,请执行以下操作:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于区域,选择已创建 Web ACL 的 AWS 区域。
**注意:**如果为 Amazon CloudFront 设置了 Web ACL,请选择 Global(全球)。
- 选择您的 Web ACL。
- 选择 Rules(规则),然后选择 Add Rules, Add my own rules and rule groups(添加规则、添加我自己的规则和规则组)。
- 对于 Rule type(规则类型),选择 Rule Builder(规则生成器)。
- 对于 Name(名称),输入名称以标识此规则。
- 对于 Type(类型),选择 Regular rule(常规规则)。
- 对于 If a request(如果请求),选择 matches a statement(匹配语句)。
- 在 Statement(语句)上,对于 Inspect(检查),选择 Single header(单标头)。
对于 Header field name(标头字段名称),输入字段的名称。例如: 用户代理。
对于 Match type(匹配类型),选择 Contains string(包含字符串)。
对于 String to match(要匹配的字符串),输入要阻止的特定用户代理的值。
(可选)选择文本转换或选择无。
- 对于操作,选择阻止。
- 选择添加规则。
- (可选)对于设置规则优先级,选择您的规则并移动其优先级。规则将按照出现的顺序进行处理。有关详细信息,请参阅 Processing order of rules and rule groups in a web ACL。
- 选择 Save(保存)。