AWS企業帳號代開 AWS Shield Standard / Advanced 防禦 DDoS 攻擊無效?流量清洗排查
AWS Shield 真的无效吗?先把问题说清楚
AWS企業帳號代開 很多人第一次遇到 DDoS 攻击时,都会有一种直观感受:明明已经开了 AWS Shield Standard,甚至上了 Advanced,为什么站点还是慢、还是抖、还是会挂?于是很容易得出一个结论——Shield 没用。其实这个判断往往过于草率。
AWS Shield 不是一把万能的伞,它能解决的是特定层面的攻击,尤其是常见的网络层和传输层洪泛攻击,以及一部分与 AWS 托管边缘资源相关的攻击场景。它不是让业务永远不受影响的“自动免疫”,也不是所有流量都能被无条件拦在门外。真正让人误解的,往往是三件事:攻击类型不对、架构暴露面太大、排查链路不完整。
如果把“防御 DDoS”理解成“业务完全无感”,那几乎不现实。正确的理解应该是:在合理架构下,Shield 能把大部分攻击挡在业务之外,把损失控制在可接受范围内,并让你有时间定位、缓解和恢复。换句话说,Shield 不是终点,而是防线的一部分。
先分清楚:你遇到的到底是哪一种攻击
网络层攻击,不等于应用层攻击
最常见的误区是把所有异常流量都叫 DDoS。实际上,网络层攻击和应用层攻击的处理方式完全不同。比如 SYN Flood、UDP Flood、ACK Flood 这类攻击,主要消耗带宽、连接表和协议栈资源,Shield Standard 和 Advanced 在这类场景里通常能发挥作用。但如果是 HTTP GET/POST 洪泛、慢速请求、特定路径刷接口、模拟真实用户访问,这类更像应用层攻击,单靠 Shield 往往不够,还需要 WAF、限速、验证码、行为分析和应用本身的抗压能力。
如果你看到的是 CPU 飙高、数据库连接耗尽、Nginx 线程打满、接口响应越来越慢,但网络带宽并没有明显被打爆,那问题未必是“清洗没生效”,而可能是应用层被打穿了。这个时候盯着 Shield 看,方向就错了。
攻击目标可能根本没有打到你以为的地方
在 AWS 上,很多业务前面会挂 CloudFront、ALB、NLB、Route 53、Global Accelerator,甚至同时有多层代理。攻击者不一定打你的域名首页,也可能直接绕过边缘层,去扫源站公网 IP,或者打某个开放端口、某个忘记关掉的测试入口。表面上看像是 Shield 无效,实际上是业务暴露面没有收干净。
所以第一步不是急着改配置,而是先确认攻击打在谁身上:是 CloudFront?是 ALB?是 NLB?还是直接命中了 EC2、公网 IP、RDS 代理、API Gateway 之外的入口?目标不同,处理方式完全不同。
AWS Shield Standard 和 Advanced,差别不只是“高级版”
Standard 更像默认防线
AWS Shield Standard 通常是默认开启的,覆盖基础的网络和传输层防护。它的定位是帮大多数 AWS 用户抵御常见的大流量攻击,并配合 AWS 边缘网络进行自动缓解。对很多中小型业务来说,它已经能过滤掉相当一部分噪声流量。
但 Standard 的能力边界也很明确:它不会替你做复杂的业务判断,不会识别所有伪装成正常访问的恶意请求,更不会替你改造架构。如果你的源站直接暴露公网,或者业务本身没有限流、没有缓存、没有隔离,Standard 只能算第一层缓冲。
Advanced 解决的是“更强的防护与更快的响应”
Shield Advanced 的价值不只是“更强”,更重要的是“更完整”。它提供更深入的 DDoS 监测、增强的成本保护、与 AWS DDoS Response Team 的协作能力,以及面向特定 AWS 资源的更高等级防护。对持续遭受攻击、业务对可用性非常敏感的团队来说,Advanced 更像一套运营级能力,而不是单纯的防火墙开关。
但即便如此,它也不是把所有问题都自动抹平。Advanced 能帮你更快发现异常、更快获得 AWS 支持、更快触发缓解,但如果源站裸奔、上游配置错误、WAF 规则缺失、应用没有限速,攻击照样能让你感到“没防住”。
为什么会觉得流量清洗“没生效”
一是你看到的是结果,不是清洗过程
很多团队是在业务报障之后才回头看监控,这时往往只看到几个现象:访问变慢、5xx 增加、连接数飙升、日志暴涨。可这些只是清洗是否生效的间接结果,不能直接证明清洗失败。AWS 侧的缓解可能已经发生,只是业务承受能力不够,或者攻击强度已经逼近服务极限。
AWS企業帳號代開 例如,攻击量虽然被挡掉了 90%,但剩下的 10% 仍然足以把你的小型实例、低配数据库或未优化接口拖垮。此时不是“清洗无效”,而是“你的业务承载线太低”。
二是源站直接暴露,攻击绕过了前门
这是最常见的问题。很多人以为前面挂了 CloudFront 或 ALB,源站就安全了,结果公网 IP 还在,安全组还开着 0.0.0.0/0,甚至测试环境、健康检查地址、备用域名都没收口。攻击者只要找到这个入口,就能绕过边缘防护,直接打到服务器或容器集群。
这类问题特别容易让人误判成 Shield 没有工作。实际上,Shield 保护的是你挂载它的资源和路径,不会自动把你业务所有外网入口都封死。只要还有一个没管住的口子,清洗效果就会被削弱。
三是攻击类型超出了 Shield 的主要防护范围
如果你遭遇的是高频 API 调用、搜索接口刷爆、登录暴力尝试、慢连接攻击、爬虫伪装、TLS 握手消耗,问题往往不在于网络层带宽,而在于应用层资源。此时应该把重心放到 WAF 规则、速率限制、缓存、会话控制、验证码、令牌校验和后端隔离上。
许多“防住了却还是卡”的案例,本质是应用层没有设防。Shield 负责的是边界,WAF 和应用代码负责的是入口秩序,两者不能互相替代。
流量清洗排查:从外到内,一层层看
第一步:确认攻击入口和受影响资源
先列清楚受影响对象:域名、CloudFront 分发、ALB、NLB、EC2 公网 IP、API Gateway、Global Accelerator、Elastic IP。再看攻击是否只集中在某个区域、某个端口、某个路径、某个国家或 ASN。很多时候,问题的答案就在这一层。
如果只有某个接口超时,别先怀疑 Shield;如果只有某个源站 IP 被打,先检查是否存在绕过边缘层的直连流量;如果全站都慢,再看是不是带宽、连接数、DNS、证书握手或者后端数据库被拖死。
AWS企業帳號代開 第二步:看 CloudWatch 和关键指标
排查时别只看业务页面是否打开,要看指标。对 ALB 来说,重点是请求数、TargetResponseTime、HTTPCode_ELB_5XX、HTTPCode_Target_5XX、HealthyHostCount;对 EC2 和容器,要看 CPU、内存、网络吞吐、连接数、队列长度;对 RDS,要看连接数、锁等待、IOPS、延迟。
如果边缘层流量明显被拦下来了,但后端仍然异常,说明问题可能出在业务自身,而不是清洗。反过来,如果所有入口请求数都在飙升,且 4xx、5xx 和延迟同步增加,那就要考虑更强的边缘拦截和 WAF 策略。
第三步:查看日志,确认恶意模式
日志比感觉靠谱。CloudFront 日志、ALB 访问日志、WAF 日志、VPC Flow Logs、NLB 流量日志,任何一个都能提供线索。你要找的不是“有多少请求”,而是“请求长什么样”。比如同一 IP 持续访问同一路径、User-Agent 异常统一、请求间隔极短、来源分布高度离散但行为高度一致、状态码集中在某几个错误上。
如果日志里大量请求都绕过了边缘层,直接打到了源站,那么先别谈清洗,先堵源站;如果请求主要集中在某个 API,先做限速和鉴权;如果大量请求来自多个地区、同一时间段爆发,才更像真正的大规模 DDoS。
第四步:检查路由、DNS 和源站暴露面
AWS企業帳號代開 很多问题不是攻击太强,而是架构太松。检查 DNS 是否直接解析到源站;检查 ALB 后面是否还有直接可访问的公网实例;检查安全组是否允许不必要的来源;检查 NACL 是否有漏洞;检查测试环境、备用域名、管理后台、健康检查 URL 是否也暴露在公网。
如果你使用 CloudFront,源站最好只允许来自 CloudFront 的访问,而不是任意公网。使用 ALB 时,也应尽量让后端私有化,通过内网访问数据库和服务。只要源站在公网可见,攻击者就永远有机会绕道。
让 Shield 真正发挥作用,关键在架构,不在按钮
边缘层要尽量前置
如果业务适合,优先把流量放到 CloudFront、Global Accelerator 或其他边缘入口,再把源站放到私网。这样做的核心价值不是“看起来更高级”,而是把攻击消耗挡在更靠前的位置。缓存静态内容、减少回源、压缩请求数,都是降低 DDoS 影响的有效方式。
对静态页面、图片、下载文件、公开 API,能缓存就缓存,能异步就异步,能拆分就拆分。边缘层承接的越多,源站越不容易被拖垮。
WAF 不是可选项,而是必备项
如果你的业务会被 HTTP 攻击盯上,WAF 几乎是标配。它可以做速率限制、IP 信誉过滤、地理封禁、请求特征拦截、Bot 控制和自定义规则。很多时候,真正把业务从“快挂了”拉回来的,不是 Shield 本身,而是 WAF 配合 Shield 的联动。
尤其是登录、注册、搜索、评论、下单、验证码等高频接口,必须做针对性限制。不要试图用一条通用规则解决所有问题,攻击者总能找到缝隙。规则要围绕业务行为写,而不是只围绕流量大小写。
后端要做降级和隔离
即便前面有 Shield,也要假设流量会有一部分漏进来。后端的降级能力决定了你能不能扛住这最后一层。比如:静态资源从对象存储或 CDN 提供;热门接口加缓存;数据库读写分离;搜索服务独立扩容;登录和支付链路设置独立限流;非核心功能在高压下自动降级。
如果所有请求都要穿过同一套数据库、同一个缓存、同一个消息队列,那么哪怕攻击只放进来一小部分,业务也可能被拖死。真正的抗打击能力,来自隔离,而不是单点加固。
常见误区:不是 Shield 失效,而是使用方式错了
误区一:开了就等于生效
很多团队部署完就不再验证,直到出事才发现没接对资源、没开对区域、没绑定对入口。Shield 的有效性必须通过演练来确认。你至少要知道:它保护哪些资源、报警在哪里看、谁能处理、如何联系 AWS 支持、发生攻击时谁来切换策略。
误区二:只看带宽,不看请求成本
DDoS 不一定先打满带宽,也可能先打满连接数、线程、CPU 和数据库。尤其是现代 Web 服务,少量高成本请求就足以让后端吃不消。别只盯着网卡流量图,还要看服务端排队、超时、重试、依赖调用链。
误区三:以为 AWS 会替你做完全部事情
AWS 提供的是能力,不是业务答案。你仍然要决定哪些入口开放、哪些接口限速、哪些资源放缓存、哪些流量丢弃、哪些请求降级。云厂商能做的,是帮你更快更大范围地缓解攻击;业务团队能做的,是把可利用面降到最低。
一套实战排查顺序,出事时照着走
先止血,再分析,再优化
真正遇到攻击时,不要陷入“先搞明白原理再处理”的思路。正确顺序是先止血:确认是否开启 WAF 规则、是否临时收紧源站访问、是否启用更严格的限流、是否把异常接口下线或降级。只要业务还在继续被拖垮,分析就没有意义。
止血之后,再做三件事:确认攻击入口、确认攻击类型、确认资源瓶颈。最后才是优化架构,比如隐藏源站、增强缓存、拆分服务、加速报警联动、完善演练流程。
把告警和响应流程写进手册
很多事故之所以升级,不是因为攻击太强,而是因为没人知道先看哪里、先改哪里、先找谁。你应该把下面这些内容写成可执行手册:攻击发生时的负责人、查看哪些仪表盘、如何判断是网络层还是应用层、如何临时调整 WAF、如何验证源站是否暴露、如何联系云厂商支持、如何恢复正常配置。
当团队在压力下做判断时,流程比经验更可靠。尤其是跨时区、多人协作、生产系统复杂的场景,手册能减少大量无效沟通。
结语:Shield 不是没用,而是你要用对地方
AWS Shield Standard 和 Advanced 并不是“开了就天下太平”的保险箱。它们的价值,是把大规模 DDoS 的冲击挡在前面,给你争取时间和空间。可一旦架构暴露面过大、应用层防护缺失、日志监控不完整、排查路径混乱,你就会感觉它“没有效果”。
所以,判断 Shield 是否有效,不能只看业务有没有抖一下,而要看攻击是不是被正确识别、是不是被挡在合适的位置、是不是还有旁路入口、是不是后端本身过于脆弱。真正成熟的防护,不是把问题交给某一个产品,而是让边缘、WAF、应用、数据库、运维流程一起形成闭环。
如果你下次再遇到“开了 Shield 还是被打”的情况,先别急着否定它。先看攻击类型,再看入口暴露,再看日志和指标,最后回到架构本身。很多时候,答案不是“Shield 无效”,而是“防线只搭了一半”。


