服务器被 DDoS 攻击,如何判断攻击类型?

服务器突然卡顿、网站打不开,第一反应是DDoS攻击。
但攻击类型不同,应对方法天差地别。
对新手来说,先看清是网络层洪水还是应用层冲击,比盲目封IP更重要。

准备工作:确认你能接触到这些工具

在动手之前,确保你已经:

  • 通过SSH登录服务器(Windows用Putty,Mac/Linux直接终端)。
  • 拥有root或sudo权限(临时提权用 sudo su)。
  • 常用命令已安装:netstatsstcpdumpiftop。如果缺少,用包管理器安装:yum install -y net-tools iftop tcpdump(CentOS)或 apt install -y net-tools iftop tcpdump(Ubuntu)。
  • 网站如果是Nginx,记下日志路径:一般位于 /var/log/nginx/access.log

第一步:看表象,缩小攻击范围

远程连接不上或SSH卡顿,通常说明网络层遭受大流量攻击。
如果SSH能连但网站响应极慢,可能是应用层攻击。
执行以下命令快速判断:

# 查看服务器整体负载
top -bn1 | head -10

如果CPU或内存利用率异常高(比如接近100%),说明攻击可能消耗了运算资源。
接着看网络接口流量:

# 监控实时带宽(Ctrl+C退出)
iftop -i eth0

观察流入流量是否远超服务器带宽(比如100M带宽显示500M),明显是带宽型攻击。
如果没有明显带宽暴涨,但网站卡,要怀疑应用层爬虫或CC攻击。

第二步:检查连接状态,锁定原始痕迹

使用 netstat 统计当前连接,是区分攻击层级的利器。

# 统计所有TCP连接状态数量
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn

输出类似:

500 SYN_RECV
300 ESTABLISHED
120 TIME_WAIT

如果 SYN_RECV 数量异常多(成百上千),基本是 SYN Flood 攻击。 这是网络层攻击。
接着查看来源IP:

# 查看哪个IP发起的SYN请求最多
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

如果来源IP分散且每个IP连接数少,可能是分布式攻击。
如果单个IP连接数极高,先检查是不是合法服务。

如果 SYN_RECV 很少,ESTABLISHED 数量巨大(几千),且来源IP集中,可能是应用层爬虫或HTTP Flood。 此时需要看日志。

第三步:翻日志,揪出应用层异常

登录Nginx日志,用下面命令快速过滤异常请求:

# 查看最近10000条日志,统计请求最多的IP
tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20

如果前几个IP请求量远超正常(比如几百次/秒),且请求路径单一(尤其是 /?/index.php),很可能是HTTP Flood。
再针对性过滤:

# 查看某个IP的请求特征
grep '192.168.1.100' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -10

如果都是 /index.html 等静态资源,是CC攻击;
如果大量POST到登录接口,可能是撞库或应用层攻击。

避坑指南:新手最容易犯的错

  • 不要立刻封所有SYN_RECV的IP。合法用户的SYN包也会进入SYN_RECV状态,过度封禁会导致误伤。建议先确认攻击特征(如源IP分布是否随机、请求包大小是否异常)。
  • 不要忽略HTTPS攻击。443端口的TLS握手也会消耗CPU,用 ss -tlnp | grep 443 检查连接数。
  • 不可靠现象判断。如果服务器响应突然变慢,先排除自身程序Bug(比如死循环或慢查询),再怀疑DDoS。可以用 strace 跟踪进程。
  • 别直接用iptables封整个IP段。如果攻击IP来自多个国家随机,封IP段可能误伤正常用户。优先考虑限流(rate limit)或启用防DDoS服务(如Cloudflare、高防IP)。

验证效果:判断是否已经定性

执行完上面步骤后,你应该能初步回答以下问题:

  • 攻击主要消耗带宽还是CPU?
  • 连接状态中SYN_RECV多还是ESTABLISHED多?
  • 日志中请求是否来自同一路径且频率异常?

如果以上三条分别对应:带宽暴涨且SYN_RECV多 → SYN Flood;
CPU高且ESTABLISHED多 → HTTP Flood;
日志中单一IP高频请求 → CC攻击。

最后,用 iptables -L -n 或云服务商防护面板观察流量是否稳定。
如果攻击仍在,建议升级专业防护方案。
新手先学会判断类型,再对症下药,这是最核心的第一步。

分享到:
上一篇
服务器被植入后门,如何加固 SSH 登录?
下一篇
用大模型写 SQL 语句,导致数据库性能下降
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意