检查服务器是否被DDoS攻击,核心是观察网络流量异常、CPU负载飙升和连接数暴增,结合日志与流量分析工具即可快速定位。
很多技术团队遇到网站卡顿、服务器卡死,第一反应就是“被DDoS了”,但实际排查中,误判率不低,只要掌握几个关键指标和命令行操作,三五分钟就能确认攻击是否存在,下面从异常现象、排查工具、不同场景以及建立长效机制四个层面展开,帮助你在实战中精准判断。
服务器被DDoS怎么查?从异常现象到工具实战
流量异常是DDoS最直接的信号。 高带宽攻击会让服务器公网接口流量瞬间跑满,而低带宽但高并发的攻击(比如CC)则会表现为连接数爆炸,两者在排查时侧重点不同。
流量性攻击:带宽耗尽与连接数激增
当服务器丢包率上升、响应超时,第一时间查看网卡流量,SSH登录后运行iftop -i eth0(eth0为实际网卡名),如果入流量持续高于平时峰值且来源IP分散,基本可判定是流量型攻击,更细化的命令是用nload动态监控进出口速率,如果带宽被占满,说明攻击者正在用大流量堵塞链路。
接着查看连接状态:netstat -an | grep :80 | wc -l可统计TCP连接数,若半连接(SYN_RECV)数量异常高(远超业务正常值),说明遭遇SYN Flood,若TIME_WAIT持续累积过万,也值得警惕,正常服务器同时连接数在千级别,DDoS下可轻松冲到数万甚至数十万,CPU软中断占用也会同步飙升。
资源消耗型攻击:CPU与内存异常
非流量型攻击如CC,带宽占用不高,但应用层压力巨大,观察top命令输出,若CPU被用户态进程(如Web服务器)或内核软中断(ksoftirqd)长期占满,且内存缓存被快速占用,说明攻击可能集中在应用层,具体到进程:用ps aux --sort=-%cpu找出CPU消耗最高的进程,正常业务进程不会长期超过80%,如果nginx或php-fpm一直跑满,且开启的worker数量远超配置,则需进一步检查日志。
日志层面的佐证方法
Nginx或Apache的访问日志是区分正常流量与恶意请求的关键,攻击者往往集中请求一个页面或接口,日志中会出现同一URI、同一User-Agent或Referer大量重复,用awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -20即可快速找出次数最多的URL,若明显不符合正常访问结构,极可能是CC攻击,应用日志中大量499(客户端主动断连)或502状态码,也暗示后端处理阻塞,可能是攻击导致。
DDoS攻击查询工具对比:免费命令与商业防御方案
排查时,选择合适的工具能大幅提升效率,免费的命令行工具适合应急初步判断,而商业或云平台工具则提供持续告警和清洗能力。
命令行快速诊断工具
- netstat:查看实时连接数与状态,
netstat -nat显示所有TCP连接,配合awk按IP聚合可发现高频来源。 - iftop:实时流量视图,按IP展示收发流量,可快速锁定流量来源端口。
- tcpdump:深度抓包,直接分析包内容,比如
tcpdump -i eth0 -n port 80 and host not 你的服务器IP过滤出针对端口的攻击包,如果抓到的SYN包远多于SYN-ACK包,基本确认SYN Flood。 - ss:比netstat更高效的连接统计工具,
ss -s可概览整个TCP状态计数器,ss -nat列出连接。
这些工具都预装在大多数Linux发行版中,零成本上手,配合脚本记录异常IP,也可以临时封禁:iptables -A INPUT -s 攻击IP -j DROP。
自动化脚本与开源防御
DDoS deflate是最流行的开源脚本,定期检查连接数,超过阈值后自动调用iptables封禁IP,适合小规模攻击,但面对每秒几万IP的分布式攻击会失效,且可能误封正常用户,Fail2ban通过匹配日志规则实施封禁,更适合CC类型的反复尝试,两者均需谨慎设置阈值,结合业务平均连接数来调整。
云平台内置防护与流量分析
对于国内服务器用户,登录云厂商控制台是最快的确认方式,主流厂商在“安全”或“DDoS防护”模块免费提供攻击事件记录和流量图表,包含攻击类型、峰值及源区域,即使没有购买高防IP,基础防护也能展示最近攻击的概要信息,帮助技术团队快速定性,无需安装任何软件,直接通过Web界面查看,改写了传统排查的流程。
服务器DDoS防护价格与方案选择
确认攻击后,是否花钱买防护,取决于攻击频率和规模,先算一笔账:自己用iptables硬扛误封率高,且带宽被占满就无解;购买高防IP每月几百元到数万元不等,但盲目最贵方案同样是浪费。
什么情况可以免费扛
如果攻击峰值低于1Gbps,CC的QPS在业务承受范围内,可以通过调优暂不买高防,具体做法:优化Nginx限流(
limit_req)、增加连接池、开启CDN隐藏源IP,CDN本身具备一定的防攻击能力,能扛住小型的四层和七层攻击,开启云平台免费的基础DDoS清洗(通常是5Gbps以内)也能抵御大多数扫描级攻击。
什么情况必须投入高防
当攻击峰值超过10Gbps,或者连续三天不断攻击,高防IP是必需选项,价格核心指标是“保底带宽”和“弹性清洗能力”,市面常见方案:每月几百元的保底20Gbps,加上按量计费的弹性(最高能到T级)。业内专家指出,选择时重点看清洗节点数量和是否支持HTTP协议深度检测,这对CC攻击效果差异很大,如果业务有地域属性,比如只服务华东用户,选择华东清洗节点即可,不必买全国泛播,避免成本浪费。
不同攻击类型的排查侧重点
并不是所有DDoS都表现为带宽跑满,区分攻击类型能让你用更对口的工具。
四层攻击:看流量与端口
SYN Flood:netstat -s看“SYN to SYN/ACK”的比例,如果发送SYN/ACK远少于接收的SYN,说明握手失败,或用tcpdump抓20秒包,统计'tcp[tcpflags] & (tcp-syn) != 0'数量,UDP Flood:iftop看到UDP流量异常,端口固定,比如DNS反射攻击打向53端口,就会看到大量DNS应答报文。
七层攻击:看日志与资源消耗
HTTP Flood(CC)的典型特征是带宽不大,但CPU和worker进程升高,除日志分析外,可以临时关闭access_log,观察worker空闲变化,使用ab压测对比正常情况,但更直接的是检查/proc/net/nf_conntrack(连接跟踪表),若已满导致丢包,必是大量虚假连接,这类攻击需要WAF或高防的CC防护模块才能彻底清洗。
混合攻击:多维度交叉
现今攻击很少只用单一手段,经常是先UDP大流量耗尽带宽,再同时发起HTTP Flood,先看流量方向,再切换工具分析应用层,建议准备一个脚本同时抓取iftop和nginx日志的快照,对比时间点,识别出攻击复合特征。
建立常态化DDoS监测与应急机制
被动响应会耽误业务恢复时间。行业共识认为,搭建简单的监控系统比事后再查更高效。
日常监控指标与阈值
使用Zabbix或Prometheus监控出口流量、服务端口连接数、TCP SYN_RECV数量,阈值可设为正常峰值的2-3倍,如平时流量100Mbps,设定告警为300Mbps,一旦触发,自动执行预定义脚本抓取故障时刻的
ss -tlnp和tcpdump存储文件,供后续溯源。
应急响应流程
遇到攻击后,按顺序操作:停止非关键服务(如FTP、备案网站的后台),将源站IP切换至备用线路或开启云平台清洗,同时联系IDC或云厂商技术支持,开启黑黑洞(丢包状)或清洗,记录攻击开始时间、峰值、源IP分布,这些数据后续用于申请更高防护,尽量不要重启服务器,重启可能丢失已建立的监控和攻击证据。
防护服务选购关键指标
选择高防IP时,关注清洗能力(bps、pps、qps三者都重要),节点数量(全球节点比单节点好),自定义策略(如白名单、CC防护阈值),按年付通常比月付优惠,且部分厂商提供试用服务。行业共识是优先选择有独立清洗集群的厂商,避免与其他客户共享清洗资源。
查DDoS本质上是从异常现象中找规律,掌握流量与日志分析的两条主线,结合云平台工具,多数攻击都能在几分钟内定性,按业务实际选择防护方案,才能在成本和安全间找到平衡。
服务器查DDoS相关问题解答
Q1: 服务器被DDoS一定要买高防吗?
不一定,如果攻击在1Gbps以内且频率低,可通过CDN、防火墙规则和限流暂时应对,但如果攻击超过10Gbps或连续多日持续,建议购买专业高防IP,购买前先用监控工具确认攻击峰值,选择保底带宽略高于日常流量、弹性上限高于攻击峰值的套餐。
Q2: 怎么区分DDoS和正常业务的高流量?
看流量曲线与大包来源,DDoS流量在分钟内骤升,来源IP分散且地理位置不符用户分布;正常流量随时间平滑波动,IP范围相对集中,大量状态码为499或502的请求往往伴随攻击,用netstat统计半连接数,DDoS时SYN_RECV会异常多,而正常流量下几乎为零。
Q3: 使用云主机怎么快速查是否被DDoS?
先登录云厂商控制台的“DDoS防护”或“安全中心”,找到攻击事件或实时流量图,如果显示已触发清洗,则证实被攻击,同时SSH到服务器,用iftop查看网卡流量是否异常,用netstat统计连接数,配合tcpdump抓包确认类型,确认后立即开启免费基础清洗或提交工单申请紧急防护。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/495223.html



