线上一台服务器,CPU高达90%以上,经过top 分析出进程kdevtmpfsi
kill -9 杀死进程无果,很快就会自动恢复
排查步骤:
find / -name kdevtmpfsi
结果:
/var/lib/docker/devicemapper/mnt/02a2d8fbdbad195ae7dbc74ec3ddbd3c6a237f77dc55991bb9c1edb9c3043f15/rootfs/tmp/kdevtmpfsi
病毒被植入到了线上运行的某一docker容器内。
如何先确定是哪一容器再去删除搜索结果中的病毒文件?
我这台机器跑的容器不多,可以用复制文件的方法,先 docker cp 一个文件到容器中。再去find 这个文件
如果结果还是在刚才搜索病毒的那个文件目录下(/var/lib/docker/devicemapper/mnt/xxxxx )就可以确定容器了。结果是php的容器出现了问题。
知道是具体是什么容器出现了问题,最快的办法就是先重启一个新的容器。
我这边是nginx +php 两种服务容器,所以先启动了一个新php容器,修改nginx中配置文件代理后端php服务器端口为新容器的IP地址。(nginx容器已经映射目录到宿主机)
docker run -itd --name new_lzad_php -v /docker:/var/www/html -p 9002:9000 php7:v7.3
修改PHP后端IP地址
cd 宿主机映射nginx的配置文件位置目录
for i in `ls *.conf`
do
sed -i "s/fastcgi_pass 172.18.0.2:9000/fastcgi_pass 172.18.0.4:9000/g" $i
done
测试线上环境正常后,删除原来的php容器。(这是自然也==直接删除了病毒文件)
执行 TOP命令,CPU占用正常。
平时防火墙和sellinux都关闭的话,服务器不要暴漏太多无用端口,出现问题应该最新通过进程名去查找文件的原始位置去分析问题,遇到挖矿病毒也应该多注意/etc/init.d下和cron计划任务有无异常。
后期也可以写个cron或者脚本
ps aux |grep kdevtmpfsi|grep -v grep|awk '{print $2}'|xargs kill -9
网友评论