关键要点
网站篡改是当威胁行为者未经授权访问网站并用其消息替换网站内容的现象。本文介绍如何使用 Amazon CloudWatch Synthetics 实现自动化的篡改检测与响应。借助 CloudWatch Synthetics 的视觉监控功能,可以通过定期对比网页截图来检测篡改。配合 AWS WAF,可在确认篡改后快速部署维护页面。网站篡改是指威胁行为者非法访问网站,通常是公共网站,并用他们自己的信息替换网站内容。本文将介绍如何检测网站篡改,并使用 Amazon CloudWatch Synthetics 的视觉监控来实现篡改验证和自动响应。CloudWatch Synthetics 中的“金丝雀”是可配置的脚本,按照计划运行并对比在金丝雀运行期间拍摄的截图与基线金丝雀运行期间的截图。如果两张截图之间的差异超过设定的阈值,则金丝雀运行失败。我们还将展示如何在确认篡改后通过 AWS WAF 快速部署维护页面。
导致篡改的常见原因包括未经授权的访问、SQL 注入、跨站脚本XSS或恶意软件。您可以利用 AWS 服务,如 AWS WAF、Amazon Route 53 和 Amazon GuardDuty,以加强安全防护。
下面的框架图显示了一个典型的 web 应用程序,其中用户通过使用 Amazon CloudFront 访问受 AWS WAF 保护的应用。
如图所示,解决方案包括两个部分:1视觉监控以检测篡改,2自动化验证和篡改响应。
篡改检测依靠 CloudWatch Synthetics 视觉监控 金丝雀进行。您可以在 CloudWatch Synthetics 中创建金丝雀,定期对监控的 URL 进行截图。由于金丝雀只需访问网络上的监控 URL,因此可以在不影响应用的情况下实施该解决方案,而无需修改代码。有关如何创建 CloudWatch Synthetics 视觉监控金丝雀的更多详细信息,请参阅 使用 Amazon CloudWatch Synthetics 进行应用的视觉监控。
您可以使用 CloudWatch Synthetics 视觉监控蓝图 将金丝雀运行期间拍摄的截图与基线金丝雀运行期间拍摄的截图进行比较。该解决方案适用于静态网页,当两张截图之间的差异超过设定的阈值时,可能表示存在篡改尝试,从而触发金丝雀失败事件。

阈值百分比 是通过当前截图与首次金丝雀运行时捕捉的基线截图之间的视觉差异来定义的。为了减少误报,您可以调整视觉差异的阈值。
以下脚本将视觉差异设定为 5:
javascript// 设置阈值至 5syntheticsConfigurationwithVisualVarianceThresholdPercentage(5)
图 2 显示了一张基线截图,其视觉差异设置为 5。
鲸鱼加速器 安卓蓝鲸图 3 显示了一张被篡改网页的视觉差异。在这种情况下,脚本中设置的视觉差异为 5,检测到的视觉差异为 3092。
图 4 显示了含动态内容的网页,因为视觉监控金丝雀无法区分真实动态内容和基线的变更,因此触发了误报。在这种情况下,脚本中设置的视觉差异为 5,检测到的视觉差异为 525。
您可以选择排除动态内容,以使其在后续金丝雀运行中的视觉对比中不被考虑。要排除动态内容,请在 CloudWatch Synthetics 中编辑基线截图。通过简单的点击拖动,您可以选择要排除的区域,如图 5 所示。
如果您的应用程序还有其他动态内容区域,您可以选择多个区域进行排除。
图 6 显示经过动态内容排除后金丝雀成功运行的情况。
您可以利用 Amazon EventBridge 规则 来自动化篡改响应,当金丝雀运行失败时触发 Amazon 简单通知服务 (Amazon SNS)。通过使用 发布订阅模式,您可以根据组织的需求自定义和扩展响应功能。
以下是 EventBridge 中的事件模式脚本。确保用您之前创建的 CloudWatch Synthetics 视觉监控金丝雀的名称替换金丝雀名称,以充当事件源。
json// Event patterns in EventBridge to get event source from canary{ source [awssynthetics] detailtype [Synthetics Canary TestRun Failure] detail { canaryname [ltreplacewithcanarynamegt] }}
当事件模式与您在 EventBridge 中配置的规则匹配时,Amazon SNS 主题将触发审批流程,如图 7 所示。这将开始自动化验证和篡改响应过程,具体将在下一节中描述。
图 8 描述了如何自动化验证和篡改响应。当收到检测到篡改的警报时,被通知的团队可以选择验证篡改。这个篡改监控使用 CloudWatch Synthetics,保持灵活性允许通过手动验证来配置和验证阈值设置。如果您对自己的阈值有信心,可以绕过审批流程,直接通过 AWS WAF 规则屏蔽网站流量。
如图中所示,篡改检测期间的流量流程如下:
来自 CloudWatch Synthetics 视觉监控的金丝雀通过与首次金丝雀运行期间拍摄的基线截图的视觉差异识别篡改并发出事件。如果发出的事件与您在 EventBridge 中配置的规则匹配,Amazon SNS 将被触发。这会触发已订阅的 AWS Lambda 函数,向 Slack 发送包含事件详细信息的通知请求审批。被通知的团队在 Slack 中收到篡改通知,做出审批决策。如果获得批准,则会添加一个 AWS WAF 规则以阻止流量,并向用户展示维护页面。访问源的用户将看到由 AWS WAF 提供的维护页面。虽然此示例使用 Slack 作为审批机制,但您可以使用任何您选择的通信机制。
在本文中,您学习了如何使用 CloudWatch Synthetics 进行篡改监控,并通过 AWS WAF 和 CloudFront 展示维护页面,以便在恢复服务时使用。您还学习了如何使用手动审批来确定最佳阈值,并排除包含动态内容的区域以减少误报。
尽管大多数网络应用程序已经使用 CloudFront 和 AWS WAF,但您仍然可以将此解决方案集成到现有环境中,而不会影响应用程序或修改其代码。该解决方案有助于检测潜在的篡改,为您的环境提供额外的保护层。
我们建议您探索 CloudWatch Synthetics 监控 的能力,通过 EventBridge、Amazon SNS 和 Lambda 等服务实现自动化。这可以帮助您主动保护您的应用程序免受篡改尝试。
如果您对这篇文章有反馈,请在下面的 评论 部分提交意见。如果您对这篇文章有疑问,请 联系 AWS 支持。
2026-01-27 12:24:52
2026-01-27 13:09:31