核心摘要
- AWS WAF AntiDDoS 托管规则组的 ChallengeAllDuringEvent 规则会对搜索引擎爬虫发起 JavaScript Challenge,导致 SEO 索引异常
- 通过 ASN match statement 结合 User-Agent 双重验证,可精准识别 Google(ASN 15169)和 Bing(ASN 8075)合法爬虫
- Amazon Q Developer CLI 能够快速生成复杂的多层嵌套 WAF 规则,仅需 2 次交互即可完成配置
- 该方案相比 Bot Control 托管规则组更具成本优势,同时保持相同的安全防护能力
Amazon Q Developer CLI 解决 AWS WAF DDoS 防护与 SEO 爬虫冲突实战
AWS 于 2025 年 6 月推出了全自动化的 WAF AntiDDoS 托管规则组,这是一项重要的安全能力升级。相较于传统的 AWS Shield Advanced,新规则组提供了更快速的秒级检测与缓解能力,同时具备更高的识别精准度和更灵活的配置选项。其中 ChallengeAllDuringEvent 规则在攻击事件发生时,会对所有请求(除了预先定义的 Challenge URI 例外路径)执行 JavaScript Challenge 软性缓解措施。
这种防护机制虽然能有效抵御 DDoS 攻击,但也带来了一个棘手的副作用:搜索引擎爬虫与 JavaScript Challenge 之间存在兼容性问题。
问题根源:搜索引擎爬虫无法处理 JavaScript Challenge
部分搜索引擎的爬虫程序在技术实现上无法正确执行和响应 JavaScript Challenge。当这些爬虫遇到 Challenge 页面时,它们可能会直接将 Challenge 响应内容作为网页正文进行索引,并将其显示在搜索结果页面上。这种情况会严重影响网站的 SEO 表现,用户在搜索结果中看到的将是一堆无意义的验证代码,而非实际的网站内容。
在另一篇关于 WAF Bot Control 的技术文章中,我们介绍了如何使用 Common Bot Control 托管规则组来识别合法的 SEO 爬虫和业务机器人。然而在 AntiDDoS 场景下,单纯依赖 Bot Control 来标记搜索引擎爬虫并配置 Scope-down 的成本相对较高,对于仅需解决爬虫兼容性问题的场景而言并不经济。
解决方案:基于 ASN 的双重验证机制
借鉴 Common Bot Control 的核心识别原理,我们可以利用同样在 2025 年 6 月发布的 ASN (Autonomous System Number) match statement 功能来构建更经济的解决方案。通过同时验证 User-Agent 关键字和爬虫 IP 地址所属的 ASN 编号,可以准确判断请求是否来自合法的搜索引擎爬虫。
这种双重验证机制的优势在于:
- 防止 User-Agent 伪造:恶意用户即使伪造了 Googlebot 的 User-Agent,其 IP 地址也不会属于 Google 的 ASN 15169
- 精准白名单控制:只有真正来自搜索引擎官方 IP 段的请求才会被排除在 Challenge 验证之外
- 成本效益高:无需额外订阅 Bot Control 托管规则组,仅使用 WAF 原生功能即可实现
使用 Amazon Q Developer CLI 生成复杂 WAF 规则
上述识别逻辑涉及复杂的多层嵌套条件判断,手工编写 JSON 规则既耗时又容易出错。Amazon Q Developer CLI 可以大大简化这个过程。作为 Amazon Q 的命令行工具,它由生成式 AI 驱动,能够理解 AWS 架构、资源配置和开发任务相关的问题,并提供准确的技术建议。
在实际操作中,我们向 Q CLI 描述具体需求,让它生成相应的 WAF scope-down statement。由于 WAF ASN match statement 功能刚发布不久,超出了 AI 模型的训练数据范围,Q CLI 最初提供的方案使用了 IP Set 或 Label 来判断爬虫 IP 地址是否属于 ASN 15169(Google)或 ASN 8075(Microsoft Bing)。
参考 AWS WAF Developer Guide 中的 ASN match statement 示例,我们将正确的语法结构提供给 Q CLI 进行学习和调整。仅通过 2 次交互,Q CLI 就成功生成了包含多层嵌套逻辑的复杂 WAF scope-down statement,开发效率得到显著提升。
生成的 Scope-down Statement 逻辑结构
最终生成的规则实现了以下判断逻辑:对于每个请求,检查是否同时满足以下条件之一:
- User-Agent 包含 “Google” 关键字 且 IP 地址属于 ASN 15169
- User-Agent 包含 “Bing” 关键字 且 IP 地址属于 ASN 8075
如果满足上述任一条件,则该请求被识别为合法搜索引擎爬虫,不会受到 AntiDDoS 规则的 Challenge 验证。
配置 AntiDDoS 托管规则组的具体步骤
完成规则生成后,需要将其应用到 AntiDDoS 托管规则组中。对于需要管理多个 AWS 账户或希望简化云服务付费流程的团队,可以考虑使用多云账单代付解决方案来统一管理 WAF 相关的费用支出。
具体配置步骤如下:
- 在 Web ACL 中找到并编辑 AWS-AWSManagedRulesAntiDDoSRuleSet
- 在 Scope of inspection 部分选择 Only inspect requests that match a scope-down statement
- 点击 Rule JSON editor 打开规则编辑器
- 将 Q CLI 生成的 statement 内容完整复制粘贴到编辑器中
- 保存配置并验证规则生效
配置效果与扩展建议
配置完成后,即使在 DDoS 攻击期间,来自 Google 和 Microsoft Bing 的合法爬虫请求也不会受到 ChallengeAllDuringEvent 规则的影响,网站的搜索引擎可见性得到保障。
考虑到 Google 和 Microsoft Bing 占据了超过 90% 的全球搜索引擎市场份额,上述配置已能覆盖绝大多数 SEO 需求。如果业务面向特定区域市场,需要支持其他搜索引擎爬虫(如百度、Yandex、DuckDuckGo 等),可以采用相同的方法,让 Q CLI 生成包含相应 ASN 的新 Scope-down statement。
进一步优化建议
- 更严格的 User-Agent 匹配:将 Scope-down statement 中的关键字从 “Google” 和 “Bing” 改为更精确的 “Googlebot” 和 “Bingbot”,减少误匹配的可能性
- 定期审查 ASN 信息:虽然主流搜索引擎的 ASN 相对稳定,但建议定期检查是否有变更
- 监控规则命中情况:通过 CloudWatch Logs 监控 Scope-down statement 的命中情况,确保配置符合预期
- 结合其他 AntiDDoS 高阶功能:可参考 AWS WAF AntiDDoS 托管规则的其他高阶用法,构建更完善的防护体系
实施要点与注意事项
在实际部署过程中,需要注意以下几个关键点:
- 测试环境验证:建议先在测试环境或低流量时段部署规则,观察是否有误拦截或漏放的情况
- 规则优先级:确保 Scope-down statement 的逻辑正确,避免与其他 WAF 规则产生冲突
- JSON 语法校验:Q CLI 生成的规则在粘贴前应进行 JSON 格式校验,避免语法错误导致配置失败
- 区域可用性:Amazon Q Developer 相关服务目前在 AWS 海外区域可用,中国区域的具体情况请以官网信息为准
附录:本文使用的 Q CLI 提示词
以下是与 Amazon Q Developer CLI 交互时使用的提示词,供读者参考和复用:
第一次交互提示词
请帮我写一个WAF scope-down statement,不检查Google和Bing搜索引擎爬虫发起的请求,只检查其他的请求。已知Google爬虫的特征为:1)User-Agent包含”Google”关键字;2)IP地址属于ASN 15169。Bing爬虫的特征为:1)User-Agent包含”Bing”关键字;2)IP地址属于ASN 8075。
第二次交互提示词
(提供 AWS WAF Developer Guide 中 ASN match statement 的正确语法示例,让 Q CLI 学习并调整输出格式)
关于云服务账单管理:如果您的团队在管理多个 AWS 账户的 WAF 配置和费用时遇到挑战,AWS/GCP/多云账单代付 – 免实名 & 支持 USDT 支付 | Payment 解决方案 可以帮助简化跨账户的费用管理流程,让您专注于安全架构的优化工作。