Kubernetes 安全检测Kube-bench 电脑版发表于:2022/3/27 21:30 ![](https://img.tnblog.net/arcimg/hb/221977ff23684b64b68d365606bfbef6.png) >#Kubernetes 安全检测Kube-bench [TOC] ##简介 tn2>Kube-bench可以检查Kubernetes是否根据CIS Kubernetes基准中定义的安全最佳实践进行部署。 ##安装 tn2>运行如下命令安装Kube-bench ```bash docker run --rm -v `pwd`:/host aquasec/kube-bench:latest install ./kube-bench ``` tn>更多安装方式请参考:https://github.com/aquasecurity/kube-bench/blob/main/docs/running.md ![](https://img.tnblog.net/arcimg/hb/404930af21bf4a4a8c232c479062dfd2.png) ##检查 tn2>检查对k8s控制节点进行压测 ```bash ./kube-bench master ``` ![](https://img.tnblog.net/arcimg/hb/c479deed477b49e7ad7094ad5ff9c865.png) tn2>检查完成后呢,我们发现它有10个问题。 ### 解决问题 tn2>我们以设置`--kubelet-certificate-authority`为例。 ![](https://img.tnblog.net/arcimg/hb/32e82bc2821f49ee8df96bf28cd74727.png) tn2>我们通过设置证书授权来改善kubernetes. ```bash # 修改kube-apiserver.yaml vim /etc/kubernetes/manifests/kube-apiserver.yaml # 添加证书授权 - --kubelet-certificate-authority=/etc/kubernetes/pki/ca.crt ``` ![](https://img.tnblog.net/arcimg/hb/9e6ff30ce73e4019ac634fcdd6a1db80.png) tn2>随后重启kubelet,并再次检查,我们就会发现这个问题以及解决了。 ```bash systemctl daemon-reload systemctl restart kubelet.service ./kube-bench master ``` ![](https://img.tnblog.net/arcimg/hb/97b0b4b80a2a45d885eb0614827caec0.png) tn2>通过它的一些问题描述来一点点改善我们的集群环境。 ### 常见问题 >###问题一 tn2>授权模式不应设置为AlwaysAllow,而应包括Node和RBAC。 实例地址ip设置无效。 不安全端口失败参数应该设置为0。 ![](https://img.tnblog.net/arcimg/hb/ddbcf9329278401bb91e10e6f3e5c224.png) tn2>解决方法 ```bash vim /etc/kubernetes/manifests/kube-apiserver.yaml # - --authorization-mode=AlwaysAllow - --authorization-mode=Node,RBAC # - --insecure-bind-address=0.0.0.0 - --insecure-port=0 ``` >### 问题二 tn2>确保`anonymous-auth`参数设置为false 确保`--authorization-mode`参数不能设置为AlwaysAllow 尽可能的使用webhook authn或authz ![](https://img.tnblog.net/arcimg/hb/1d7f5bc3600d4b7496a83a95f9c5e8b7.png) ```bash vim /var/lib/kubelet/config.yaml # master和node都需要改配置 anonymous: enabled: false authorization: mode: Webhook ``` ```bash systemctl daemon-reload systemctl restart kubelet.service ``` >### 问题三 tn2>确保etcd的`--client-cert-auth`失败设置为true ![](https://img.tnblog.net/arcimg/hb/5d1c8b1134c84bab9d0cf2b2276f5a8b.png) ```bash vim /etc/kubernetes/manifests/etcd.yaml - --client-cert-auth=true systemctl daemon-reload systemctl restart kubelet.service ```