闲来登录了一下腾讯云控制台,发现资源监控面板服务器的cpu利用率一直100%以上,甚至达到了130%
反常必有妖,毕竟我服务器除了挂了个docker几乎是没开其他应用的,一定有异常程序在作怪。
进入服务器,输入
top -c
发现有一个程序就占用100%以上的cpu,后面对应的command是: /tmp/kdevtmpfsi
百度去查了一下,发现这是一个挖矿程序,好家伙,原来服务器两个月前就被置入挖矿了。
那时候我做了什么?无非是拉取了别人的几个docker镜像,难不成docker镜像里投毒?
第一反应,在官方 portainer 面板里停用了除portainer以外的全部镜像
然后开始查杀作怪的几个挖矿程序。
这里用到了以下命令:
crontab -e
top -c
ls -ail /proc/pid
ps -ef|grep kinsing
ps -ef|grep kdevtmpfsi
kill -9 进程id
cd /tmp
ls
reboot
systemctl status pid
命令不是严格按先后来,原理是查到挖矿主进程的进程id和它的守护进程的id,然后kill -9 杀掉。杀完过后看一下自己目录/tmp下还有没有挖矿相关的执行文件
并且crontab -e检查一下自启动,看看有没有被人丢自启动挖矿。我这里看了里面只有一个 这样的:
flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'
这东西好像是腾讯云服务器控制台提供的云资源监控 叫做云镜的东西,都看到标志目录 qcloud/YunJing 了。不用管,我这里没有挖矿的自启程序
如果有的话就删除。最后reboot重启服务器。
暂时重启完了看到cpu利用率低于2%了,正常了
不知道过一段时间挖矿程序会不会回来。反正我不常用的docker容器准备一直停用先
2021年6月4日补充:
公司另一台服务器也中招了,经过运维大佬的排查,发现是被人用postgres用户登录进来投毒了。难道说postgres近期有什么漏洞。
然后我到自己这台中毒的宿主机上执行了以下命令:
find / -name kdevtmpfsi
发现查找结果如下:
/var/lib/docker/overlay2/9a8bc2f1f6d5577d83f8dc185e3c4660eb425dba252d1329eb3654cf1a2467f2/diff/tmp/kdevtmpfsi
这很明显,挖矿病毒程序是来自于某个docker容器。但是这里显示的目录并不是docker容器的id,还需要接着排查
根据csdn某博主的教程执行了以下命令,但是没得卵用。
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "9a8bc2f1f6d5577d83f8dc185e3c4660eb425dba252d1329eb3654cf1a2467f2"
后面自己思考了一下,上次停用某些不常用的容器后,cpu并没有异常过,那么说明,一定在上次停用的某些容器里有挖矿程序。
自己思考难道是因为postgres的容器?从几个停用的容器,挨个启用,然后进入容器内部,cd到/tmp目录看看,最后发现是它无疑
自己也没得更好的办法,那么删除整个tmp目录吧
rm -rf tmp/
find / -name "kinsing*" | xargs rm -rf