美国服务器被 DDoS 攻击怎么办?6 步排查与清洗方案
发布时间:2026-10-14
问题一:如何判断自己被 DDoS 了?
- 表现:网站突然打不开或极慢,监控显示带宽打满、CPU 飙升、连接数暴增;正常用户也访问不了,但服务器本身没报错。
- 可能原因:① SYN Flood 占满半连接队列;② UDP Flood 打满带宽;③ HTTP 慢速攻击占满 Web 连接;④ DNS 放大/反射攻击。
- 排查步骤:
1.iftop -i eth0看入站流量是否远超正常;
2.netstat -an | wc -l看连接数是否暴增;
3.tcpdump -i eth0 -c 1000 | awk '{print $3}' | sort | uniq -c | sort -rn | head看来源 IP 是否集中;
4. 登录云厂商控制台看是否有 DDoS 告警。 - 快速修复:立即启用高防 IP/清洗服务,把流量切到清洗中心;同时临时关闭非必要端口,减轻服务器压力。
问题二:SYN Flood 打满连接队列怎么办?
- 表现:
netstat -an | grep SYN_RECV | wc -l显示数千到数万半连接,网站响应极慢或超时。 - 可能原因:攻击者发送大量伪造源 IP 的 SYN 包,占满内核 SYN backlog。
- 排查步骤:
1.sysctl net.ipv4.tcp_max_syn_backlog看当前队列大小;
2.ss -s看 TCP 统计;
3.tcpdump -i eth0 'tcp[tcpflags] == tcp-syn' -c 100抓包确认。 - 快速修复:
1. 开启 SYN Cookie:sysctl -w net.ipv4.tcp_syncookies=1;
2. 增大 backlog:sysctl -w net.ipv4.tcp_max_syn_backlog=8192;
3. 最根本的方案:上 L3/L4 高防清洗,在流量到达服务器前就过滤掉。
问题三:UDP/ICMP Flood 打满带宽怎么办?
- 表现:
sar -n DEV 1 5显示入站带宽接近端口上限,丢包率飙升,所有服务都受影响。 - 可能原因:攻击者利用 DNS/NTP/SSDP 反射放大,流量可达 100Gbps+。
- 排查步骤:
1.tcpdump -i eth0 -c 500 'udp or icmp' | head -50看协议分布;
2. 检查 53/123/1900 端口是否有大量请求(反射攻击特征)。 - 快速修复:
1. 服务器侧iptables -A INPUT -p udp --dport 53 -j DROP临时封堵非必要 UDP;
2. 根本方案:上高防 IP,清洗中心有足够带宽吸收 + 特征过滤;
3. 联系机房临时黑洞 IP 止损(但正常用户也访问不了,仅应急)。
问题四:HTTP 慢速攻击(CC)怎么应对?
- 表现:带宽没满但 Nginx
active connections激增,502/504错误增多,PHP-FPM 进程耗尽。 - 可能原因:攻击者用大量低频 HTTP 请求占满连接,或模拟真实爬虫/用户压垮应用层。
- 排查步骤:
1.tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head找高频 IP;
2.curl -s http://127.0.0.1/nginx_status看 active/waiting。 - 快速修复:
1. Nginx 层限频:limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;;
2. 封高频 IP:iptables -A INPUT -s x.x.x.x -j DROP;
3. 上 7 层 Bot 管理(设备指纹 + JS 挑战 + 人机识别),能挡掉 95%+ CC 攻击。
问题五:攻击停了但网站还是慢?
- 表现:DDoS 结束后网站依然卡顿,连接数偏高,部分用户反映超时。
- 可能原因:① 攻击导致数据库连接未释放;② 缓存被击穿;③ 文件系统 I/O 积压;④ 内核 backlog 残留。
- 排查步骤:
1.mysql -e "SHOW PROCESSLIST" | wc -l看数据库连接数;
2.iostat -x 1 5看磁盘 I/O;
3.ss -s看 TIME_WAIT 是否过多。 - 快速修复:
1. 重启 Nginx/PHP-FPM 释放连接;
2. 检查 Redis 命中率,必要时预热缓存;
3.sysctl -w net.ipv4.tcp_tw_reuse=1加速 TIME_WAIT 回收;
4. 如数据库压力大,临时开启从库分担读请求。
问题六:如何预防下一次 DDoS?
- 架构层:接入 高防 IP/CDN,隐藏源站 IP;Web 层多节点 + 负载均衡,避免单点。
- 监控层:30s 粒度带宽/连接数/CPU 监控,设置带宽利用率 >70%、连接数 >5000 告警。
- 预案层:提前写好「攻击应急 Runbook」,明确谁负责切流、谁负责联系清洗厂商、谁负责对外公告;每季度演练 1 次。
- 保险层:购买 DDoS 保险,覆盖攻击期间的收入损失与应急成本。