如何创建 AWS WAF 规则以防止 SQLi 和 XSS?

上次更新日期:2022 年 7 月 12 日

我想防止 SQL 注入 (SQLi) 和跨站脚本攻击(XSS)。AWS WAF 提供哪些选项来防止 SQLi 和 XSS 攻击?

简短描述

AWS WAF 提供以下保护措施来防止 SQLi 和 XSS 攻击:

  • 内置 SQLi 和 XSS 引擎
  • AWS 托管规则可用于 SQLi 和 XSS 注入攻击

要配置这些保护,请确保您已设置 AWS WAF 并创建了 Web ACL。

注意:AWS WAF 在检查正文、标头或 Cookie 请求组件时存在限制。有关更多信息,请参阅请求正文、标头和 Cookie 的检查

解决方法

重要提示:最佳做法是在 Action(操作)设置为 Count(计数)的情况下在非生产环境中测试规则。使用 Amazon CloudWatch 指标与 AWS WAF 采样请求或 AWS WAF 日志相结合,评估规则。如果您对规则执行您想要的操作感到满意,请将 Action(操作)更改为 Block(阻止)。

使用内置的 SQLi 和 XSS 引擎

攻击可以在 HTTP 请求的不同部分执行,例如 HTTP 标头、查询字符串或 URI。配置 AWS WAF 规则以根据内置缓解引擎检查 HTTP 请求的不同部分。

SQLi 攻击规则语句

创建 SQL 注入攻击规则语句以检查恶意 SQL 代码。要创建 SQLi 攻击规则语句,请执行以下操作:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
  6. 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
  7. 对于 If a request(如果是请求),选择 matches the statement(与语句匹配)。
  8. 对于 Inspect(检查),选择 Request components(请求组件)以根据 SQLi 内置缓解引擎进行评估。
  9. 对于 Match Type(匹配类型),从下拉列表中选择Contains SQL injection attacks(包含 SQL 注入攻击)。
  10. 选择 Text transformation(文本转换)。
  11. 对于 Action(操作),选择 Block(阻止)。
  12. 选择 Add Rule(添加规则)。
  13. 选择 Save(保存)。

XSS 攻击规则语句

创建跨站脚本攻击规则语句以检查 Web 请求组件中的恶意脚本。要创建 XSS 攻击规则语句,请执行以下操作:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
  6. 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
  7. 对于 If a request(如果是请求),选择 matches the statement(与语句匹配)。
  8. 对于 Inspect(检查),选择 Request components(请求组件)以根据 XSS 内置缓解引擎进行评估。
  9. 对于 Match Type(匹配类型),从下拉列表中选择 Contains XSS injection attacks(包含 XSS 注入攻击)。
  10. 选择 Text transformation(文本转换)。
  11. 对于 Action(操作),选择 Block(阻止)。
  12. 选择 Add Rule(添加规则)。
  13. 选择 Save(保存)。

针对多个请求组件进行评估的 SQLi 和 XSS 攻击规则

要创建针对多个请求组件进行评估的攻击规则,请执行以下操作:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
  6. 对于 Name(名称),输入 rule name(规则名称),然后选择 Regular Rule(常规规则)。
  7. 对于 If a request(如果是请求),选择matches at least one of the statements (OR)(至少匹配其中一个语句(OR))。
  8. 对于 Inspect(检查),选择 Request components(请求组件)以根据 SQLi 或 XSS 内置缓解引擎进行评估。
  9. 对于 Match Type(匹配类型),从下拉列表中选择 Contains SQLi injection attacks(包含 SQLi 注入攻击)或 Contains XSS injection attacks(包含 XSS 注入攻击)。
  10. 选择 Text transformation(文本转换)。
  11. 对每个Statement(语句)重复步骤 8 到 10。选择 Add another statement(添加其他语句)以进行其他规则评估。
  12. 对于 Action(操作),选择 Block(阻止)。
  13. 选择 Add Rule(添加规则)。
  14. 选择 Save(保存)。

重要信息:您必须应用正确的文本转换才能使规则按预期工作。例如,如果您正在检查 Cookie,请使用以下与 Cookie 关联的转换:

  • 网址解码
  • HTML 实体解码
  • 小写

使用可用于 SQLi 和 XSS 注入攻击的 AWS 托管规则

使用适用于 AWS WAF 的 AWS 托管规则来防止应用程序漏洞或其他不需要的流量,而无需编写您自己的规则。

注意:托管规则受版本更改和过期限制。有关更多信息,请参阅处理托管规则组版本的最佳实践

使用 SQL 数据库托管规则组来防范 SQL 注入攻击。SQL 数据库托管规则组(默认版本 1.1)具有以下提供保护的规则:

  • SQLiExtendedPatterns_QUERYARGUMENTS
  • SQLi_QUERYARGUMENTS
  • SQLi_Body
  • SQLi_COOKIE
  • SQLi_URIPATH

使用核心规则集 (CRS) 托管规则组来防范 XSS 注入攻击。核心规则集 (CRS) 托管规则组(默认版本 1.3)具有以下提供保护的规则:

  • CrossSiteScripting_COOKIE
  • CrossSiteScripting_QUERYARGUMENTS
  • CrossSiteScripting_BODY
  • CrossSiteScripting_URIPATH

将 AWS 托管规则组添加到您的 Web ACL

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Add Rules(添加规则)。从下拉列表中选择 Add managed rule groups(添加托管规则组)。
  6. 展开 AWS managed rule groups(AWS 托管规则组)部分。
  7. 找到规则组并打开 Add to web ACL(添加到 Web ACL)。
    例如,您可以为用于 SQLi 保护的 SQL database(SQL 数据库)和用于 XSS 保护的 Core rule set(Core 规则集)启用 Add to web ACL(添加到 Web ACL)。
  8. (可选)选择 Edit(编辑)以查看和修改规则组的设置。
  9. 选择 Add rules(添加规则)。
  10. 选择 Save(保存)。

要编辑 Web ACL 中的现有 AWS 托管规则组

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL
  3. 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
    注意:如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 选择 Rules(规则),然后选择 Edit(编辑)以查看和修改设置。
    注意:有关编辑设置的更多信息,请参阅使用托管规则组
  6. 完成编辑后,选择 Save(保存)。

如果您在使用 AWS 托管规则组时遇到误报情况,请参阅适用于 AWS WAF 的 AWS 托管规则


这篇文章对您有帮助吗?


您是否需要账单或技术支持?