mirror of https://github.com/easzlab/kubeasz.git
更新kubelet匿名访问漏洞文档说明
parent
58ccd3bc88
commit
dfff890926
|
@ -94,6 +94,8 @@ ExecStart={{ bin_dir }}/kube-apiserver \
|
|||
--authorization-mode=Node,RBAC \
|
||||
--runtime-config=rbac.authorization.k8s.io/v1 \
|
||||
--kubelet-https=true \
|
||||
--kubelet-client-certificate={{ ca_dir }}/kubernetes.pem \
|
||||
--kubelet-client-key={{ ca_dir }}/kubernetes-key.pem \
|
||||
--anonymous-auth=false \
|
||||
--basic-auth-file={{ ca_dir }}/basic-auth.csv \
|
||||
--enable-bootstrap-token-auth \
|
||||
|
@ -129,6 +131,7 @@ WantedBy=multi-user.target
|
|||
+ 关于authorization-mode=Node,RBAC v1.7+支持Node授权,配合NodeRestriction准入控制来限制kubelet仅可访问node、endpoint、pod、service以及secret、configmap、PV和PVC等相关的资源;需要注意的是v1.7中Node 授权是默认开启的,v1.8中需要显式配置开启,否则 Node无法正常工作
|
||||
+ 缺省情况下 kubernetes 对象保存在 etcd /registry 路径下,可以通过 --etcd-prefix 参数进行调整
|
||||
+ 详细参数配置请参考`kube-apiserver --help`,关于认证、授权和准入控制请[阅读](https://github.com/feiskyer/kubernetes-handbook/blob/master/components/apiserver.md)
|
||||
+ 增加了访问kubelet使用的证书配置,防止匿名访问kubelet的安全漏洞,详见[漏洞说明](mixes/01.fix_kubelet_annoymous_access.md)
|
||||
|
||||
### 创建controller-manager 的服务文件
|
||||
|
||||
|
|
|
@ -51,10 +51,11 @@ WorkingDirectory=/var/lib/kubelet
|
|||
ExecStart={{ bin_dir }}/kubelet \
|
||||
--address={{ NODE_IP }} \
|
||||
--hostname-override={{ NODE_IP }} \
|
||||
--pod-infra-container-image=mirrorgooglecontainers/pause-amd64:3.0 \
|
||||
--pod-infra-container-image=mirrorgooglecontainers/pause-amd64:3.1 \
|
||||
--experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig \
|
||||
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig \
|
||||
--cert-dir={{ ca_dir }} \
|
||||
--client-ca-file={{ ca_dir }}/ca.pem \
|
||||
--network-plugin=cni \
|
||||
--cni-conf-dir=/etc/cni/net.d \
|
||||
--cni-bin-dir={{ bin_dir }} \
|
||||
|
@ -63,6 +64,7 @@ ExecStart={{ bin_dir }}/kubelet \
|
|||
--hairpin-mode hairpin-veth \
|
||||
--allow-privileged=true \
|
||||
--fail-swap-on=false \
|
||||
--anonymous-auth=false \
|
||||
--logtostderr=true \
|
||||
--v=2
|
||||
#kubelet cAdvisor 默认在所有接口监听 4194 端口的请求, 以下iptables限制内网访问
|
||||
|
@ -80,7 +82,8 @@ WantedBy=multi-user.target
|
|||
+ --experimental-bootstrap-kubeconfig 指向 bootstrap kubeconfig 文件,kubelet 使用该文件中的用户名和 token 向 kube-apiserver 发送 TLS Bootstrapping 请求
|
||||
+ --cluster-dns 指定 kubedns 的 Service IP(可以先分配,后续创建 kubedns 服务时指定该 IP),--cluster-domain 指定域名后缀,这两个参数同时指定后才会生效;
|
||||
+ --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir={{ bin_dir }} 为使用cni 网络,并调用calico管理网络所需的配置
|
||||
+ --fail-swap-on=false K8S 1.8需显示禁用这个,否则服务不能启动
|
||||
+ --fail-swap-on=false K8S 1.8+需显示禁用这个,否则服务不能启动
|
||||
+ --client-ca-file={{ ca_dir }}/ca.pem 和 --anonymous-auth=false 关闭kubelet的匿名访问,详见[匿名访问漏洞说明](mixes/01.fix_kubelet_annoymous_access.md)
|
||||
|
||||
### 创建 kube-proxy kubeconfig 文件
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
# 修复kubelet默认允许匿名访问
|
||||
|
||||
kubelet默认启动参数`--anonymous-auth=true`风险非常大,黑客可以在集群中植入挖坑程序,甚至通过这个漏洞获取宿主系统root权限。
|
||||
感谢 `cqspirit` [PR #192](https://github.com/gjmzj/kubeasz/pull/192) 提醒
|
||||
|
||||
## 关于漏洞的危害
|
||||
|
||||
据我所知k8s v1.5+ 所有版本的kubelet组件的默认启动参数是允许匿名访问kubelet的(默认的大坑),你可以使用如下命令检查你的集群:
|
||||
`curl -sk https://$NODE_IP:10250/runningpods/`
|
||||
- 如果返回了运行的pod信息,说明是允许匿名访问的,
|
||||
- 如果返回`Unauthorized`,说明是安全的
|
||||
|
||||
部分关于该漏洞的讨论参考如下:
|
||||
- [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/)
|
||||
- [kubelet-exploit](https://github.com/kayrus/kubelet-exploit)
|
||||
|
||||
## 漏洞的修复
|
||||
|
||||
最新代码已经修复,参考[官方文档说明](https://kubernetes.io/docs/admin/kubelet-authentication-authorization/),已有集群可以登陆`deploy`节点操作如下:
|
||||
``` bash
|
||||
$ cd /etc/ansible
|
||||
$ git pull origin master
|
||||
$ ansible-playbook -t upgrade_k8s 04.kube-master.yml
|
||||
$ ansible-playbook -t upgrade_k8s 05.kube-node.yml
|
||||
```
|
||||
|
Loading…
Reference in New Issue