CKS 考试题整理 (03)-kube-bench 修复不安全项
阅读原文时间:2023年08月16日阅读:1

针对 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