操作方法Amazon WAFClassic 作品 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

操作方法Amazon WAFClassic 作品

注意

这是Amazon WAFClassic文档中)。仅当 2019 年 11 月之前在 Amazon WAF 中创建了 Amazon WAF 资源(例如规则和 Web ACL),但尚未将这些资源迁移到最新版本时,才应使用此版本。要迁移您的资源,请参阅迁移您的Amazon WAFClassic 资源Amazon WAF

对于最新版本的Amazon WAF,请参阅Amazon WAF.

您使用Amazon WAFClassic 可控制 API Gateway、Amazon CloudFront 或应用 Application Load Balancer 如何响应 Web 请求。您首先需创建条件、规则和 Web 访问控制列表 (Web ACL)。您需要定义条件、将条件合并为规则并将规则合并为 Web ACL。

注意

您还可以使用Amazon WAFClassic,用于保护您在 Amazon Elastic Container Service (Amazon ECS) 容器中托管的应用程序。Amazon ECS 是一项高度可扩展的快速容器管理服务,它可轻松运行、停止和管理群集上的 Docker 容器。要使用此选项,请将亚马逊云服务器配置为使用Amazon WAFClassic 启用的应用程序负载均衡器可跨您的服务中的任务路由和保护 HTTP/HTTPS(第 7 层)流量。有关更多信息,请参阅服务负载均衡中的Amazon Elastic Container Service 开发者指南.

条件

条件定义您需要的基本特征Amazon WAFClassic 的 Web 请求:

  • 可能是恶意的脚本。攻击者会嵌入可以利用 Web 应用程序漏洞的脚本。这称为跨站点脚本

  • 请求源自的 IP 地址或地址范围。

  • 请求源自的国家/地区或地理位置。

  • 请求的指定部分的长度 (如查询字符串)。

  • 可能是恶意的 SQL 代码。攻击者会尝试通过在 Web 请求中嵌入恶意 SQL 代码从数据库提取数据。这称为 SQL 注入

  • 请求中出现的字符串,例如,在 User-Agent 标头中出现的值或是在查询字符串中出现的文本字符串。您还可以使用正则表达式 (regex) 指定这些字符串。

某些条件采用多个值。例如,您可以在 IP 条件中指定最多 10,000 个 IP 地址或 IP 地址范围。

Rule

您可将条件合并为规则,以精确锁定要允许、阻止或计数的请求。Amazon WAFClassic 提供了两种类型的规则:

常规规则

常规规则仅使用条件来锁定特定请求。例如,根据您发现的来自某个攻击者的最近请求,您可以创建一个规则,其中包含以下条件:

  • 请求来自 192.0.2.44。

  • 请求在 User-Agent 标头中包含值 BadBot

  • 请求表现为在查询字符串中包含类似 SQL 的代码。

当一个规则中包括多个条件时,如本例所示,Amazon WAFClassic 查找符合所有条件的请求-也就是说,它AND的条件一起使用。

将至少一个条件添加到常规规则。没有条件的常规规则无法匹配任何请求,因此永远不会触发规则的操作(允许、计数或阻止)。

基于速率的规则

基于速率的规则就像常规规则一样,具有额外的速率限制。基于速率的规则计算从满足规则条件的 IP 地址到达的请求。如果来自 IP 地址的请求在五分钟内超过速率限制,则该规则可能会触发操作。触发操作可能需要一两分钟的时间才能触发。

对于基于速率的规则而言,条件是可选的。如果未在基于速率的规则中添加任何条件,则速率限制适用于所有 IP 地址。如果将条件与速率限制组合在一起,则速率限制适用于与条件匹配的 IP 地址。

例如,基于您发现的来自某个攻击者的最近请求,您可以创建一个基于速率的规则,包含如下条件:

  • 请求来自 192.0.2.44。

  • 请求在 User-Agent 标头中包含值 BadBot

在此基于速率的规则中,您还定义了一个速率限制。在本例中,假设您创建了速率限制 1000。当请求既符合上述两个条件又超过每 5 分钟 1000 个请求的速率限制时,将触发在 Web ACL 中定义的该规则的操作(阻止或计数)。

不符合这两个条件的请求不计入速率限制,也不受此规则的影响。

又如,假设您希望将请求限定为网站上特定页面的请求。为此,您可以向基于速率的规则中添加以下字符串匹配条件:

  • Part of the request to filter onURI

  • Match Type (匹配类型)Starts with

  • Value to matchlogin

还要将 RateLimit 指定为 1000。

通过向 Web ACL 中添加此基于速率的规则,您可以将请求限制在登录页面,而不影响网站其余部分。

Web ACL

在您将条件合并为规则之后,您可将规则合并为 Web ACL。在其中可定义每个规则(允许、阻止或计数)的操作以及默认操作:

每个规则的操作

当 Web 请求匹配一个规则中的所有条件时,Amazon WAFClassic 可以阻止该请求,或者允许将该请求转发到 API Gateway API、CloudFront 分配或 Application Load Balancer。您可以指定所需的操作Amazon WAFClassic 为每个规则执行。

Amazon WAFClassic 按照规则列出的顺序,将请求与 Web ACL 中的规则进行比较。Amazon WAFClassic 随后执行与请求匹配的第一个规则关联的操作。例如,如果某个 Web 请求与允许请求的一个规则以及阻止请求的另一个规则匹配,Amazon WAFClassic 会根据先列出的规则允许或阻止该请求。

如果您要先测试新规则,然后再开始使用它,则还可以将Amazon WAFClassic:对满足规则的所有条件的请求进行计数。与允许或阻止请求的规则一样,对请求进行计数的规则受其在 Web ACL 的规则列表中的位置的影响。例如,如果一个 Web 请求匹配允许请求的规则,同时又匹配另一个对请求进行计数的规则,那么如果允许请求的规则先列出,则不对请求进行计数。

默认操作

默认操作确定Amazon WAFClassic 允许或阻止不匹配 Web ACL 中任何规则中所有条件的请求。例如,假设您创建一个 Web ACL,并仅添加您在前面定义的规则:

  • 请求来自 192.0.2.44。

  • 请求在 User-Agent 标头中包含值 BadBot

  • 请求表现为在查询字符串中包含恶意 SQL 代码。

如果某个请求不满足该规则中的所有三个条件,并且默认操作是ALLOW、Amazon WAFClassic 会将请求转发到 API Gateway、CloudFront 或应用 Application Load Balancer,服务会使用请求的对象进行响应。

如果您向 Web ACL 中添加两个或更多规则,Amazon WAFClassic 仅当有请求不满足任何规则中的所有条件时,Classic 才执行默认操作。例如,假设您添加另一个只包含一个条件的规则:

  • User-Agent 标头中包含值 BIGBadBot 的请求。

Amazon WAFClassic 仅当有请求既不满足第一个规则的所有三个条件,也不满足第二个规则的一个条件时,Classic 才执行默认操作。

在某些情况下,Amazon WAF可能会遇到内部错误,该错误会延迟对 Amazon API Gateway、Amazon CloudFront 或应 Application Load Balancer 有关是允许还是阻止请求的响应。在这些情况下,CloudFront 通常会允许请求或提供内容。API 网关和 Application Load Balancer 通常会拒绝请求,不提供内容。