研发小伙伴反馈,他手里的服务器出问题了,负载高居不下。查看进程,发现一个进程名为 spreadQlmnop,CPU占用 395%,这是什么鬼?我告诉他,你被挖矿了。
接下来,就一步一步拆解,找到母体。
查看进程启动路径,为 /tmp/spreadQlmnop,进程中有一个网址:pool.supportxmr.com ,先把它隔离:
echo 127.0.0.1 127.0.0.1 pool.supportxmr.com >>/etc/hosts
通过ps命令查看进程pid为13893:
ps -ef | grep spreadQlmnop
查看进程占用的资源:
lsof -p 13893
发现进程还连着一个域名的服务,继续隔离:
echo 127.0.0.1 unassigned.psychz.net >>/etc/hosts
杀掉进程:
pkill -9 -f spreadQlmnop
这就完事了?哪有这么简单,这么简单就不会给这么多人造成麻烦了。
不出意外,他一会还会启动这个进程。
要挖掉矿机,就必须找到母体,否则就会不停的下崽儿。
通常矿机的母体无外乎一下几个渠道:
逐一检查吧。
首先检查 cat /etc/crontab,就会发现:
/etc/sshd
/etc/cnet2
/etc/sshd
/etc/cnet2
*/1 * * * * /etc/wget
这是什么鬼?记住,/etc 里边没有可执行文件。接下来,马上将这几项注释掉(先别删,要不然一会你不知道要清理那些文件了)
其次,检查自启配置文件 /etc/rc.local
/etc/wget
/etc/sshd
/etc/cnet2
/etc/wget
/etc/sshd
/etc/cnet2
又是这鬼东西,前面已经使用注释保留了文件信息,这里直接删除吧。
查看init文件目录: /etc/init.d,发现一个文件:/etc/init.d/DbSecuritySpt
,奇怪的名字,打开看看:
/etc/cnet2
删掉吧。
rm /etc/init.d/DbSecuritySpt
除了前面的母体,没有再发现其他的了,接下来清理现场:
pkill -9 -f /tmp/spreadQlmnop
pkill -9 -f /etc/wget
pkill -9 -f /etc/sshd
pkill -9 -f /etc/cnet2
删除文件:
rm -rf /tmp/*
rm /etc/wget
rm /etc/sshd
rm /etc/cnet2
当删除sshd的时候提示删除失败,去掉系统属性再试:
chattr -i /etc/sshd
rm /etc/sshd
还是提示无法删除,检查进程,发现一个可疑进程 ./sshd
,查看./sshd 的pid为1352,查看 /proc/1352/exe 这个软链,指向的目标是 /etc/sshd
,杀掉它再试:
kill -9 1352
rm /etc/sshd
cnet2 也一样:
chattr -i /etc/cnet2
rm /etc/cnet2
清理完成,检查进程,还有可疑之处:
/usr/bin/.sshd
对linux比较熟悉的同学应该知道sshd进程正确的位置是 /usr/sbin/sshd(不知道也没关系,可以找一台正常的机器进行对比)。
还是有猫腻呀。(事实上母体已除,暂时安全,不过还是要尽快的清除掉才好)
pkill -9 -f /usr/bin/.sshd
rm /usr/bin/.sshd
检查系统状态,系统负载已经下来了,load average 等几分钟,也会慢慢下来。
Linux服务器管理建议:
不要允许使用用户名和密码登录,尤其是弱口令,简直就是天然肉鸡,取而代之使用更安全的ssh登录方式,至少也要使用 pem 密钥登录。