不少人是在账单上看到异常才察觉的。服务器CPU长时间居高不下,业务访问量却没什么变化,ECS的费用悄悄往上走。遇到这种情况,先别急着重装或删文件,把进程和入口查清楚更重要。本文按”先排查、再清除、后加固”的顺序,梳理阿里云服务器挖矿的常见入口和处理方法。

挖矿程序是怎么跑起来的
挖矿劫持的过程并不复杂。攻击者先拿到服务器的控制权,再让机器替自己算加密货币,收益归对方,电费和云资源费用却记在你的账上。这类程序通常很隐蔽,页面照常打开,数据库也能读写,只是机器越来越慢,账单越来越高。
阿里云服务器挖矿问题,很多时候是入口早就开着,只是没人留意,后来才慢慢演变成账单上的异常。
常见入侵路径
- 弱口令和密码登录:root密码太简单,或SSH仍允许密码登录,机器很容易被暴力破解。改用密钥登录并关闭密码登录,是成本最低的一步。
- 中间件暴露在公网:Redis没设密码又对外开放端口,Docker API、Jenkins、Hadoop等组件如果开了未授权访问,都会被扫描工具盯上。检查安全组里是否对0.0.0.0/0开放了这些端口,是第一件该做的事。
- Web应用漏洞:文件上传、命令注入、反序列化等问题,能让攻击者直接在服务器上执行命令。站点很久没更新框架或插件,风险会明显更高。
- 泄露的密钥:AccessKey或SSH私钥误提交到代码仓库,公开仓库里的密钥往往会被自动化脚本抓走。提交前扫一遍,比事后撤销要省事得多。
一个典型的排查经过
这个案例综合了行业内常见的情形,并非某个具体客户的真实记录,用来说明排查思路。
某中小电商团队在阿里云上开了一台测试用的ECS,为了方便调试,Redis对外开放端口且没有设密码。一周后,云监控提示CPU持续接近满载,但业务访问量没有变化。登录机器后,团队发现一个名字伪装成系统服务的可执行文件,定时任务里还写着每隔一段时间下载并运行脚本的命令。攻击者正是借助Redis写入计划任务完成了持久化。
团队先删掉了木马文件,很快CPU又涨了起来。原因是残留的后门没有清干净。最后他们选择重装系统,并更换了所有密码和密钥,问题才算解决。只删掉看得见的东西,往往不够。
排查步骤
发现异常后,先别直接杀进程。进程被杀掉,攻击者的脚本可能马上把它拉起来,你也会失去分析入口的线索。建议按下面的顺序检查:
- 用top或htop查看CPU占用最高的进程。重点看进程名和路径是否与常见系统服务不符,同一个名字是否反复出现。
- 查看可疑进程的可执行文件位置,/tmp、/var/tmp和以点开头的隐藏目录是常见藏身之处。用ls -la确认文件的修改时间和权限,异常文件通常比较新。
- 检查crontab、/etc/cron.d和systemd服务列表,确认有没有陌生的定时任务或开机启动项。木马常靠它们在被删除后重新运行,这一步不能跳过。
- 查看~/.ssh/authorized_keys,确认是否被添加了不认识的公钥。
- 翻看登录日志和应用日志,对照异常时间点找出可疑来源IP。如果发现日志被清理过,也要记下来,这本身就是入侵的信号。
清除与加固步骤
确认入侵后,顺序很重要。前几步是为了止损,后几步是为了防止再次被控。
- 先收紧安全组,或暂时断开不必要的公网访问,阻止数据继续外流,也防止攻击者在你处理期间继续操作。
- 给服务器做一次快照,保留现场。清理出了问题可以回溯,向阿里云反馈时也有依据。
- 清理可疑进程、定时任务和启动项,删除木马文件,并排查所有用户的登录记录。
- 更换root密码、数据库密码、AccessKey和SSH密钥,撤销所有不明公钥。这一步最容易漏掉那些只在脚本或配置文件里出现过的凭证。
- 修补已知漏洞,为Redis、数据库等服务设置访问控制,只开放业务真正需要的端口。
- 开通阿里云安全中心的威胁检测,并在云监控中给CPU使用率设置告警。阈值可以参考业务平时的负载来定,设得太高,问题就会拖上好几天才被发现。
如果服务器上承载着重要业务,安全要求又比较高,直接重装系统通常更稳妥。手动清除很难证明已经彻底干净,重装加上更换全部凭证,才能让人放心。
合规提醒
在别人的服务器或未经授权的机器上挖矿,既违反云厂商的服务条款,也可能触碰法律。即使是自己的服务器,只要资源被用于这类活动,同样可能被封禁,还会带来纠纷。
如果你的业务确实涉及区块链计算,应选择正规的算力服务,并提前和云厂商沟通资源使用方式。对运维来说,更实际的做法是把精力放在防护上,让自己的系统不被他人利用。