10255 是什么
10255 是旧版 kubelet 的只读 API 端口,不需要任何认证就能读取该节点上的 Pod 列表、容器与镜像信息,甚至能拿到环境变量与部分元数据。Kubernetes 1.16 起默认不再开启这个端口,因此扫描器一旦命中 10255,基本可以判断节点组件版本相当旧,或者有人手工把它打开了。
基本信息
| 服务 | kubelet read-only API(已废弃) |
|---|---|
| 端口/协议 | 10255,TCP/HTTP,无认证 |
| 变更 | Kubernetes 1.16 起默认不再开启 |
| 同族端口 | 10250 认证 API、10248 健康检查 |
| 安全等级 | 应彻底关闭 |
典型使用场景
- 集群安全巡检:确认节点上不存在无认证的只读接口
- 遗留集群评估:统计还有多少节点在旧版本上运行
- 扫描结果复核:确认命中是真漏洞还是误报
- 升级规划:为需要升级的节点排优先级
- 事故复盘:判断信息泄露路径是否经由该端口
核验与处置
核验与处置
curl -s http://node01:10255/pods | head -c 300 # 输出非空即高危
curl -s http://node01:10255/healthz # 常见的探活路径
ss -lntp | grep -E ':(10250|10255) ' # 节点本机核对监听情况
ps -ef | grep kubelet | grep -v grep | tr ' ' '\n' | grep -i read-only # 查看启动参数
kubectl get nodes -o wide # 确认版本分布,规划升级kubelet 端口对照
| 端口 | 性质 | 风险 |
|---|---|---|
| 10255 | 只读 API,无认证 | 信息泄露:Pod 拓扑、镜像仓库地址、部分配置 |
| 10250 | 认证 API | 需凭据,配置错误时可能越权执行命令 |
| 10248 | 健康检查 | 本机使用,通常无需对外 |
| — | read-only-port | 启动参数为 0 时表示已关闭 |
升级 kubelet 或把启动参数中的只读端口设为 0,都能消除这个暴露面;但在升级前应先确认集群里没有监控或自研组件依赖 10255 取值,否则升级后会以「监控空白」的形式暴露问题。
这类端口的危害在于「只是只读」这个错觉:Pod 拓扑、镜像仓库地址与调度信息足够规划下一步行动。安全评估时不要因为不涉及写入就降低等级。
排查时同时看 10250:节点间与 kubectl 的交互主要走它,若暴露在不受控网段且认证配置薄弱,实际风险往往比 10255 更直接。