阿里云服务器遭受 DDoS / CC 攻击后的应急响应指南
收到阿里云发来的短信:“您的ECS实例遭受大流量攻击,已被送入黑洞清洗……”
我相信任何一个站长或运维看到这条消息,血压都会瞬间飙升。网站打不开,用户在群里疯狂吐槽,老板在背后死死盯着你,这时候你手心冒汗,极度容易病急乱投医。
冷静。遇到攻击,慌张解决不了任何问题。今天这篇教程没有任何理论废话,直接给你一套生产环境遭遇 DDoS / CC 攻击时的实战应急响应指南。把这篇文章存进你的书签,关键时刻能保命。
核心概念:先搞清楚你挨的是什么打
知己知彼才能见招拆招。攻击主要分两种,应对策略完全不同:
- DDoS 攻击(流量型):黑客控制成千上万台肉鸡,用海量的垃圾流量(UDP、TCP Flood)把你的服务器带宽直接挤爆。这就像几万人同时去挤一个地铁口,正常人根本进不去。
- CC 攻击(应用型):黑客的流量没那么大,但他利用代理 IP 模拟真实用户,疯狂刷新你网站上最消耗资源的页面(如搜索、数据库查询、动态接口)。带宽没满,但你的服务器 CPU 瞬间 100%,直接瘫痪。
第一阶段:紧急自救——5分钟应急流
当你发现网站打不开,且监控显示流量暴增或 CPU 飙红时,立刻启动以下应急步骤。
步骤 1:判断是否进入了“黑洞”
如果阿里云直接把你的服务器“黑洞”了,意味着攻击流量已经超出了阿里云给普通 ECS 提供的默认防御阈值(通常是 5G 左右)。
- 现象:不仅网站打不开,你通过 SSH 连服务器也完全连不上,甚至 ping 服务器公网 IP 全是超时。
- 解决办法:登录阿里云控制台,搜索 “DDoS防护”,在基础防护列表里看一眼你的实例状态。如果是“黑洞中”,通常需要等待 30 分钟到数小时才能自动解封。
- 💡 黑洞期如何自救? 别傻等着。如果业务急需恢复,立刻去控制台给这台 ECS 绑定一个全新的“弹性公网IP(EIP)”。只要黑客还没发现你的新 IP,网站就能立刻短暂复活。
步骤 2:如果 SSH 还能连,紧急排查 CC 攻击
如果服务器没进黑洞,但卡得要死,用 VNC 或 SSH 连进去,敲入 top。如果看到 nginx 或 php-fpm / java 把 CPU 吃满了,90% 是遭遇了 CC 攻击。
立刻去翻看 Nginx 的访问日志(Access Log),抓出正在疯狂刷屏的特征:
Bash
# 查看当前访问量最高的潜在线索 IP(前20名)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20
观察这些高频访问的请求,寻找它们的共同点:
- 是不是都在疯狂请求同一个动态接口(如 /api/v1/search)?
- 它们的 User-Agent(浏览器标识)是不是很奇葩,或者完全一致(比如都是老旧的 IE6.0 或者是空的)?
- 是不是都来自同一个 IP 段?
步骤 3:立刻在本地“关门打狗”
抓到特征后,在 Nginx 里进行紧急封禁。
1. 如果是特定 IP 在作怪,直接封 IP 段:
打开你的 Nginx 网站配置文件,在 server 块里直接加入:
Nginx
deny 123.45.67.89; # 封禁单个恶意IP
deny 220.181.0.0/16; # 封禁整个恶意的C段或B段IP
然后运行 nginx -s reload。
2. 如果请求特征很明显(比如特定的 UA 或接口),直接返回 403:
Nginx
if ($http_user_agent ~* "Scrapy|HttpClient|Java") {
return 403;
}
第二阶段:架构重构——斩断黑客的视线
上面的紧急自救只能挡住低级别的攻击。如果黑客换了代理 IP 继续刷,或者直接上大流量 DDoS,纯靠单台 ECS 硬扛是绝对扛不住 if的。
你需要立刻调整架构,把服务器隐藏到幕后。
核心防御架构设计
Plaintext
【恶意攻击流量 / 正常用户】
│
▼
【云安全防御层(高防IP / CDN)】 ──(清洗垃圾流量)──> 拦截并丢弃
│
(干净流量)
│
▼
【隐藏在 VPC 内的源站 ECS】
步骤 4:接入 CDN 或 WAF(彻底隐藏源站 IP)
黑客之所以能打你,是因为他知道了你服务器的真实公网 IP。我们要立刻在域名和服务器之间加一道“防火墙”。
- 接入阿里云全站加速 DCDN 或安全 CDN:把域名的 DNS 解析,从直接指向服务器 IP,改为指向 CDN 提供的 CNAME 地址。这样,黑客再怎么查域名,得到的也只是 CDN 的边缘节点 IP。CDN 拥有天然的大流量清洗能力,能帮你挡掉绝大部分的 CC 攻击。
- 开启“五秒盾”(JavaScript 挑战):在 CDN 或云盾 WAF 的控制台里,把防护等级调到“紧急”或开启“CC安全防护”。此时,任何访问你网站的人都会先弹出一个“正在检测浏览器安全性...”的 5 秒等待页面。肉鸡脚本没有真实的浏览器渲染引擎,会被这道关卡彻底死死卡住。
步骤 5:切断服务器旧 IP 的所有直接访问(关键)
很多人接了 CDN 之后发现服务器还是卡死,为什么?因为黑客已经记录了你之前的服务器真实 IP,他直接绕过域名,拿着 IP 往死里打。
- 唯一解法:去阿里云 ECS 控制台,进入 “安全组”。
- 修改入方向规则:删除允许所有 IP(0.0.0.0/0)访问 80 和 443 端口的规则。
- 改为:只允许你所购买的 CDN 或 WAF 的公网 IP 段访问 80 和 443。
- 这样,除了通过 CDN 转发过来的干净流量,外界任何人直接敲你的服务器 IP,都会提示连接失败。你的服务器在互联网上彻底隐身了。
第三阶段:长治久安——防患于未然
经历过一次毒打后,必须在日常运维中补齐短板:
- 代码层面的自我救赎:对登录、注册、搜索、短信验证码等高危动态接口,必须加上图形验证码或行为验证(如滑块验证)。在代码逻辑中引入 Redis 计数器,对单个用户/单个 IP 限制访问频率(例如:1秒内访问超过5次直接锁定一小时)。
- 备好“钱袋子”与高防方案:如果你们做的是电商、游戏、或者正在搞线上营销活动,很容易招来同行雇佣的职业黑客。普通 ECS 无法解决大流量 DDoS。一旦攻击流量超过 50G 以上,老老实实购买阿里云的 DDoS高防(新BGP)。它拥有 T 级别的清洗带宽,那是真正用纯硬件和顶级带宽堆出来的防线。
网站被攻击不可怕,可怕的是黑客在打你,你却坐在电脑前除了重启服务器什么都不会做。把这套“隐藏源站+清洗流量+应用限流”的打法刻进脑海里,哪怕黑客再来,你也能气定神闲、兵来将挡。

