Amazon WAF机器人控制示例:为被阻止的用户代理创建例外 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon WAF机器人控制示例:为被阻止的用户代理创建例外

如果某个机器人被错误阻止,您可以通过排除违规Amazon WAF机器人控制规则,然后将规则标签与例外条件组合起来。

以下规则使用 “机器人控制” 托管规则组,但更改了SignalNonBrowserUserAgent进行计数,方法是将其排除在正常规则组处理之外。信号规则像往常一样将其标签应用于匹配的请求,但只计算它们,而不是执行其通常的块操作。

{ "Name": "AWS-AWSBotControl-Example", "Priority": 5, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesBotControlRuleSet", "ExcludedRules": [ { "Name": "SignalNonBrowserUserAgent" } ] } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AWS-AWSBotControl-Example" } }

以下规则与前面的 Bot Control 排除规则添加到其匹配的 Web 请求中的信号标签相匹配。在信号请求中,此规则会阻止除拥有您希望允许的用户代理的所有请求。

以下规则必须在 Web ACL 处理顺序中之前的 “机器人控制” 托管规则组之后运行。

{ "Rule": { "Name": "match_rule", "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:signal:non_browser_user_agent" } }, { "NotStatement": { "Statement": { "ByteMatchStatement": { "FieldToMatch": { "SingleHeader": { "Name": "user-agent" } }, "PositionalConstraint": "EXACTLY", "SearchString": "TW96aWxsYS81LjAgQSBGcmllbmRseSBPbmU=", "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ] } } } } ] } }, "RuleLabels": [], "Action": { "Block": {} } } }