云服务器遭遇DDoS攻击后怎样快速恢复访问?
云服务器遭DDoS后可在10~30分钟内按确认攻击类型、云厂商切高防或解封IP、隐藏源站并限制仅高防回源、应用层限速与验证的顺序快速恢复访问。
学完这篇,你能在云服务器被 DDoS 打挂后,按“云厂商切高防 → 源站锁回源 → 应用层限速 → 验证恢复”的顺序,在 10~30 分钟内让网站重新可访问。
第一步:确认攻击类型和流量特征
这一步要做的是判断是 DDoS、CC 还是正常突发流量,做完你能拿到攻击方向、峰值带宽和可疑 IP。
登录云控制台。阿里云 2024 版:进入 云监控控制台 → 云服务器 ECS → 实例 → 监控图表,看公网入带宽、出带宽、PPS、连接数;再进 DDoS 防护控制台 → 防护日志 → 攻击事件,看攻击类型和峰值。腾讯云 2024 版:进入 云监控 → CVM → 外网带宽,以及 大禹 DDoS → 防护日志。
服务器内执行:
ss -s
netstat -anp | grep ':80' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
tcpdump -i eth0 -nn -c 100 'tcp[tcpflags] & tcp-syn != 0'
如果是 SYN Flood,会看到大量半连接;如果是 CC,Nginx 访问日志里同一 IP 会高频请求同个 URL。
注意:不要先重启服务器,重启会丢现场,也不一定能解封 IP。云监控有 1~3 分钟延迟,以 DDoS 防护日志为准。
第二步:在云厂商侧切高防或解封 IP
这一步要做的是把流量先引到高防清洗,做完你能让域名恢复访问,同时隐藏真实源站 IP。
阿里云:进入 DDoS 防护控制台 → 攻击防护 → 防护设置 → 添加防护对象,选择 ECS 公网 IP 或 EIP,绑定高防实例。如果 IP 已被黑洞,进入 DDoS 防护 → 黑洞解封 → 选择实例 → 申请解封。腾讯云:进入 大禹 DDoS → 防护配置 → 防护对象 → 添加,选择高防包或高防 IP;黑洞 IP 在 黑洞解封 页申请。
没有高防时,最快方案是接 Cloudflare:添加站点,把 DNS 的 NS 切到 Cloudflare,A 记录开橙云代理;进 Security → WAF → Managed Rules 开启规则;CC 严重时进 Security → Settings → Under Attack Mode 打开。
注意:改 NS 前先把域名 TTL 调到 300 秒。高防 IP 和源站 IP 不要暴露在同一 DNS 记录里。
第三步:锁死源站,只允许高防/CDN 回源
这一步要做的是让攻击者无法直连源站,做完只有高防回源 IP 能访问 80/443。
阿里云 ECS:进入 ECS 控制台 → 网络与安全 → 安全组 → 配置规则 → 入方向 → 手动添加,授权对象填高防回源 IP 段,端口 80/443;再添加一条拒绝 0.0.0.0/0 的 80/443 规则。腾讯云 CVM:进入 CVM → 安全组 → 入站规则 → 添加规则,来源填大禹高防回源 IP。
系统层可用 iptables:
iptables -I INPUT 1 -p tcp --dport 80 -s 高防回源IP -j ACCEPT
iptables -I INPUT 2 -p tcp --dport 443 -s 高防回源IP -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
iptables-save > /etc/iptables.rules
注意:先确认 SSH 22 端口仍放行你的办公 IP,否则会把自己关在门外。回源 IP 段以云厂商控制台显示为准,不要手抄错。
第四步:源站临时限速,压住 CC 和漏量
这一步要做的是在 Nginx 层限制单 IP 频率和并发,做完能减少漏过高防的恶意请求。
Nginx 1.24/1.26 在 http 块加入:
limit_req_zone $binary_remote_addr zone=req_per_ip:10m rate=20r/s;
limit_conn_zone $binary_remote_addr zone=conn_per_ip:10m;
在 server 块加入:
limit_req zone=req_per_ip burst=40 nodelay;
limit_conn conn_per_ip 50;
执行 nginx -t && systemctl reload nginx。封单 IP 可用:
iptables -I INPUT -s 1.2.3.4 -j DROP
Fail2ban 1.0.2 可启用 [nginx-limit-req]:编辑 /etc/fail2ban/jail.local,写 enabled = true,然后 systemctl restart fail2ban。
注意:
rate太低会误伤正常用户。先看/var/log/nginx/access.log,用awk '{print $1}' access.log | sort | uniq -c | sort -rn | head找高频 IP,再决定阈值。
第五步:验证恢复并逐步回滚
这一步要做的是确认访问恢复、攻击流量下降,做完你能决定是否撤掉临时规则。
用 curl -I -H "Host: 你的域名" http://高防IP 看状态码;用 dig 你的域名 看是否解析到高防 IP;浏览器无痕模式打开网站。云监控里看入带宽是否回落到正常值,DDoS 防护日志里看攻击是否还在持续。确认稳定后,先移除临时 DROP 规则,保留安全组只允许高防回源,再逐步恢复 Nginx 限速阈值。
注意:攻击可能持续数小时,不要立刻把 DNS 切回源站 IP。所有临时规则先备份:
iptables-save > /root/iptables.bak。
小结
- 先看云监控和 DDoS 防护日志,判断攻击类型,别急着重启。
- 最快恢复路径:云厂商高防/黑洞解封,或 Cloudflare 开 Under Attack Mode。
- 源站安全组只放行高防回源 IP,80/443 拒绝公网直连。
- Nginx 用
limit_req、limit_conn压 CC,阈值别设太低。 - 恢复后保留高防,逐步回滚临时规则,并备份 iptables 和 Nginx 配置。
转载请注明出处,版权归原作者所有。