k8s漏洞修复1(kubelet 10250)

 1.kubelet漏洞

  • 10250端口是kubelet服务对应的漏洞,针对集群内所有的node上的kubelet服务

image

2.查看漏洞修复前的信息

2.1 证书过期信息

  • 我们先选择一个node节点来进行修复,如:node4
  • 在集群中有kubelet上查看证书是否过期,可以看到下边已经过期了,现在日期是2026年6月9日
# 方法一
[root@node4 ~]# echo | openssl s_client -showcerts -connect 127.0.0.1:10250 2>/dev/null | openssl x509 -noout -dates
notBefore=May 21 07:38:58 2025 GMT
notAfter=May 21 07:38:58 2026 GMT

# 方法二
[root@node4 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet.crt -noout -dates
notBefore=May 21 07:38:58 2025 GMT
notAfter=May 21 07:38:58 2026 GMT

2.2 弱密码和RSA密钥交换漏洞

[root@node4 ~]# echo | openssl s_client -connect 127.0.0.1:10250 2>/dev/null | grep -i "Cipher is"
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256

# ECDHE-RSA-AES128-GCM-SHA256

2.3 弱密码算法敲门测试

echo | openssl s_client -connect 127.0.0.1:10250 -cipher "DES-CBC3-SHA" 2>&1 | grep -iE "Cipher|error|handshake"

image

3.漏洞修复,先修复node4

3.1 备份

# 不要备份到同级目录下,一定要备份到其他目录下,可能备份文件或者目录影响原文件
mkdir /root/kubelet/
cp /var/lib/kubelet/config.yaml /root/kubelet/config.yaml.bak
cp -r /var/lib/kubelet/pki /root/kubelet/pki.bak

 3.2 修改配置

# 编辑配置文件
vi /var/lib/kubelet/config.yaml

# 在文件最后添加如下内容(既开启了证书轮换,又解决了上边 SSL/TLS协议信息泄露、支持RSA密钥交换 两个漏洞)
serverTLSBootstrap: true
tlsCipherSuites:
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

3.3 清理旧证书,并重启

  • 最终安全确认: 再次提醒,绝对不要手滑删掉 kubelet-client-current.pem 等带有 client 字样的客户端证书文件,那会导致节点与 Master 彻底失联。我们只删服务端证书。
# 1. 进入证书目录(养成好习惯,确保路径正确)
cd /var/lib/kubelet/pki/

# 2. 坚定地删除过期的服务端证书和私钥
rm -f kubelet.crt kubelet.key

# 3. 重启 Kubelet 服务
systemctl restart kubelet

# 执行完重启命令后,这台节点的 Kubelet 进程会立刻生成一个新的私钥,并向控制平面紧急发送一份“证书申请信” (CSR)。

3.4 去Master节点批准

  • 现在,请立刻切换到你的 Master 节点上。执行以下命令,看看集群是否收到了那封状态为 Pending(待批复)的新申请信:
kubectl get csr

image

  • 可以看出 node4 这台节点在重启 Kubelet 后,已经成功向 Master 发送了新的服务端证书签名请求(CSR)
# 在 Master 节点上直接执行以下命令来批准它,执行完毕后,你可以再次运行 kubectl get csr,你会看到这个请求的状态从 Pending 变成了 Approved,Issued。这就意味着 Master 已经签发了新证书,并且 node4 的 Kubelet 会自动拉取并应用它。
kubectl certificate approve csr-vq7l5

image

3.5 验证修复结果

  • 在master主机上检查节点健康状态,node4依然在
kubectl get nodes
  • 回到node4 work工作节点,验证证书有效期是否已经更新,发现已经到27年了
echo | openssl s_client -showcerts -connect 127.0.0.1:10250 2>/dev/null | openssl x509 -noout -dates

 image

3.6 在所有的的node节点或者所有有kubelet节点上执行上边同样的操作,完成漏洞修复

3.7 验证不安全证书漏洞(所有节点上执行)

(1)测试一 默认算法

echo | openssl s_client -connect 127.0.0.1:10250 2>/dev/null | grep -i "Cipher is"

image

  • 修改完成之后的密钥是ECDHE-ECDSA-AES128-GCM-SHA256,原来是ECDHE-RSA-AES128-GCM-SHA256

(2)测试二 弱密码算法敲门测试

echo | openssl s_client -connect 127.0.0.1:10250 -cipher "DES-CBC3-SHA" 2>&1 | grep -iE "Cipher|error|handshake"

image

posted @ 2026-06-09 17:14  Leonardo-li  阅读(20)  评论(0)    收藏  举报