三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

在运维工作中,安全扫描检测出服务器10249端口存在Metrics未授权访问漏洞,任意内网主机无需认证即可访问http://节点IP:10249/metrics接口,获取集群大量敏感监控数据。

在运维工作中,安全扫描检测出服务器10249端口存在Metrics未授权访问漏洞,任意内网主机无需认证即可访问http://节点IP:10249/metrics接口,获取集群大量敏感监控数据。

K8s节点10249端口kube-proxy Metrics未授权访问漏洞修复实战

一、漏洞现象

安全扫描检测出服务器10249端口存在Metrics未授权访问漏洞,任意内网主机无需认证即可访问http://节点IP:10249/metrics接口,获取集群大量敏感监控数据。

二、环境说明

  1. 集群部署方式:二进制手动部署K8s,非kubeadm容器化集群
  2. kube-proxy运行形态:宿主机systemd进程,不通过DaemonSet容器运行
  3. 节点系统:CentOS7
  4. 漏洞端口:TCP 10249
  5. 对应组件:kube-proxy

三、漏洞原理

  1. kube-proxy配置文件中metricsBindAddress参数配置为0.0.0.0:10249,代表监听服务器所有网卡地址;
  2. Metrics监控接口无内置账号、Token、证书鉴权机制,仅依靠网络层面做访问隔离;
  3. 内网任意机器均可直接访问接口,泄露集群Service列表、Pod网段、IPVS/iptables转发规则、内部业务地址等核心拓扑信息,攻击者可依靠该信息横向渗透集群。

四、漏洞验证

4.1 漏洞存在验证(修复前)

在任意一台非本机服务器执行curl命令:

curl http://节点IP:10249/metrics

若页面返回海量Prometheus格式监控文本,证明漏洞存在。

4.2 定位端口占用进程

登录漏洞节点执行两条命令确认进程来源:

# 查看10249端口监听进程
ss -ltnp | grep 10249# 查看kube-proxy运行进程
ps -ef | grep kube-proxy

输出结果确认:10249由宿主机二进制kube-proxy进程监听。

4.3 查看kube-proxy原始漏洞配置

cat /var/lib/kube-proxy/kube-proxy-config.yaml

漏洞配置片段:

metricsBindAddress: 0.0.0.0:10249

五、漏洞修复操作步骤

步骤1:修改kube-proxy配置文件

编辑proxy配置yaml:

vi /var/lib/kube-proxy/kube-proxy-config.yaml

将

metricsBindAddress: 0.0.0.0:10249

修改为仅本地回环监听:

metricsBindAddress: 127.0.0.1:10249

保存退出。

步骤2:重启kube-proxy服务生效

# 重启服务
systemctl restart kube-proxy# 校验服务状态,确认无报错
systemctl status kube-proxy

步骤3:集群全节点同步操作

所有Master、Node节点均存在独立kube-proxy配置,每台节点都需要执行修改配置+重启服务,否则其余节点漏洞依旧存在。

六、修复结果验证

  1. 本机本地访问(正常)
curl http://127.0.0.1:10249/metrics

正常输出监控指标,满足本机采集需求。

  1. 跨机器访问(阻断即修复成功)
curl http://节点内网IP:10249/metrics

返回Connection refused连接拒绝,外部无法访问,漏洞闭环。

← 返回列表