记一次服务器被 kdevtmpfsi 变矿机

昨天有台测试服务器被告知服务异常,进服务器以后才发现是由于docker 异常退出了。web

将docker 运行起来以后,发现有个不认识的进程 kdevtmpfsi 占用CPU 异常的多,Google 一下才知道,好家伙,服务器被当成矿机了。docker

直接 kill 并不能将其结束掉,它还有守护进程及可能存在的定时任务。服务器

1. 首先查找文件

$ find / -name kinsing      // 守护进程
$ find / -name kdevtmpfsi   // 挖矿进程

若是Redis 是运行在本地,上面两个文件一般是在/tmp/目录下。测试

若是Redis 是以容器的方式运行,则一般是在/var/lib/docker/overlay2/(容器的 /tmp/ 目录)下。spa

2. 将其删除

$ rm -f kinsing kdevtmpfsi

这里被感染的容器也不必定是Redis ,好比个人则是PHP,因此须要进入到被感染的容器内才能找到。日志

3. 干掉进程

$ ps -aux | grep kinsing
$ ps -aux | grep kdevtmpfsi
$ kill -9 pid

4. 查看定时任务

$ crontab -l

存在定时任务的不必定是当前用户,能够使用如下命令查找其余用户是否存在任务:code

$ for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

定时任务还可能存在于如下地方:blog

  1. /etc/crontab
  2. /var/spool/cron/
  3. /var/spool/cron/crontabs/

至此就完成了病毒的清理,网上千篇一概的全是这种处理方式,但这个方式并不适合我,我尝试了不少次,不管我怎么删除,病毒仍是存在。进程

由于病毒是依赖于容器生存的,因而我便将容器中止掉,经过docker logs 实时查看容器最后10条日志:crontab

docker logs -f -t --tail 10 <容器id/容器名称>

十分钟以后,总算让我逮到了:

虽然目击了全过程,但这时我依然无能为力,由于我不知道上面那些命令是如何自动启动的。

尝试了各类方式,但都无解,十分钟以后病毒仍是会出来,最终我只能把这个被感染的容器给弃用了,从新起一个新的容器。

总结

kdevtmpfsi病毒的产生,一般是由于Redis 对外开放 6379端口,且没设置密码或者密码过于简单致使。

因此服务器必定要设置好防火墙,像33066379 这种经常使用端口,尽可能减小对外开放的机会。

参考连接

相关文章
相关标签/搜索