现象
我登录到集群上,发现在kube-system上有3个名字为api-proxy的pod,describe看是一个daemonset。
应该是运气好,镜像拉取失败了,没跑起来。。。
排查
百度一下,这个是一个门罗币的挖矿病毒。
查看ds内容
kubectl get ds api-proxy -n kube-system -o yaml
查看定时任务和登录记录
搜了一下这个ip是匈牙利的,我的服务器上是有防止ssh爆破脚本的,定时任务也没有异常,查看服务器登录记录,也没有异常ip。
last
crontab -l
查看CPU和内存使用情况也都是正常的,因为pod没跑起来,要是跑起来了,我还能更快收到邮件告警。。。
查找进程和相关文件
ps aux|grep xmrig # 我这里是没有的
find / -name xmrig
查看ssh密钥文件,也没有异常
cd /root/.ssh
ls -al
查看主机上的用户,也没有异常
cat /etc/passwd
查看secure日志
vim /var/log/secure
黑客通过API访问到了我的集群,并安装了这个daemonset。那么他是怎么访问到我的集群呢?
查看ecs安全组
我开启了2379-2380,6443,10250端口。
查看集群的匿名用户
kubectl get clusterrolebindings -o yaml | grep system:anonymous
k get clusterrolebinding test:anonymous -o yaml
我想起来之前做测试用的这个test:anonymous集群用户,授予了cluster-admin的权限,黑客就扫描暴露在公网的6443端口,通过"system:anonymous"匿名账号登录到集群。
解决
因为我这里下载镜像失败了,就不用删除镜像了,直接删除ds。
ccrictl rmi $(crictl images | grep xmrig | awk '{print $3}')
kubectl delete ds api-proxy -n kube-system
删除test:anonymous集群用户,或者修改权限
k delete clusterrolebinding test:anonymous
kubectl get clusterrolebindings -o yaml | grep system:anonymous