本文档介绍了 GKE on VMware 对 CIS Ubuntu 基准的合规性级别。
版本
本文档涉及以下版本:
Anthos 版本 | Ubuntu 版本 | CIS Ubuntu 基准版本 | CIS 级别 |
---|---|---|---|
1.15 | 20.04 LTS | v1.0.0 | 第 2 级服务器 |
访问基准
您可以通过 CIS 网站获取 CIS GKE 基准。
配置文件
在 CIS Ubuntu 基准文档中,您可以阅读配置文件。GKE on VMware 使用的 Ubuntu 映像经过了安全强化,以满足第 2 级 - 服务器配置文件的要求。
GKE on VMware 评估
我们使用以下值来指定 GKE on VMware 中 Ubuntu 建议的状态。
状态 | 说明 |
---|---|
通过 | 符合基准建议。 |
失败 | 不符合基准建议。 |
等效控制措施 | 不符合基准建议中的确切条款,但 GKE on VMware 中的其他机制提供等效的安全控制措施。 |
取决于环境 | GKE on VMware 不会配置与基准建议相关的项。您的配置决定了您的环境是否符合建议。 |
GKE on VMware 的状态
与 GKE on VMware 结合使用的 Ubuntu 映像经过安全强化,以满足 CIS 级别 2 - 服务器配置文件的要求。下表说明了 GKE on VMware 组件为何未通过某些建议的理由。
# | 建议 | 计分/不计分 | 状态 | 理由 | 受影响的组件 |
---|---|---|---|---|---|
1.1.2 | 确保已配置 /tmp | 计分 | 失败 | 目前,Canonical 没有计划修改云映像分区。 | 所有集群节点、管理员工作站、Seesaw |
1.1.10 | 确保 /var 存在单独的分区 | 计分 | 将不会修复 | 目前,Canonical 没有计划修改云映像分区。 | 所有集群节点、管理员工作站、Seesaw |
1.1.11 | 确保 /var/tmp 存在单独的分区 | 计分 | 将不会修复 | 目前,Canonical 没有计划修改云映像分区。 | 所有集群节点、管理员工作站、Seesaw |
1.1.15 | 确保 /var/log 存在单独的分区 | 计分 | 将不会修复 | 目前,Canonical 没有计划修改云映像分区。 | 所有集群节点、管理员工作站、Seesaw |
1.1.16 | 确保 /var/log/audit 存在单独的分区 | 计分 | 将不会修复 | 目前,Canonical 没有计划修改云映像分区。 | 所有集群节点、管理员工作站、Seesaw |
1.1.17 | 确保 /home 存在单独的分区 | 计分 | 将不会修复 | 目前,Canonical 没有计划修改云映像分区。 | 所有集群节点、管理员工作站、Seesaw |
1.1.22 | 确保在所有可写目录上设置了粘滞位 | 计分 | 失败 | 这可能会干扰 Anthos 及其服务的功能,并且默认处于停用状态 | 所有集群节点、管理员工作站 |
1.5.1 | 确保已配置引导加载程序配置的权限 | 计分 | 失败 | 将保留默认设置。 | 所有集群节点、Seesaw |
1.5.2 | 确保已设置引导加载程序密码 | 计分 | 取决于环境 | Ubuntu 云映像上未设置根密码。 | 所有集群节点、管理员工作站、Seesaw |
1.5.3 | 确保单用户模式要求进行身份验证 | 计分 | 取决于环境 | Ubuntu 云映像上未设置根密码。 | 所有集群节点、管理员工作站、Seesaw |
2.3.6 | 确保未安装 RPC | 计分 | 失败 | Canonical 云映像上安装了 rpcbind,但默认不启用。规则失败,因为它要求未安装 | 所有集群节点 |
3.2.2 | 确保已停用 IP 转发 | 计分 | 失败 | 必须具备 IP 转发功能,Kubernetes 才能 (GKE) 正常运行并路由流量 | 所有集群节点、管理员工作站、Seesaw |
3.2.7 | 确保已启用反向路径过滤 | 计分 | 取决于环境 | 提供集群负载均衡需要异步路由和反向路径源 | Seesaw |
3.5.3.2.1 | 确保默认拒绝防火墙政策 | 计分 | 取决于环境 | 建议将 GKE on VMware 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 | 所有集群节点、管理员工作站、Seesaw |
3.5.3.2.2 | 确保已配置环回流量 | 计分 | 取决于环境 | 环回接口使用量因使用的负载均衡功能而受到限制。 | Seesaw |
3.5.3.2.4 | 确保所有开放端口都存在防火墙规则 | 不计分 | 取决于环境 | 建议将 GKE on VMware 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 | 所有集群节点、管理员工作站、Seesaw |
3.5.3.3.1 | 确保 IPv6 默认拒绝防火墙政策 | 计分 | 取决于环境 | 建议将 GKE on VMware 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 另外,Anthos 不需要在 GA 支持下使用 IPv6。 | 所有集群节点、管理员工作站、Seesaw |
3.5.3.3.2 | 确保已配置 IPv6 环回流量 | 计分 | 取决于环境 | Anthos 不需要在 GA 支持下使用 IPv6。 | 管理员控制层面、Seesaw |
4.1.1.3 | 确保审核在启用 auditd 之前启动的流程 | 计分 | 失败 | 我们的构建流程存在一个已知问题,即,此情况会被标记为“已失败”,但其实是误报。我们将来会解决此问题。 | 所有集群节点、Seesaw |
4.1.11 | 确保收集了特权命令的使用情况 | 计分 | 失败 | 某些二进制文件是在运行时安装的,因此需要采用运行时补救措施。 | 所有集群节点、管理员工作站、Seesaw |
4.2.1.5 | 确保将 rsyslog 配置为将日志发送到远程日志主机 | 计分 | 取决于环境 | GKE on VMware 目前(来自系统服务)收集所有 Journald 日志。这些可以查看“k8s_node”下的这些日志 | 所有集群节点、管理员工作站、Seesaw |
4.2.3 | 确保已配置所有日志文件的权限 | 计分 | 失败 | 这种特定测试过于严格且不切实际,因为许多服务可能需要群组写入日志文件。此项目可能会从未来基准中移除。 | 所有集群节点、管理员工作站、Seesaw |
4.4 | 确保日志轮替分配适当的权限 | 计分 | 失败 | 遵守此规则可能会影响当前的日志记录功能 | 所有集群节点、Seesaw |
5.2.18 | 确保 SSH 访问受到限制 | 计分 | 取决于环境 | 默认情况下,系统不会进行此项配置。此项可配置为满足您的特定要求。 | 所有集群节点、管理员工作站、Seesaw |
5.2.20 | 确保已停用 SSH AllowTcpForwarding | 计分 | 失败 | 遵守此规则可能会影响当前的 SSH 隧道功能 | 所有集群节点 |
5.4.1.1 | 确保密码有效期不超过 365 天 | 计分 | 等效控制措施 | GKE on VMware 的虚拟机依赖 SSH 密钥(而非使用密码)进行登录 | 所有集群节点 |
6.1.10 | 确保不存在全局可写文件 | 计分 | 失败 | 将保留默认设置。 | 所有集群节点 |
6.1.11 | 确保不存在无主文件或目录 | 计分 | 失败 | 将保留默认设置。 | 所有集群节点 |
6.1.12 | 确保不存在未分组文件或目录 | 计分 | 失败 | 将保留默认设置。 | 所有集群节点 |
6.2.7 | 确保用户的 dot 文件不是群组或全局可写文件 | 计分 | 失败 | 由于兼容性,Ubuntu 的默认设置允许 dot 文件组权限 | 管理员工作站 |
配置 AIDE cron 作业
AIDE 是一个文件完整性检查工具,可确保符合 CIS L1 服务器基准 1.4 Filesystem Integrity Checking
的要求。在 GKE on VMware 中,AIDE 进程已导致高资源使用率问题。
从 1.12 开始,节点上的 AIDE 进程默认处于停用状态,以防止出现资源问题。这会影响对 CIS L1 服务器基准 1.4.2 Ensure
filesystem integrity is regularly checked.
的合规性
如果要选择运行 AIDE cron 作业,请完成以下步骤以重新启用 AIDE:
创建一个 DaemonSet。
以下是 DaemonSet 的清单:
apiVersion: apps/v1 kind: DaemonSet metadata: name: enable-aide-pool1 spec: selector: matchLabels: app: enable-aide-pool1 template: metadata: labels: app: enable-aide-pool1 spec: hostIPC: true hostPID: true nodeSelector: cloud.google.com/gke-nodepool: pool-1 containers: - name: update-audit-rule image: ubuntu command: ["chroot", "/host", "bash", "-c"] args: - | set -x while true; do # change daily cronjob schedule minute=30;hour=5 sed -E "s/([0-9]+ [0-9]+)(.*run-parts --report \/etc\/cron.daily.*)/$minute $hour\2/g" -i /etc/crontab # enable aide chmod 755 /etc/cron.daily/aide sleep 3600 done volumeMounts: - name: host mountPath: /host securityContext: privileged: true volumes: - name: host hostPath: path: /
在上面的清单中:
AIDE Cron 作业将仅在 nodeSelector
cloud.google.com/gke-nodepool: pool-1
指定的节点池pool-1
上运行。您可以通过在nodeSelector
字段中指定池,将 AIDE 进程配置为根据需要运行任意数量的节点池。如需在不同的节点池上运行相同的 Cron 作业时间表,请移除nodeSelector
字段。但是,为了避免主机资源拥塞,我们建议您维护单独的时间表。Cron 作业安排在每天凌晨 5:30 运行,如配置
minute=30;hour=5
所指定。您可以根据需要为 AIDE Cron 作业配置不同的时间表。
将此清单复制到名为
enable-aide.yaml
的文件,然后创建该 DaemonSet:
kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f enable-aide.yaml
其中,USER_CLUSTER_KUBECONFIG 是用户集群的 kubeconfig 文件的路径。