保护 CloudFront 发行版的常见用例 Amazon WAF - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

保护 CloudFront 发行版的常见用例 Amazon WAF

以下 Amazon WAF 功能在所有 CloudFront 发行版中的作用方式相同。在每个功能场景后面列出了多租户分配的注意事项。

Amazon WAF 与 CloudFront 自定义错误页面一起使用

默认情况下,当根据您指定的条件 Amazon WAF 阻止 Web 请求时,它会403 (Forbidden)向查看者返回 HTTP 状态码 CloudFront,并将该状态代码 CloudFront 返回给查看者。然后,查看器显示简要且采用稀疏格式的默认消息,如下所示:

Forbidden: You don't have permission to access /myfilename.html on this server.

您可以通过定义自定义响应来覆盖您的 Amazon WAF Web ACL 规则中的此行为。有关使用 Amazon WAF 规则自定义响应行为的更多信息,请参阅为发送自定义回复 Block actions

注意

使用 Amazon WAF 规则自定义的响应优先于您在 CloudFront 自定义错误页面中定义的任何响应规范。

如果您希望通过 CloudFront显示自定义错误消息(可能使用与网站其余部分相同的格式),则可以配置 CloudFront 为向查看者返回包含自定义错误消息的对象(例如 HTML 文件)。

注意

CloudFront 无法区分您的来源返回的 HTTP 状态码 403 和请求被阻止 Amazon WAF 时返回的 HTTP 状态码 403。这意味着,您无法根据 HTTP 状态代码 403 的不同原因返回不同的自定义错误页面。

有关 CloudFront 自定义错误页面的更多信息,请参阅 Amazon CloudFront 开发者指南中的生成自定义错误响应

多租户分布中的自定义错误页面

对于 CloudFront 多租户分发,您可以通过以下方式配置自定义错误页面:

  • 在多租户级别-这些设置适用于使用多租户分配模板的所有租户分配

  • 通过 Amazon WAF 规则-在 Web 中定义的自定义响应 ACLs 优先于多租户分布和租户级自定义错误页面

Amazon WAF 与一起 CloudFront 用于在您自己的 HTTP 服务器上运行的应用程序

Amazon WAF 与一起使用时 CloudFront,您可以保护在任何 HTTP 网络服务器上运行的应用程序,无论是在亚马逊弹性计算云 (Amazon EC2) 中运行的网络服务器,还是您私下管理的网络服务器。您也可以配置 CloudFront 为要求在 CloudFront 和您自己的 Web 服务器之间以及查看者和 CloudFront之间使用 HTTPS。

需要在 CloudFront 和你自己的网络服务器之间使用 HTTPS

要要求在 CloudFront 和您自己的网络服务器之间使用 HTTPS,您可以使用 CloudFront 自定义源功能,并为特定来源配置源协议策略和源域名设置。在您的 CloudFront 配置中,您可以指定服务器的 DNS 名称以及从源中获取对象时 CloudFront 要使用的端口和协议。您还应确保自定义源服务器上的 SSL/TLS 证书与您配置的源域名相匹配。在以外使用自己的 HTTP Web 服务器时 Amazon,必须使用由受信任的第三方证书颁发机构 (CA) 签名的证书,例如 Comodo 或 Symante DigiCert c。有关要求在 CloudFront 和您自己的网络服务器之间进行通信时需要 HTTPS 的更多信息,请参阅《亚马逊 CloudFront 开发者指南》中的 “需要使用 HTTPS 才能 CloudFront 与您的自定义源进行通信” 主题。

要求在查看者和之间使用 HTTPS CloudFront

要要求在查看者和之间使用 HTTPS CloudFront,您可以更改 CloudFront 分配中一个或多个缓存行为的查看者协议策略。有关在观看者和之间使用 HTTPS 的更多信息 CloudFront,请参阅 Amazon CloudFront 开发者指南 CloudFront中的 “观看者之间需要使用 HTTPS 才能进行通信” 主题。例如,您也可以自带 SSL 证书,以便查看者可以使用自己的域名通过 HTTPS 连接到您的 CloudFront 发行版https://www.mysite.com。有关更多信息,请参阅 Amazon CloudFront 开发者指南中的配置备用域名和 HTTPS 主题。

