服务器遭受DDoS攻击怎么办?防御方案与紧急处置步骤详解
服务器遭受 DDoS 攻击怎么办?防御方案与紧急处置步骤详解
网站突然无法访问、服务器失去响应、流量监控图出现异常尖峰——这是很多站长遭遇 DDoS 攻击时的第一感知。DDoS(分布式拒绝服务攻击)是目前最常见的网络攻击手段之一,从小型个人博客到大型电商平台都可能成为目标。本文帮你快速识别攻击、实施紧急处置,并建立长效防御体系。
一、如何判断自己正在遭受 DDoS 攻击?
DDoS 攻击与服务器故障的区分很重要,处理方式完全不同:
| 现象 | DDoS 攻击 | 服务器故障 |
|---|---|---|
| 流量监控 | 出现异常尖峰,数倍于正常流量 | 流量正常甚至下降 |
| 带宽占用 | 上行/下行带宽接近或达到上限 | 带宽正常 |
| 来源 IP 分布 | 海量陌生 IP,来自多个国家 | 无异常外部连接 |
| 服务器 CPU | 可能较高(应用层攻击)或正常(流量型攻击) | 通常较高(业务代码问题) |
| 服务商通知 | IDC 可能因流量超限发警告或封端口 | 无相关通知 |
快速确认命令
# 查看当前连接数最多的 IP(排名前20)
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
# 查看每秒新建连接数(持续刷新)
watch -n 1 'ss -tn | grep ESTAB | wc -l'
# 查看网络接口流量
ifstat -i eth0 1如果看到大量来自不同 IP 的连接,且连接数是平时的数十倍,基本可以确认正在遭受攻击。
二、紧急处置:攻击发生时的即时应对步骤
第一步:联系 IDC,开启黑洞路由
如果攻击流量超过服务器带宽上限,服务器将完全无响应。此时应立即联系服务商,请求对被攻击 IP 开启黑洞路由(Null Route / Black Hole)——即将所有发往该 IP 的流量在上游直接丢弃。
黑洞路由的代价是:该 IP 暂时无法访问。但这样可以保护服务器本身不宕机,避免影响同机房其他客户,为后续处置争取时间。
第二步:将流量切换至 Cloudflare(最快的临时解决方案)
- 登录 Cloudflare,将 DNS A 记录指向原服务器 IP(如果尚未使用 Cloudflare)
- 确保 DNS 记录的"代理"选项为橙色云朵(已启用)
- 在 Cloudflare 安全设置中,将"安全级别"调整为"我遭到攻击"(Under Attack Mode)
- 开启"Bot Fight Mode"拦截自动化攻击流量
Cloudflare 免费版即可吸收大量中小规模 DDoS 攻击(通常在数 Gbps 以内)。Cloudflare Pro($20/月)以上版本具备更强的攻击吸收能力和更精细的规则配置。
第三步:在服务器端封禁攻击 IP 段
# 安装 iptables(通常已预装)
# 封禁单个 IP
sudo iptables -A INPUT -s 攻击IP -j DROP
# 封禁整个 IP 段(如 1.2.3.0/24)
sudo iptables -A INPUT -s 1.2.3.0/24 -j DROP
# 限制单个 IP 每秒的连接数(防 CC 攻击)
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j DROP
# 保存规则(Ubuntu)
sudo iptables-save | sudo tee /etc/iptables/rules.v4第四步:在 Nginx 层限制请求频率
# 在 nginx.conf 的 http 块中添加
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
# 在站点配置的 server 块中应用
limit_req zone=one burst=20 nodelay;
limit_conn addr 20;sudo nginx -t && sudo systemctl reload nginx三、DDoS 攻击的常见类型与应对策略
| 攻击类型 | 特征 | 应对方案 |
|---|---|---|
| 流量型攻击(UDP Flood / ICMP Flood) | 带宽被打满,服务器无法响应 | 黑洞路由 + 高防 IP |
| SYN Flood | 大量半连接耗尽连接表 | 开启 SYN Cookie + iptables 限速 |
| CC 攻击(HTTP Flood) | 大量 HTTP 请求使 PHP/DB 过载 | Cloudflare + Nginx 限速 + WAF |
| 慢速攻击(Slowloris) | 保持大量慢连接,耗尽连接数 | Nginx 设置 client_body_timeout + 连接数限制 |
| DNS 放大攻击 | 利用 DNS 服务器放大攻击流量 | 接入 Cloudflare 代理,隐藏真实 IP |
四、开启 SYN Cookie 防 SYN Flood
# 临时开启(重启后失效)
sudo sysctl -w net.ipv4.tcp_syncookies=1
# 永久生效(写入配置文件)
echo "net.ipv4.tcp_syncookies = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 2048" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_synack_retries = 2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p五、长效防御体系建设
方案一:Cloudflare 免费/Pro(推荐中小网站)
- 免费版:可吸收大多数中小规模 DDoS,适合个人站和小型商业站
- Pro($20/月):WAF、Bot 管理、DDoS 高级防护
- Business($200/月):DDoS 无限防护,适合中型电商
方案二:高防服务器(适合长期被攻击的业务)
高防服务器在数据中心层面配置了专用的流量清洗设备,可以吸收 10Gbps~1Tbps 级别的攻击流量。适合:
- 游戏服务器(游戏行业是 DDoS 攻击重灾区)
- 金融/支付类网站
- 曾被多次攻击的业务
方案三:真实 IP 隐藏(从根源预防)
从一开始就用 Cloudflare 代理隐藏真实 IP,攻击者无法知道你的服务器 IP,DDoS 攻击无从发起,是成本最低、效果最好的预防措施。
总结
DDoS 攻击的应对核心是:快速止血(黑洞路由)→ 流量清洗(Cloudflare)→ 根因防御(隐藏真实 IP)。三步缺一不可,建议在遭受攻击之前就完成 Cloudflare 接入,把攻击消弭于萌芽阶段。
后浪云香港服务器支持配合 Cloudflare 使用,自营 IP 资源,遭受攻击时可联系我们技术团队协助处置。如有高防需求,也欢迎通过 Telegram 或工单咨询专属方案。
