2018-05-19 23:56:54 +08:00
# 修复kubelet默认允许匿名访问
2019-05-11 20:54:39 +08:00
kubelet默认启动参数`--anonymous-auth=true`风险非常大, 黑客可以在集群中植入挖坑程序, 甚至通过这个漏洞获取宿主系统root权限。感谢 `cqspirit` [PR #192 ](https://github.com/easzlab/kubeasz/pull/192 ) 提醒
2018-05-19 23:56:54 +08:00
## 关于漏洞的危害
据我所知k8s v1.5+ 所有版本的kubelet组件的默认启动参数是允许匿名访问kubelet的( 默认的大坑) , 你可以使用如下命令检查你的集群:
2018-06-09 22:19:20 +08:00
`curl -sk https://$NodeIP:10250/runningpods/`
2018-05-19 23:56:54 +08:00
- 如果返回了运行的pod信息, 说明是允许匿名访问的,
- 如果返回`Unauthorized`,说明是安全的
部分关于该漏洞的讨论参考如下:
2018-05-20 23:18:53 +08:00
- [kubelet-exploit ](https://github.com/kayrus/kubelet-exploit )
2018-05-19 23:56:54 +08:00
- [Kubernetes-From-Container-To-Cluster ](https://raesene.github.io/blog/2016/10/08/Kubernetes-From-Container-To-Cluster/ )
- [Analysis of a Kubernetes hack -- Backdooring through kubelet ](https://www.reddit.com/r/netsec/comments/847994/analysis_of_a_kubernetes_hack_backdooring_through/ )
## 漏洞的修复
2019-10-29 16:24:48 +08:00
最新代码已经修复,参考[官方文档说明](https://kubernetes.io/docs/admin/kubelet-authentication-authorization/), 已有集群可以登录ansible控制端操作如下:
2018-05-19 23:56:54 +08:00
``` bash
$ cd /etc/ansible
$ git pull origin master
2018-05-20 00:17:59 +08:00
$ ansible-playbook 22.upgrade.yml -t restart_master,restart_node
2018-05-19 23:56:54 +08:00
```