服务器被 DDoS 会导致硬件损坏吗?三种间接损伤与真实成本
「会不会把服务器打坏」是被攻击之后问得最多的问题之一,而且经常是在半夜三点、客户已经被打了两个小时的时候问的。
先把结论说清楚:纯粹的大流量 DDoS 攻击,几乎不会造成物理硬件损坏。但会烧钱、会拖垮业务、也会在某些特定情况下间接损伤硬件。下面分开讲。
为什么大流量攻击通常打不坏硬件
现代服务器的硬件设计本身就有大量冗余,攻击流量主要消耗的是三个东西,而这三个都不是「一次性烧毁」型的损耗:
| 被消耗的资源 | 攻击时的表现 | 会不会造成永久损伤 |
|---|---|---|
| 出口带宽 | 网卡跑满、丢包、延迟飙升 | 不会。带宽是租来的,打满了只是这段时间用不了 |
| 连接表 / 会话表 | 新连接建不起来,ss -s 一片 SYN_RECV | 不会。是内存里的数据结构,进程重启就恢复 |
| CPU 中断处理 | 软中断(si)占用高,业务线程抢不到 CPU | 不会。但长时间 100% 会加速老化,属于慢性损耗 |
换句话说,攻击让你用不了服务器,而不是毁掉服务器。这两件事在商业上的区别很大:前者是停机损失,后者是资产损失。
三种「间接损伤」的真实情况
1. 磁盘被日志写满,导致数据库损坏
这是最常见的间接损伤,而且和攻击直接相关。
被攻击时,Web 服务器(Nginx / Apache)、防护软件、业务程序都会疯狂写日志。一个 CC 攻击打过来,每秒几千个请求,access.log 能在几小时内涨到几十 GB。
磁盘写满之后会发生什么:
- MySQL / Redis 无法写入,可能进入只读模式,严重的会导致 InnoDB 表空间损坏
- 业务程序写文件失败,抛出异常,进程崩溃
- 系统本身无法写临时文件,
sshd可能登录不上,你连救都救不了
这个是可以防的,而且成本极低——给日志配一个上限:
# Nginx:日志按天切分,保留 7 天,自动压缩
# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
# 系统层兜底:磁盘用到 90% 就告警
df -h | awk '$5+0 > 90 {print "磁盘告警: " $0}'
2. 电源和散热压力
这个说法有一定道理,但被夸大了。
攻击时 CPU 长时间满载,功耗确实会上升,机房温度也会升高。如果服务器本身的散热设计余量不足(比如灰尘堆积、风扇已经老化),长期高温运行会加速电容和风扇轴承的老化。
但要注意时间尺度:这是以月为单位的慢性损耗,不是「被打一次就坏」。真正因为攻击导致硬件当场损坏的案例极少,而且通常伴随其他问题(比如电源本身就有故障)。
如果你的服务器是自己托管的物理机,被打之后顺手做一次清灰、检查风扇转速,比担心「被打坏」更实际。
3. SSD 写入寿命
这个是真问题,但只在高频攻击下才明显。
CC 攻击每秒产生大量日志写入,如果日志直接写 SSD,一天写入几百 GB 到几 TB 是可能的。消费级 SSD 的 TBW(总写入量)通常在几百 TB 量级,持续这样打确实会消耗寿命。
解决办法很简单:把日志目录挂到独立盘,或者用内存盘(tmpfs)存临时日志,只把汇总数据定期落盘。
比「硬件坏没坏」更该关心的三件事
处理过几百个案例之后,我的观察是:客户问「硬件会不会坏」,实际担心的是别的东西。
数据还在不在
攻击本身不会删数据。但如果你为了「快速恢复」而重装系统、或者被攻击者趁乱利用漏洞进来,数据就危险了。
被打的第一时间,先做一次异地备份,再动手处置。顺序不能反。
会不会被云厂商停机
会。而且这是最常见的实际损失。
阿里云、腾讯云等厂商的协议里通常有条款:如果攻击流量影响到机房其他用户,厂商有权封禁 IP 或强制关机。这不是赔偿问题,是你连服务器都摸不到。
被停机之后,恢复要提交工单、说明情况,快的几小时,慢的一两天。
要花多少钱
这才是真金白银的部分。一次 300Gbps 的攻击持续 2 小时,如果是按流量计费的云服务器,账单可能是这样:
| 项目 | 计算方式 | 大致金额 |
|---|---|---|
| 入方向攻击流量 | 300Gbps × 2h ≈ 270TB | 按 0.8 元/GB 算约 22 万元 |
| 业务停机的营收损失 | 看你的日流水 | — |
| 玩家流失 | 停服一次掉 10-30% 活跃 | 长期影响 |
注意:大部分云厂商对攻击流量有减免政策,但不是自动的,需要你主动申请,而且要提供证据。很多人不知道这一点,白白付了钱。
怎么从根本上避免这些问题
上面说的所有损失,根源都是同一个:攻击流量打到了你的源站。
只要源站 IP 暴露,攻击者就能直接把流量灌到你的服务器上,所有的带宽、CPU、磁盘、账单问题都会跟着来。
反过来,如果客户端连的不是源站,而是防护节点:
- 攻击流量打在节点上,被清洗掉,源站收到的只有正常请求
- 源站带宽不会被跑满,CPU 不会被打满
- 没有异常流量,就不会产生天价账单
- 云厂商也不会因为「影响机房」而封你的 IP
这也是游戏盾这类产品存在的根本原因——不是为了「抗住更大的攻击」,而是让攻击根本到不了你的服务器。
想了解源站隐藏具体是怎么做的,可以看DDoS 防护原理。如果你已经被打了,先看服务器被攻击怎么解决做应急处置。