服务器被 DDoS 攻击后怎么恢复
被攻击之后的恢复,不只是「等它停」。处理不当会留下后遗症:数据损坏、IP 被拉黑、玩家流失。
这篇按时间线讲,从攻击中到攻击后。
攻击还在进行时
1. 先保业务,再查原因
很多人第一反应是分析攻击来源、抓包取证。但业务正在流血,先止血。
- 切流量。如果域名解析到源站,立刻切到防护节点或 CDN。这一步最快见效。
- 换 IP。如果攻击是直接打 IP,且没有防护,联系机房换一个新 IP(注意:新 IP 很快会被重新发现,只是临时缓解)。
- 关非核心服务。排行榜、公告、活动页面这些先关掉,把资源留给核心玩法。
- 发公告。告诉玩家发生了什么、预计多久恢复。沉默比掉线更伤玩家信任。
2. 记录证据
边处理边记录,这些后面有用:
- 流量监控截图(攻击开始时间、峰值、持续时间)
- 服务器负载截图(CPU、连接数)
- 攻击源 IP 列表(从日志提取)
- 机房/云厂商的告警通知
如果后续要报警或者向服务商申诉,这些是必要材料。
攻击停止后
1. 验证数据完整性
这一步最容易被跳过,但最重要。
攻击期间数据库可能被写入脏数据,或者有未完成的事务。检查:
- 玩家账号是否完整(有没有凭空消失的)
- 充值记录是否对得上
- 物品/装备数据有没有异常
- 数据库表有没有损坏(用
CHECK TABLE)
重点:有些攻击是「声东击西」——用 DDoS 吸引你注意力,同时尝试入侵数据库。所以攻击停止后一定要检查有没有异常登录、有没有被植入后门。
2. 检查服务器是否被入侵
- 看登录日志,有没有陌生 IP 的 SSH/RDP 登录
- 看进程列表,有没有不认识的进程
- 看计划任务/crontab,有没有可疑的定时任务
- 看网站目录,有没有新增的可疑文件(webshell 通常是 .php/.aspx 小文件)
- 检查数据库账号,有没有新增的陌生账号
3. 清理攻击痕迹
- 封禁攻击源 IP 段(在防火墙层面)
- 清理日志里的垃圾请求(可选,主要是为了后续分析方便)
- 如果 IP 被 Google/百度 标记为恶意,提交解封申请
4. 恢复玩家信任
这个比技术恢复更难:
- 补偿。按掉线时长给补偿,这是行业惯例
- 透明。公告说明原因,别含糊其辞
- 承诺。说明后续会怎么防,给玩家信心
长期:避免再次发生
1. 源站 IP 彻底隐藏
这是根本。被攻击过一次的服务器,会被记在攻击者的名单里,后面还会反复被试探。
具体做法:
- 客户端不直连源站,走节点接入
- 源站防火墙只放行防护节点的回源 IP
- 子域名、测试环境、后台系统也要处理,别留后门
2. 建立监控告警
| 监控项 | 告警阈值 |
|---|---|
| 入向带宽 | 超过基线 3 倍 |
| CPU 使用率 | 持续 5 分钟 > 80% |
| 连接数 | 超过正常峰值 2 倍 |
| 单接口 QPS | 超过基线 5 倍 |
| 数据库连接数 | 超过 80% |
告警要能推到手机上,别只发邮件。
3. 准备应急预案
提前写好「被打时怎么办」,包括:
- 谁负责决策(切流量、关服务)
- 服务商的紧急联系方式
- 备用 IP、备用节点
- 玩家公告模板
真出事的时候,慌乱中做的决定通常是错的。
4. 定期备份
这是最后一道防线。要求:
- 每天自动备份数据库
- 备份文件存到不同服务器(别和被攻击的机器放一起)
- 定期验证备份能否恢复(很多人备份了但恢复不了)
一个真实教训
见过一个案例:服务器被打了两小时,流量攻击本身没造成数据损失。但攻击者在攻击期间通过一个未修补的漏洞进了数据库,把玩家表清空了。
等发现的时候,备份是三天前的。三天内的充值记录全没了,玩家闹翻天。
教训是:DDoS 只是表面,真正的风险是它掩护下的入侵。
小结
| 阶段 | 要做的事 |
|---|---|
| 攻击中 | 切流量、关非核心、发公告、记证据 |
| 刚停止 | 查数据完整性、查是否被入侵、清痕迹 |
| 恢复期 | 补偿玩家、透明沟通 |
| 长期 | 隐藏源站 IP、建监控、备预案、每日备份 |
关于怎么隐藏源站 IP,可以看 游戏盾能破吗 那篇里的六条泄露途径。