服务器被入侵了怎么办?一个老运维的实战应急指南
做运维这几年,最怕的不是凌晨三点被电话吵醒,而是电话那头说:“服务器好像被人搞了。”CPU飙到100%,数据库被删,页面被篡改,或者莫名其妙多了几个用户——这些场景我经历过不止一次。下面我把真实踩坑后的应对流程写出来,全是实操步骤,不扯理论,希望你能少走弯路。
第一步:别慌,先断网保留现场
发现异常后,不要直接重启!重启可能让攻击者清理痕迹,甚至触发自毁脚本。正确做法:
- 立即断开网络:如果是云服务器,在控制台将安全组入站规则全部拒绝;如果是物理机,直接拔网线或关闭网卡(
ifdown eth0)。目的是阻止攻击者继续操作或外传数据。 - 保存当前状态:用
ps auxf > /tmp/ps_log.txt、netstat -anp > /tmp/net_log.txt、lsof -i > /tmp/lsof_log.txt等命令把进程、网络连接、文件打开情况记录下来。注意:如果怀疑有rootkit,这些命令可能已被篡改,尽量用statically linked的busybox或从优盘启动的系统执行。 - 不要登录或执行风险操作:比如不要直接
kill可疑进程,可能触发反杀。
第二步:备份,但别全盘打包
很多人第一反应是tar czf backup.tar.gz /,这是大忌!因为很可能把后门文件也打包进去,日后恢复时再次中招。正确做法:
- 优先备份配置文件:如
/etc/、网站代码(排除可疑文件)、数据库(如果还在运行,用mysqldump导出,注意先确认数据库没有恶意触发器)。 - 使用dd或磁盘快照:在云平台(如沐雨云)直接创建快照,这是保留完整现场的最佳方式,后续可以挂载到离线服务器分析。沐雨云控制台的快照功能秒级创建,而且不占用主机性能,强烈建议开启自动快照。
第三步:排查入侵来源——翻日志是基本功
隔离后,在另一台干净机器上用挂载或scp的方式分析日志,不要在受害服务器上直接操作。
- 登录日志:
/var/log/secure(CentOS)、/var/log/auth.log(Ubuntu)。用grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr看哪些IP在暴力破解。如果发现很多Accepted记录来自陌生IP,说明密码已经被猜中。 - 命令历史:
cat ~/.bash_history,攻击者可能会删除,但.bash_history有时会被重定向到/dev/null,注意检查~/.bashrc或~/.profile是否被篡改。 - 计划任务:
crontab -l,查看有无异常定时任务,尤其注意/etc/crontab和/var/spool/cron/下的文件。攻击者常把后门脚本放在/tmp、/dev/shm、/var/tmp等目录,这些目录要重点检查。 - 网络连接:
netstat -anp | grep ESTABLISHED,看有没有连向境外IP的异常进程。注意:有些后门会伪装成[kworker]或[sshd]等系统进程名。
避坑提醒:不要只依赖top或ps,很多rootkit会隐藏进程。建议安装chkrootkit和rkhunter扫描,命令:rkhunter --check --skip-keypress。
第四步:清除后门——别留活口
找到后门后,不要只删文件,要清干净:
- 禁用异常用户:
usermod -L 用户名然后usermod -s /sbin/nologin 用户名,再删除/etc/passwd和/etc/shadow中的记录。 - 清除计划任务:删除异常条目,注意检查
/etc/anacrontab、/etc/cron.d/目录。 - 修复被改动的系统文件:比如
/bin/ls、/bin/ps被替换,最好从同版本系统的干净安装包中提取。 - 彻底清除web shell:网站目录下常有
.php、.asp、.jsp等木马,用find /var/www/html -name "*.php" -newer /etc/shadow查找近期修改过的文件。还可以用在线webshell查杀工具扫描(注意在安全环境下进行)。
第五步:系统加固——修补漏洞
清理完毕后,必须做全面加固,否则很快又会中招:
- 修改所有密码:root、数据库、ftp、网站后台等,必须强密码(12位以上,大小写+数字+符号)。如果使用密钥登录,重新生成密钥对,禁用密码登录。
- 关闭无用端口:
iptables -P INPUT DROP,只放行必要的端口(如22、80、443)。配置fail2ban防止暴力破解:fail2ban-client set sshd banip 攻击IP。 - 更新系统补丁:
yum update或apt update && apt upgrade,特别注意OpenSSH、Apache、Nginx、MySQL等软件的版本。 - 启用审计功能:
auditd可以记录文件变化,比如监控/etc/passwd被修改时立即告警。 - 配置安全组:在云平台的控制台(如沐雨云)设置白名单策略,只允许公司出口IP访问22端口,开放其他端口也要限制来源。
第六步:恢复服务——谨慎上线
- 如果确认系统已干净,可以从备份恢复配置文件和数据库。如果担心遗留未知后门,最好重装系统,然后从沐雨云快照中恢复数据。重装后不要直接复制整个
/etc,只复制必要的配置,如nginx配置文件、数据库导出文件等。 - 启用云厂商的安全产品:沐雨云提供免费的DDoS基础防护和Web应用防火墙(WAF),开启后可以拦截大多数SQL注入和XSS攻击。他们的安全组支持“一键封禁所有高危端口”模板,非常适合快速应急。
最后的建议:别把所有鸡蛋放一个篮子里
经历几次入侵后,我最终把业务迁移到了沐雨云服务器。不是因为其他家不好,而是他们有几个实实在在省心的点:
- 自动快照:每天自动备份,保留3天,出问题能秒级回滚。
- 网页控制台:即便SSH被爆破,也能通过VNC登录排查。
- 免费DDoS清洗:峰值5Gbps以内的攻击直接清洗,不额外收费。
- 24小时人工支持:有一次凌晨被我误封了IP,电话过去5分钟就解决了。
如果你还没有好的云服务商,或者正在考虑迁移,不妨试试沐雨云。官网:
https://www.muyuyun.cn
记住:没有绝对的安全,只有持续不断的维护。定期备份、及时打补丁、做好监控,才能让自己的服务器活得更久一点。





这一切,似未曾拥有