用了7年VPS,第一次中病毒:被植入挖矿木马的排查与加固指南
用了7年VPS,第一次中病毒:被植入挖矿木马的排查与加固指南
在这个数字化时代,很多人手里都攥着几台VPS,有的用来跑网站,有的用来做节点,还有的纯粹是为了收藏。我也算是个老玩家了,手里的机器跑跑停停用了七年,一直觉得自己也就是个“小透明”,黑客看不上。结果,现实狠狠地给了我一巴掌——我居然被植入了挖矿木马。
通过 top 命令发现异常进程,CPU 长期 100% 占用
今天把这次翻车的经历、排查过程以及后续的加固方法写出来,希望能给各位提个醒,毕竟谁也不想自己的机器莫名其妙变成别人的“矿机”。
1. 发现异常:机器怎么变得这么卡?
事情的起因很平常。某天我登录其中一台比较闲置的VPS准备更新一下环境,发现SSH连接反应迟钝,输入命令都要卡顿一下。起初我以为是网络波动或者是那个廉价商家的超售问题(毕竟便宜没好货嘛),并没有太在意。
但当我习惯性地敲下 top 命令查看系统负载时,傻眼了。CPU占用率居然长期维持在100%左右,而且占用资源的并不是我熟悉的Nginx或Python进程,而是一个名叫奇怪名字的进程(比如随机字符串)。
这时候我才意识到:中招了,这是典型的挖矿特征。
2. 紧急排查:锁定“凶手”
发现问题后,千万别急着重启(当然也别急着重装系统,先看看能不能抢救一下数据)。我们需要先搞清楚它是怎么进来的,以及它在干什么。
第一步:查看异常进程
继续使用 top 或 htop 查看资源占用。注意观察那些CPU占用极高、名字看起来很可疑的进程。我的情况是有一个伪装成系统服务的进程在疯狂运行。
找到进程ID(PID)后,使用 ls -l /proc/PID/exe 查看该进程对应的可执行文件路径。这一步通常能帮你找到木马本体藏在哪里。
第二步:切断网络与终止进程
在杀毒之前,最好先切断服务器的对外网络连接,防止它继续连接矿池或者下载其他恶意程序。如果是在本地环境或者有控制面板,可以直接断网。
直接使用 kill -9 PID 强制杀掉可疑进程。这时候你会发现CPU负载瞬间降下来了,但战斗只完成了一半。
第三步:清理计划任务(重灾区!)
很多挖矿脚本为了持久化,会把自己写在定时任务里。你刚杀掉进程,过几分钟它又复活了。这时候必须检查 crontab。
检查以下几个位置:
crontab -l(当前用户的定时任务)/var/spool/cron/(所有用户的定时任务目录)/etc/cron.d/,/etc/cron.daily/等系统级定时任务目录。
如果你看到有莫名其妙的脚本下载链接或者一段奇怪的Shell脚本,直接删掉!
第四步:查找启动项
除了计划任务,木马还可能修改系统的启动脚本。检查 /etc/rc.local 以及 systemd 的 service 文件。有些脚本甚至会替换系统的 sshd 文件,这是一个非常危险的信号,遇到这种情况建议直接重装。
3. 寻找入口:我是怎么被黑进来的?
清理完现场后,最关键的是反思:黑客是怎么进来的?只有堵住漏洞,才能避免下次再中招。
经过排查,我怀疑是以下几个原因之一(也可能是组合拳):
1. 弱口令或默认口令 虽然我知道SSH不能用密码登录,但这台机器因为历史原因,我还是保留了密码登录方便某些临时操作。如果密码不够复杂,黑客通过全网扫描SSH端口,撞库成功的概率极高。
2. 应用程序漏洞 这台机器上跑着一个很久没更新的WordPress站点,或者是某个带有RCE漏洞的Web应用。如果不及时打补丁,这就是黑客最喜欢的后门。
修改 SSH 配置文件,禁止密码登录以提高安全性
3. 非官方软件包 有时候为了方便,我们可能会去网上找一些“一键脚本”安装环境。如果不小心引用了不信任的源,或者脚本里本身就带了后门,那就纯纯是自己把门打开了。
4. 深度加固:亡羊补牢,为时未晚
经历了这次惊魂,痛定思痛,我决定对这台机器以及手里的其他VPS进行一次全面的安全加固。
4.1 SSH 安全第一
- 禁止密码登录:彻底放弃密码,只允许SSH Key登录。编辑
/etc/ssh/sshd_config,将PasswordAuthentication设为no。 - 修改默认端口:把SSH端口从22改成一个高位端口,虽然不能完全防御扫描,但能避开绝大多数全自动的脚本小子。
- 限制登录用户:禁止root直接登录,创建一个普通用户,配置好sudo权限,需要时再提权。
4.2 配置防火墙
不要让所有端口都敞开着。除非必要,否则只开放80、443和你的SSH端口。使用 iptables、ufw 或者云厂商提供的防火墙策略进行限制。
4.3 自动更新与监控
- 开启系统的自动安全更新(或者至少定期手动更新)。
- 安装监控工具(如NodeQuery、UptimeRobot等)监控CPU负载,一旦异常飙高立刻发邮件报警。
4.4 绝不运行不明脚本
想测试新功能或者安装新软件,尽量去官方文档找安装步骤。对于GitHub上那些星标很少甚至没有文档的“一键脚本”,保持高度的警惕。如果非要跑,建议先在Docker容器里隔离运行。
写在最后
用了7年都没事,这次翻车提醒我:安全意识不能松懈。 网络环境越来越恶劣,黑客的自动化脚本24小时都在扫描互联网上的每一个IP。我们的VPS就像大海里的一叶扁舟,如果不把门窗焊死,随时可能被海盗登船。
如果你也有闲置的VPS,不妨现在就登录上去检查一下 top 命令,看看有没有陌生的进程在为你“挖矿”。希望我的这篇排雷指南能帮到大家,祝各位的机器永远稳如老狗!

评论已关闭