对于多租户分发,HTTP 方法配置遵循以下层次结构:

  • 模板级别的设置定义了允许所有租户分配使用的基准 HTTP 方法

  • 租户分配可以将这些设置替换为:

    • 允许的方法少于多租户分配(使用 Amazon WAF 规则阻止其他方法)

    • 如果将多租户分配配置为支持这些方法,则允许使用更多方法

  • Amazon WAF 无论配置如何,多租户分布和租户级别的规则都可以进一步限制 HTTP 方法 CloudFront

选择 CloudFront 响应的 HTTP 方法

创建 Amazon CloudFront 网络分配时,您可以选择要 CloudFront 处理的 HTTP 方法并将其转发到您的来源。可从以下选项中进行选择:

  • GETHEAD— 您 CloudFront 只能使用从原点获取对象或获取对象标题。

  • GET,HEAD, OPTIONS — 您 CloudFront 只能使用从您的来源获取对象、获取对象标头或检索源服务器支持的选项列表。

  • GETHEADOPTIONSPUTPOSTPATCH、、DELETE — 您可以使用获 CloudFront 取、添加、更新和删除对象以及获取对象标题。此外,您可以执行其他 POST 操作,例如从 Web 表格提交数据。

您还可以使用 Amazon WAF 字节匹配规则语句来允许或阻止基于 HTTP 方法的请求,如中所述字符串匹配规则语句。如果您想使用 CloudFront 支持的方法组合,例如GETHEAD,则无需配置 Amazon WAF 以阻止使用其他方法的请求。如果要允许组合 CloudFront 不支持的方法,例如GETHEADPOST、和,则可以配置 CloudFront 为响应所有方法,然后使用 Amazon WAF 来阻止使用其他方法的请求。

有关选择 CloudFront 响应方法的更多信息,请参阅《Amazon CloudFront 开发者指南》中 “您在创建或更新 Web 分配时指定的值” 主题中的 “允许的 HTTP 方法”。

多租户分发中允许的 HTTP 方法配置

对于多租户分发,默认情况下,在多租户分布级别设置的 HTTP 方法配置适用于所有租户分配。如果需要,租户分配可以覆盖这些设置。

  • 如果要使用 CloudFront 支持的方法组合,例如GETHEAD,则无需配置 Amazon WAF 以阻止使用其他方法的请求。

  • 如果要允许使用默认情况下 CloudFront 不支持的方法组合,例如GETHEADPOST、和,则可以配置 CloudFront 为响应所有方法,然后使用 Amazon WAF 来阻止使用其他方法的请求。

在多租户分布中实现安全标头时,请考虑以下几点:

  • 模板级安全标头为所有租户分布提供基准保护

  • 租户分配可以:

    • 添加未在多租户分配中定义的新安全标头

    • 修改租户专用标头的值

    • 无法删除或覆盖在多租户分发级别设置的安全标头

  • 考虑使用多租户分布级标头进行应适用于所有租户的关键安全控制

日志注意事项

标准版和多租户分发版都支持 Amazon WAF 日志记录,但是日志的结构和管理方式有重要区别:

日志比较
标准分布 多租户分发
每个分发一个日志配置 模板和租户级别的日志记录选项
标准日志字段 其他租户标识符字段
每个分发只有一个目的地 可以将多租户分发和租户日志分发到不同的目的地

其他资源

  • 要了解有关多租户分配的更多信息,请参阅 Amazon CloudFront 开发者指南中的配置分配

  • 要了解有关 Amazon WAF 与一起使用的更多信息 CloudFront,请参阅《Amazon CloudFront 开发者指南》中的使用 Amazon WAF 保护

  • 要了解有关 Amazon WAF 日志的更多信息,请参阅Web ACL 流量的日志字段