服务器被攻击打挂,先别在群里问谁干的,也别一上来就重启。业务停一分钟就烧一分钟钱,先止血,再恢复,最后才追责和加固。攻击打挂一般分三类:流量型DDoS把带宽和连接数打满,应用层CC把CPU和数据库拖死,入侵型直接提权、删库、加密勒索。类型不同,动作有差别,但核心顺序差不多:隔离、切流、恢复、溯源、补漏。
先看现象。带宽跑满、丢包严重、SSH连不上,多半是DDoS。网站能开但卡死、数据库连接池爆满、CPU 100%,常见是CC或慢查询被利用。文件被加密、首页被改、出现陌生进程,那就是被入侵了。公开报告里,AWS曾缓解过2.3Tbps的DDoS攻击,Cloudflare在2023年拦过每秒2.01亿请求的HTTP/2快速重置攻击。别觉得公司小就没人打,自动化扫描和勒索团伙不看规模,只看有没有漏洞。
止血要快。有高防的立刻切高防IP,没有的先把域名解析到CDN或云WAF,开清洗和限流。云服务器安全组只放行必要端口,异常IP段直接封。CC攻击先上WAF的CC防护,调低单IP并发和频率,静态资源走CDN,动态接口加验证码或JS挑战。数据库连接池被打满,别急着重启数据库,先限流应用层,不然重启完马上又满。流量特别大时,云厂商会触发黑洞,机器直接断网,这时候别死等,赶紧切备用IP或备用云。
恢复业务别急着全量回滚。先确认备份可用,数据库binlog、快照、对象存储版本都看一眼。被勒索加密不要付赎金,先隔离机器,保留样本,找专业应急。恢复时按最小权限来,先起核心接口,再逐步放量。改掉所有密码、密钥、AK/SK,检查定时任务、启动项、SSH authorized_keys、数据库用户权限。很多入侵会留后门,比如隐藏进程、rootkit、计划任务拉马。可以用chkrootkit、rkhunter、河马、D盾扫一遍,但别只依赖工具,人工看异常外连和陌生文件。
溯源和取证同步做。保留系统日志、Nginx/Apache访问日志、WAF日志、云监控、流量镜像。看攻击源IP、UA、请求路径、频率。如果是CC,通常集中在搜索、登录、下单接口。如果是DDoS,看流量类型是SYN、UDP还是HTTP Flood。把日志导出到安全地方,别被攻击者删了。有条件上蜜罐,能提前发现扫描和爆破。

加固是长期活。架构上做动静分离、读写分离、微服务隔离,别让一个接口拖垮整站。数据库不暴露公网,Redis加密码和ACL,MongoDB别裸奔。后台路径改掉,默认密码全换,开MFA。补丁及时打,尤其是Log4j、Fastjson、Spring这些历史漏洞。备份要3-2-1,至少一份离线,定期做恢复演练。高防不是万能,WAF也可能被绕过,关键业务做多活和降级预案。比如支付挂了,先切备用通道;推荐服务挂了,返回默认列表,别让整个APP白屏。
另外,日常要准备应急包:备用域名、备用IP、高防联系人、云厂商工单通道、数据库恢复脚本、服务降级开关。出事时按预案走,比临时找人快得多。被攻击打挂不丢人,丢人的是同样的问题来两次。把这次攻击的流量、时间线、处理动作写成复盘,更新到预案里。下次再被打,十分钟内能切流、半小时内能恢复核心业务,就算合格。