针对 kubeadm 创建的 cluster 运行 CIS 基准测试工具时,发现了多个必须立即解决的问题。
通过配置修复所有问题并重新启动受影响的组件以确保新的设置生效。
修复只对 API 服务器发现的所有以下违规行为:
1.2.7 Ensure that the --authiruzatuib-mode argument is not set to AlwaysAllow FAIL
1.2.8 Ensure that the --authiruzatuib-mode argument includes Node FAIL
1.2.9 Ensure that the --authiruzatuib-mode argument includes RBAC FAIL
1.2.18 Ensure that the --insecure-bind-address argument is not set FAIL (1.25中这项题目没给出)
1.2.19 Ensure that the --insecure-port argument is set to 0 FAIL (1.25中这项题没给出,不需要再修改了)
修复针对 kubelet 发现的所有以下违规行为:
Fix all of the following violations that were found against the kubelet:
4.2.1 Ensure that the anonymous-auth argument is set to false FAIL
4.2.2 Ensure that the --authorization-mode argument is not set to AlwaysAllow FAIL
注意:尽可能使用Webhook身份验证/授权。
修复针对 etcd 发现的所有以下违规行为:
Fix all of the following violations that were found against etcd:
2.2 Ensure that the --client-cert-auth argument is set to true FAIL
https://kubernetes.io/zh-cn/docs/reference/config-api/kubelet-config.v1beta1/
考试时务必执行,切换集群。
kubectl config use-context KSCS00201
1. 切换到master的root下
ssh master01 && sudo -i
2. 修改 api-server
# 可以使用这条命令查
kube-bench master
查出来的,可能很多不安全项,但只修改考题要求的那几项即可。
修改之前,备份下配置文件。
mkdir bak01
cp /etc/kubernetes/manifests/kube-apiserver.yaml bak01/
vim /etc/kubernetes/manifests/kube-apiserver.yaml
# 修改、添加、删除相关内容
# 修改 authorization-mode,注意 Node 和 RBAC 之间的符号是英文状态的逗号,尔不是点。
--authorization-mode=Node,RBAC
# 删除insecure-bind-address, 考试中可能没有这项
--insecure-bind-address=0.0.0.0
3. 修改 kubelet
# 可以使用这条命令查询
kube-bench node
systemctl status kubelet
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 中你会看到 Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"。
修改这个文件之前先备份一下。
cp /var/lib/kubelet/config.yaml bak01/
vim /var/lib/kubelet/config.yaml
修改
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous: # 修改 anonymous 下的,将 true 改为 false
enabled: false # 该为 false
webhook:
cacheTTL: 0s
enabled: true # 这个 webhook 下的 true 不要改
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization: # 修改 authorization 下的
mode: Webhook # 改为Webhook
webhook:
……
# 编辑完后重新加载配置文件,并重启kubelet
systemctl daemon-reload
systemctl restart kubelet.service
4. 修改etcd
# 可以使用这条命令查
kube-bench
修改之前先备份一下文件。
cp /etc/kubernetes/manifests/etcd.yaml bak01/
vim /etc/kubernetes/manifests/etcd.yaml
修改:
--client-cert-auth=true # 修改为true
修改完后,等待5分钟左右,再检查一下所有pod,确保所有pod都正常。
kubectl get pod -A
# 退出返回到堡垒机 或者重新打开终端
exit
手机扫一扫
移动阅读更方便
你可能感兴趣的文章