当你的网站突然打不开,服务器 CPU 飙到 100%,带宽被瞬间吃满——这很可能就是遭遇了 DDoS(分布式拒绝服务)攻击。对于中小企业网站来说,面对这类攻击,如何在最短时间内识别、止损、恢复服务,是决定损失大小的关键。
本文将从实际运维角度出发,帮你建立一套可执行的 DDoS 应急响应流程。无论你是外贸站长、中小企业网站负责人,还是 Web 开发者,都能从中找到具体的操作步骤和防护建议。
第一步:快速识别 DDoS 攻击
在采取任何应急措施之前,你需要先确认”网站慢”或”打不开”的原因确实是 DDoS 攻击,而不是服务器配置问题或正常的流量高峰。
以下几种现象同时出现时,大概率是遭遇了 DDoS:
- 带宽占满:通过
iftop或主机商控制面板查看,入站流量远超日常峰值(比如平时 50Mbps,突然飙到 500Mbps 以上) - 连接数暴增:执行
netstat -an | grep ESTABLISHED | wc -l,如果连接数是平时的 10 倍以上,基本可以确认 - 服务器资源耗尽:
top命令显示 CPU 使用率持续 90%+,但实际业务进程占用不高,大量资源被网络连接消耗 - 特定端口被集中请求:通过
ss -s查看 TCP 连接统计,80/443 端口的 SYN_RECV 状态数量异常高
如果你的网站托管在 VPS(虚拟专用服务器) 上,通常可以在控制面板中直接查看实时流量图表。流量曲线突然出现一个尖峰,且持续不下降,就是最直观的判断依据。
第二步:立即止损——5 分钟内要做的事
确认是 DDoS 攻击后,目标不是”消灭攻击”,而是先把业务损失降到最低。这 5 分钟内,按以下顺序执行:
1. 启用 CDN(内容分发网络)防护
如果你的网站还没有接入 CDN,这是最快的止损手段。CDN 通过分布在全球的边缘节点分散攻击流量,能有效过滤掉大部分中小规模的 DDoS。登录你的 CDN 控制台,开启 DDoS 防护开关,并确认源站 IP 没有被直接暴露。
2. 限制连接速率
在服务器上通过防火墙规则限制单 IP 的连接速率。以 iptables 为例:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j DROP
这条规则将单 IP 在 80 和 443 端口的并发连接限制在 50 个,超过的直接丢弃。
3. 切换 DNS(域名系统)到备用 IP
如果攻击流量极大,可以临时将 DNS 解析切换到一个备用 IP 或高防 IP,让攻击流量打到防护节点上,保护真实服务器。DNS 切换后通常 5-15 分钟生效,这段时间可以配合 CDN 缓存维持部分访问。
第三步:分析攻击类型与规模
止损措施启动后,下一步是搞清楚攻击的具体情况。不同类型的 DDoS 需要不同的应对策略:
- 流量型攻击(Volumetric):以 UDP 洪水、ICMP 洪水为代表,特点是带宽被直接打满。这类攻击通常需要上游运营商或主机商的黑洞路由(Blackhole Routing)来清洗。
- 协议型攻击(Protocol):以 SYN 洪水为代表,利用 TCP 三次握手的漏洞消耗服务器连接资源。可以通过调整内核参数缓解:
bash
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog - 应用层攻击(Application Layer):模拟正常用户请求(如 HTTP GET/POST),最难防御。需要通过 WAF(Web 应用防火墙)的规则识别异常请求模式。
如果你的网站部署在 独立服务器 上,通常可以获得更详细的网络流量日志,便于分析攻击特征。而使用 虚拟主机 的用户,建议直接联系主机商的技术支持,由他们协助完成流量分析。
恢复清单:攻击缓解后的善后工作
攻击流量退去并不意味着万事大吉。以下恢复清单帮你系统性地完成善后:
- 检查网站完整性:攻击者有时会利用 DDoS 掩护入侵行为。用
find /var/www -mtime -1 -type f检查最近 24 小时内被修改的文件,确认没有后门或恶意脚本被植入 - 审查访问日志:分析 Nginx 或 Apache 的 access.log,筛选出异常 IP 段和请求模式。使用
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20快速定位高频请求 IP - 更新 SSL 证书:如果在攻击期间启用了临时防护节点,确认 SSL(安全传输协议)证书在所有节点上都是有效的,避免 HTTPS 访问出错
- 备份当前状态:在做任何修复操作前,先对网站文件和数据库做一次完整备份。可以用
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/快速打包 - 更新防火墙规则:根据攻击期间收集的 IP 段和特征,更新防火墙的黑名单规则,防止同一批攻击者再次发起攻击
长期防护:如何降低下一次被攻击的风险
应急响应解决的是”着火了怎么办”,但更重要的是”怎么让火不着起来”。以下是几项长期防护建议:
选择带 DDoS 防护的主机方案。很多主机商在产品层面就内置了基础的 DDoS 防护能力。以 Hostease VPS 主机 为例,提供基础的流量清洗服务,对于中小规模攻击可以自动识别并过滤,不需要你手动干预。
部署 WAF 规则。如果你使用 Nginx,可以通过 ngx_http_limit_req_module 模块限制请求频率:
limit_req_zone $binary_remote_addr zone=ddos:10m rate=30r/s;
server {
location / {
limit_req zone=ddos burst=50 nodelay;
}
}
这组配置将每个 IP 的请求频率限制在每秒 30 次,突发请求上限 50 次,超出的直接返回 503 错误。
建立监控告警机制。设置带宽和连接数的阈值告警,当流量异常时第一时间收到通知。推荐使用 Prometheus + Grafana 的组合,或者直接使用主机商提供的监控面板。
总结:一张应急卡片
把以下流程打印出来贴在工位旁边,或者保存到手机备忘录里——真遇到 DDoS 时,你不会有时间翻文档:
- 确认:检查带宽、连接数、CPU,确认是 DDoS 而非故障
- 止损:开 CDN 防护 → 限速 → 切 DNS,5 分钟内完成
- 分析:判断攻击类型(流量型/协议型/应用层),对症下药
- 恢复:检查文件完整性 → 审查日志 → 更新证书 → 备份 → 更新防火墙
- 防护:选带防护的主机、部署 WAF、建监控告警
如果你需要一个自带基础 DDoS 防护的主机环境,可以考虑 Hostease 的 VPS 和独立服务器方案,内置流量清洗能力,省去自己搭建防护体系的复杂度。面对 DDoS 攻击,最好的策略永远是”提前准备,而不是事后补救”。