CIS Ubuntu 基准

本文档介绍了 GKE on VMware 对 CIS Ubuntu 基准的合规性级别。

版本

本文档涉及以下版本:

Anthos 版本 Ubuntu 版本 CIS Ubuntu 基准版本 CIS 级别
1.14 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:

  1. 创建一个 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 作业配置不同的时间表。

  2. 将此清单复制到名为 enable-aide.yaml 的文件,然后创建该 DaemonSet:

kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f enable-aide.yaml

其中,USER_CLUSTER_KUBECONFIG 是用户集群的 kubeconfig 文件的路径。