某天,晴,准时下班与朋友小聚,酒足饭饱后正商量着第二场活动,这时手机短信响起,随手拿起一看。卧槽,提示服务器蠕虫病毒。遂与友人say sorry。回家打开电脑开始杀毒并排查原因。

首先打开阿里云看下日志。这里还是要点赞一下阿里云的云盾,服务器防护与预警属实做的很牛逼。日志提示服务器被植入挖矿程序,并且告知所在进程
查看到是在容器内植入,好在没有植入我的宿主机。当前主机挂载了好几个容器服务。并且宿主机有做端口限制,应该是跑不出去。
逐步排查原因:
执行top可看到挖矿程序疯狂占用CPU。
ps查看进程运行目录,发现tmp中不存在这个文件,猜想可能是docker容器中的进程。
执行 docker stats
查看容器运行情况。能够发现cpu占用高的容器。
执行 docker top 容器id
查看容器进程详细信息
为什么会被植入?
网上说的redis漏洞。
该镜像没有集成redis。PASS
镜像本身是否存在病毒?
很多镜像可能会集成第三方的插件,或者jar包。那么排查镜像源问题,可使用命令
docker inspect <镜像id>
查看镜像元数据进行排查。我镜像都是自己打包上传,并且本地重新下载镜像并未发现任何异常。大概率PASS远程执行漏洞?
那就很有可能是存在这个问题了。该docker容器开放了9999(用于xxl-job分布式事务),8085用于spring-boot服务(大概率可以排除)。那就应该是XXL-JOB的锅了。搜索得知,XXL-JOB远程执行漏洞导致kdevtmpfsi挖矿病毒:
最终解决
1、9999端口加上IP限制,只允许xxljob-admin源服务器ip地址调用。
2、xxl-job增加授权验证,配置 xxl.job.accessToken 防止未授权访问漏洞。