CIS Ubuntu 基准

本文档介绍了 Google Distributed Cloud 对 CIS Ubuntu 基准的合规性级别。

访问基准

您可以通过 CIS 网站获取 CIS GKE 基准。

配置文件

在 CIS Ubuntu 基准文档中,您可以阅读配置文件。Google Distributed Cloud 使用的 Ubuntu 映像经过了安全强化,以符合“第 2 级 - 服务器配置文件”的要求。

Google Distributed Cloud 评估

我们使用以下值指定 Google Distributed Cloud 中 Ubuntu 建议的状态。

状态 说明
通过 符合基准建议。
失败 不符合基准建议。
等效控制措施 不符合基准建议中的确切条款,但 Google Distributed Cloud 中的其他机制提供了等效的安全控制措施。
取决于环境 Google Distributed Cloud 不会配置与基准建议相关的项。您的配置决定了您的环境是否符合建议。

Google Distributed Cloud 的状态

用于 Google Distributed Cloud 的 Ubuntu 映像经过了安全强化,以符合 CIS 第 2 级 - 服务器配置文件的要求。下表给出了 Google Distributed Cloud 组件未通过某些建议的原因。

Google Distributed Cloud 1.29

即将推出。

Google Distributed Cloud 1.28

版本

本部分涉及以下版本:

Google Distributed Cloud 版本 Ubuntu 版本 CIS Ubuntu 基准版本 CIS 级别
1.28 22.04 LTS v1.0.0 第 2 级服务器

Google Distributed Cloud 的状态

用于 Google Distributed Cloud 的 Ubuntu 映像经过了安全强化,以符合 CIS 第 2 级 - 服务器配置文件的要求。下表给出了 Google Distributed Cloud 组件未通过某些建议的原因。

# 建议 状态 理由 受影响的组件
1.1.2.1 确保 /tmp 位于单独的分区上 失败 目前,Canonical 没有计划修改云映像分区。 所有集群节点、管理员工作站、Seesaw
1.1.3.1 确保 /var 位于单独的分区上 将不会修复 目前,Canonical 没有计划修改云映像分区。 所有集群节点、管理员工作站、Seesaw
1.1.4.1 确保 /var/tmp 位于单独的分区上 将不会修复 目前,Canonical 没有计划修改云映像分区。 所有集群节点、管理员工作站、Seesaw
1.1.5.1 确保 /var/log 位于单独的分区上 将不会修复 目前,Canonical 没有计划修改云映像分区。 所有集群节点、管理员工作站、Seesaw
1.1.6.1 确保 /var/log/audit 位于单独的分区上 将不会修复 目前,Canonical 没有计划修改云映像分区。 所有集群节点、管理员工作站、Seesaw
1.1.7.1 确保 /home 位于单独的分区上 将不会修复 目前,Canonical 没有计划修改云映像分区。 所有集群节点、管理员工作站、Seesaw
1.4.1 在 grub2 中设置引导加载程序密码 取决于环境 Ubuntu 云映像上未设置根密码。 所有集群节点、管理员工作站、Seesaw
1.4.3 确保单一用户模式要求进行身份验证 取决于环境 Ubuntu 云映像上未设置根密码。 所有集群节点、管理员工作站、Seesaw
2.3.6 卸载 rpcbind 软件包 失败 Canonical 云映像上安装了 rpcbind,但默认不启用。规则失败,因为它要求不得安装它 所有集群节点 管理员工作站、Seesaw
3.3.7 启用内核参数,以在所有 IPv4 接口上使用反向路径过滤 取决于环境 如需实现集群负载均衡,必须启用异步路由和反向路径源站。 非管理员主节点 Seesaw
3.5.2.6 为环回流量设置 nftables 配置 无法修复 Anthos 网络受到此规则的影响。 所有集群节点、管理员工作站、Seesaw
3.5.2.8 确保 nftables 成为默认的拒绝防火墙政策 取决于环境 建议将 Google Distributed Cloud 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 所有集群节点、管理员工作站、Seesaw
4.2.3 验证日志文件的权限 失败 这种特定测试过于严格且不切实际,因为许多服务可能需要群组写入日志文件。此项目可能会从未来基准中移除。 所有集群节点、管理员工作站、Seesaw
5.2.18 限制用户的 SSH 访问权限 取决于环境 默认情况下,系统不对此进行配置。 所有集群节点、管理员工作站、Seesaw
5.3.4 确保用户重新进行身份验证以提升权限 - sudo 取决于环境 默认情况下,系统不对此进行配置。 所有集群节点、管理员工作站、Seesaw
5.5.1.2 设置密码最长存在时间 等效控制措施 Google Distributed Cloud 的虚拟机依靠 SSH 密钥(而非密码)登录用户 所有集群节点
6.1.10 确保所有文件均归用户所有 未通过 将保留默认设置。 所有集群节点

Google Distributed Cloud 1.16

版本

本部分涉及以下版本:

Google Distributed Cloud 版本 Ubuntu 版本 CIS Ubuntu 基准版本 CIS 级别
1.16 20.04 LTS v1.0.0 第 2 级服务器

Google Distributed Cloud 的状态

用于 Google Distributed Cloud 的 Ubuntu 映像经过了安全强化,以符合 CIS 第 2 级 - 服务器配置文件的要求。下表给出了 Google Distributed Cloud 组件未通过某些建议的原因。

# 建议 计分/不计分 状态 理由 受影响的组件
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 确保默认拒绝防火墙政策 计分 取决于环境 建议将 Google Distributed Cloud 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 所有集群节点、管理员工作站、Seesaw
3.5.3.2.2 确保已配置环回流量 计分 取决于环境 环回接口使用量因使用的负载均衡功能而受到限制。 Seesaw
3.5.3.2.4 确保所有开放端口都存在防火墙规则 不计分 取决于环境 建议将 Google Distributed Cloud 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 所有集群节点、管理员工作站、Seesaw
3.5.3.3.1 确保 IPv6 默认拒绝防火墙政策 计分 取决于环境 建议将 Google Distributed Cloud 部署在具有适当防火墙保护的专用网络上。您可以在此处找到所需的防火墙规则。 另外,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 配置为将日志发送到远程日志主机 计分 取决于环境 Google Distributed Cloud 目前会收集系统服务的所有 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 天 计分 等效控制措施 Google Distributed Cloud 的虚拟机依靠 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 的要求。在 Google Distributed Cloud 中,AIDE 进程已导致资源用量高问题。

默认情况下,节点上的 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 字段。但是,为了避免主机资源拥塞,我们建议您维护单独的时间表。

    • 根据配置 minute=30;hour=5 的规定,Cron 作业安排在每天凌晨 5:30 运行。您可以根据需要为 AIDE Cron 作业配置不同的时间表。

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

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

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