14.5. 扫描 RHCOS 节点主机


对于 OpenShift Container Platform,Red Hat Enterprise Linux CoreOS (RHCOS)是 control plane 唯一支持的操作系统。对于节点主机,OpenShift Container Platform 支持 RHCOS 和 Red Hat Enterprise Linux (RHEL)。使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS),您可以扫描 RHCOS 节点以了解漏洞,并检测潜在的安全隐患。

对于任何已知的漏洞,RHACS 扫描在节点主机上安装的 RHCOS RPM 作为 RHCOS 安装的一部分。

首先,RHACS 会分析并检测 RHCOS 组件。然后,它使用 RHEL 和以下数据流与已识别组件的漏洞匹配:

  • 如果 StackRox 扫描器用于节点扫描,则使用 OpenShift 4.X 开放漏洞和评估语言(OVAL) v2 安全数据流。
  • 如果 Scanner V4 用于节点扫描,则使用 Red Hat Common Security Advisory Framework (CSAF)漏洞利用 Xchange (VEX)。
注意
  • 如果使用 roxctl CLI 安装 RHACS,您必须手动启用 RHCOS 节点扫描功能。当在 OpenShift Container Platform 中使用 Helm 或 Operator 安装方法时,这个功能会被默认启用。

14.5.1. 使用 StackRox Scanner 启用 RHCOS 节点扫描

如果使用 OpenShift Container Platform,您可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)启用扫描 Red Hat Enterprise Linux CoreOS (RHCOS)节点的扫描漏洞。

先决条件

流程

  1. 运行以下命令来更新合规性容器之一。

    • 对于禁用了指标的默认合规容器,请运行以下命令:

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
    • 对于启用了 Prometheus 指标的合规性容器,请运行以下命令:

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
  2. 通过执行以下步骤更新 Collector DaemonSet (DS):

    1. 运行以下命令,将新卷挂载添加到 Collector DS 中:

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
    2. 运行以下命令添加新 NodeScanner 容器:

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.6.2","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'

14.5.2. 使用 Scanner V4 启用 RHCOS 节点扫描

如果使用 OpenShift Container Platform,您可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)启用扫描 Red Hat Enterprise Linux CoreOS (RHCOS)节点的扫描漏洞。

重要

使用 Scanner V4 进行 RHCOS 节点扫描只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

流程

使用 Scanner V4 启用节点索引(也称为节点扫描):

  1. 确保在 Central 集群中部署了 Scanner V4:

    $ kubectl -n stackrox get deployment scanner-v4-indexer scanner-v4-matcher scanner-v4-db1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  2. 在 Central pod 中,在 Central 集群上,通过在 Central 集群中运行以下命令来将 ROX_NODE_INDEX_ENABLEDROX_SCANNER_V4 变量设置为 true

    $ kubectl -n stackrox set env deployment/central ROX_NODE_INDEX_ENABLED=true ROX_SCANNER_V4=true1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  3. 在 Sensor pod 中,在 sensor 容器上,通过在要启用节点扫描的所有安全集群中运行以下命令,将 ROX_NODE_INDEX_ENABLEDROX_SCANNER_V4 变量设置为 true

    $ kubectl -n stackrox set env deployment/sensor ROX_NODE_INDEX_ENABLED=true ROX_SCANNER_V4=true1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  4. 在 Collector Daemonset 中,在 合规 容器中,在您要启用节点扫描的所有安全集群中运行以下命令,将 ROX_NODE_INDEX_ENABLEDROX_SCANNER_V4 变量设置为 true

    $ kubectl -n stackrox set env daemonset/collector ROX_NODE_INDEX_ENABLED=true ROX_SCANNER_V4=true1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  5. 要验证节点扫描是否正常工作,请检查以下消息的 Central 日志:

    Scanned index report and found <number> components for node <node_name>.

    其中:

    <number>
    指定发现的组件数量。
    <node_name>
    指定节点的名称。

14.5.3. 使用 StackRox Scanner 恢复 RHCOS 节点扫描

如果使用 OpenShift Container Platform,您可以使用 Red Hat Advanced Cluster Security for Kubernetes (RHACS)启用扫描 Red Hat Enterprise Linux CoreOS (RHCOS)节点的扫描漏洞。此功能可用于 StackRox Scanner 和 Scanner V4。如果要使用 StackRox Scanner 扫描 Red Hat Enterprise Linux CoreOS (RHCOS)节点,但您要继续使用 Scanner V4 扫描其他节点,请按照以下步骤操作。

先决条件

流程

使用 StackRox 扫描器启用节点索引(也称为节点扫描):

  1. 确保 Central 集群中部署了 StackRox Scanner:

    $ kubectl -n stackrox get deployment scanner scanner-db1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  2. 在 Central pod 中,在 Central 集群中运行以下命令,将 ROX_NODE_INDEX_ENABLED 设置为 false

    $ kubectl -n stackrox set env deployment/central ROX_NODE_INDEX_ENABLED=false1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  3. 在 Collector Daemonset 中,在 合规 容器中,在您要启用节点扫描的所有安全集群中运行以下命令,将 ROX_CALL_NODE_ENABLED 设置为 true

    $ kubectl -n stackrox set env daemonset/collector ROX_CALL_NODE_INVENTORY_ENABLED=true1
    1
    对于 OpenShift Container Platform,使用 oc 而不是 kubectl
  4. 要验证节点扫描是否正常工作,请检查以下消息的 Central 日志:

    Scanned node inventory <node_name> (id: <node_id>) with <number> components.

    其中:

    <number>
    指定发现的组件数量。
    <node_name>
    指定节点的名称。
    <node_id>
    指定节点的内部 ID。

14.5.4. 分析和检测

当您将 RHACS 与 OpenShift Container Platform 搭配使用时,RHACS 会创建两个协调容器,用于分析和检测,Compliance 容器和 Node-inventory 容器。Compliance 容器已经是以前的 RHACS 版本的一部分。但是,Node-inventory 容器与 RHACS 4.0 的新容器,仅适用于 OpenShift Container Platform 集群节点。

启动后,Compliance 和 Node-inventory 容器将在五分钟内开始对 Red Hat Enterprise Linux CoreOS (RHCOS)软件组件进行第一个清单扫描。接下来,Node-inventory 容器扫描节点的文件系统,以识别已安装的 RPM 软件包并报告 RHCOS 软件组件。之后,清单扫描会以定期进行的间隔进行,通常每四个小时进行。您可以通过为 Compliance 容器配置 ROX_NODE_SCANNING_INTERVAL 环境变量来自定义默认间隔。

14.5.5. RHCOS 节点上的漏洞匹配

Central 服务包括 Central 和 Scanner,执行漏洞匹配。节点扫描是使用以下扫描程序执行的:

  • stackrox Scanner:这是默认的扫描程序。stackrox Scanner 使用红帽的开放漏洞和评估语言(OVAL) v2 安全数据流来匹配 Red Hat Enterprise Linux CoreOS (RHCOS)软件组件上的漏洞。
  • 扫描程序 V4: Scanner V4 可用作技术预览功能进行节点扫描。扫描程序 V4 必须被显式启用。如需更多信息,请参阅"添加资源"中的文档。

在扫描 RHCOS 节点时,在 4.0 后 RHACS 发行版本不再使用 Kubernetes 节点元数据来查找内核和容器运行时版本。相反,RHACS 使用安装的 RHCOS RPM 来评估该信息。

14.5.6. 相关环境变量

您可以使用以下环境变量在 RHACS 上配置 RHCOS 节点扫描。

表 14.4. node-inventory 配置
环境变量描述

ROX_NODE_SCANNING_CACHE_TIME

缓存清单被视为已过时的时间。默认为 ROX_NODE_SCANNING_INTERVAL 的 90%,即 3h36m

ROX_NODE_SCANNING_INITIAL_BACKOFF

如果找到 backoff 文件,节点扫描的初始时间(以秒为单位)会延迟。默认值为 30s

ROX_NODE_SCANNING_MAX_BACKOFF

backoff 的上限。默认值为 5m,Kubernetes 重启策略稳定性计时器为 50%。

表 14.5. 合规性配置
环境变量描述

ROX_NODE_INDEX_ENABLED

控制是否为这个集群启用节点索引。默认值为 false。将此变量设置为使用基于 Scanner V4 的 RHCOS 节点扫描。

ROX_NODE_SCANNING_INTERVAL

节点扫描之间的间隔持续时间的基本值。默认值为 4h

ROX_NODE_SCANNING_INTERVAL_DEVIATION

节点扫描的持续时间可能与基本间隔时间不同。但是,最大值受 ROX_NODE_SCANNING_INTERVAL 限制。

ROX_NODE_SCANNING_MAX_INITIAL_WAIT

首次节点扫描前等待的最大等待时间,这是随机生成的。您可以将这个值设置为 0 来禁用初始节点扫描等待时间。默认值为 5m

14.5.7. 使用仪表板识别节点中的漏洞

您可以使用 Vulnerability Management 视图来识别节点中的漏洞。识别的漏洞在核心 Kubernetes 组件和容器运行时中包括漏洞,如 Docker、CRI-O、runC 和 containerd。有关 RHACS 可扫描的操作系统的更多信息,请参阅"支持的操作系统"。

流程

  1. 在 RHACS 门户中,进入 Vulnerability Management Dashboard
  2. 选择标头中的 Nodes,以查看影响您的节点的所有 CVE 列表。
  3. 从列表中选择节点,以查看影响该节点的所有 CVE 的详细信息。

    1. 当您选择节点时,Node details 面板会为所选节点打开。Node 视图显示节点的深入详情,包括根据 CVSS 分数以及该节点可修复的 CVE 的信息。
    2. 选择 View All on the CVEs by CVSS score widget header 来查看所选节点中的所有 CVE 列表。您还可以过滤 CVE 列表。
    3. 要将可修复的 CVE 导出为 CSV 文件,请在 Node Findings 部分下选择 Export as CSV

14.5.8. 查看节点 CVE

您可以使用 RHACS 识别节点中的漏洞。被识别的漏洞包括:

  • 核心 Kubernetes 组件中的漏洞
  • 容器运行时中的漏洞,如 Docker、CRI-O、runC 和 containerd

有关 RHACS 可扫描的操作系统的更多信息,请参阅"支持的操作系统"。

流程

  1. 在 RHACS 门户中,点 Vulnerability Management Node CVEs
  2. 要查看数据,请执行以下任一任务:

    • 要查看影响所有节点的所有 CVE 列表,请选择 < number> CVEs
    • 要查看包含 CVE 的节点列表,请选择 < number> Nodes
  3. 可选: 要根据实体过滤 CVE,请选择适当的过滤器和属性。要添加更多过滤条件,请按照以下步骤执行:

    1. 从列表中选择 entity 或 属性。
    2. 根据您的选择,输入适当的信息,如文本,或者选择一个日期或对象。
    3. 点向右箭头图标。
    4. 可选:选择其他实体和属性,然后单击右箭头图标来添加它们。下表中列出了过滤器实体和属性。

      表 14.6. CVE 过滤
      实体属性

      节点

      • 名称 :节点的名称。
      • 操作系统 :节点的操作系统,如 Red Hat Enterprise Linux (RHEL)。
      • label :节点的标签。
      • 注解 :节点的注解。
      • 扫描时间 :节点的扫描日期。

      CVE

      • 名称 :CVE 的名称。
      • 发现时间 :当 RHACS 发现 CVE 的日期。
      • CVSS: CVE 的严重性级别。

        以下值与 CVE 的严重性级别关联:

        • 大于
        • 大于或等于
        • 等于
        • 小于或等于
        • 小于

      节点组件

      • name :组件的名称。
      • 版本: 组件的版本,如 4.15.0-2024。您可以使用此选项搜索组件的特定版本,例如与组件名称结合使用。

      Cluster

      • name :集群名称。
      • label : 集群 的标签
      • 类型 :集群类型,如 OCP。
      • 平台类型 :平台类型,如 OpenShift 4 集群。
  4. 可选: 要优化结果列表,请执行以下任一任务:

    • 单击 CVE 严重性,然后选择一个或多个级别。
    • 单击 CVE 状态,然后选择 FixableNot fixable
  5. 可选: 要查看节点的详情,并根据该节点的 CVSS 分数和可修复的 CVE 信息,点节点列表中的节点名称。

14.5.9. 了解 Stackrox Scanner 和 Scanner V4 之间的扫描结果的不同

使用 Scanner V4 报告扫描 RHCOS 节点主机对同一操作系统版本有更多 CVE。例如,Scanner V4 报告了 390 个 CVE,与 StackRox Scanner 报告的 50 个 CVE 相比。对所选漏洞的手动检查出了以下原因:

  • Scanner V4 中使用的漏洞利用性 eXchange (VEX)数据更为准确。
  • VEX 数据包括粒度状态,如"无修复计划"和"修复延迟"。
  • StackRox Scanner 报告的一些漏洞是假的正状态。

因此,Scanner V4 提供了更准确和现实的漏洞评估。

用户可能会在报告漏洞上发现差异,特别是当某些安全集群仍然使用带有 StackRox Scanner 的旧的 RHACS 版本时,其他用户可能会使用 Scanner V4。为了帮助您理解这种差异,以下示例提供了如何手动验证报告的漏洞的说明和指导。

14.5.9.1. 报告的漏洞中的差异示例

在本例中,我们分析了为三个任意选择的 RHCOS 版本报告的 CVE 的不同。本例显示了 RHCOS 版本 417.94.202501071621-0 的发现结果。对于这个版本,RHACS 提供了以下扫描结果:

  • stackrox Scanner 报告 49 CVE。
  • 扫描程序 V4 报告 389 CVE。

分类如下:

  • 1 个 CVE 仅由 StackRox Scanner 报告。
  • 两个扫描程序都会报告 48 个 CVE。
  • 341 CVE 仅由 Scanner V4 报告。
14.5.9.1.1. 仅由 StackRox Scanner 报告的 CVE

StackRox Scanner 仅报告的单个 CVE 是一个误报。CVE-2022-4122 在版本 5:5.2.2-1.rhaos4.17.el9.x86_64 中标记为 podman 软件包。但是,对 RHSA-2024:9102 的 VEX 数据进行手动检查表示,在版本 5:5.2.2-1.el9 中修复了此漏洞。因此,扫描的软件包版本是包含修复的第一个,不再会受到影响。

14.5.9.1.2. 仅由 Scanner V4 报告的 CVE

我们从 Scanner V4 的唯一 341 随机选择 10 个 CVE,并使用 VEX 数据进行详细分析。漏洞分为两类:

  • 具有细粒度状态的受影响的软件包表示没有计划修复
  • 受影响的软件包,没有有关修复的额外状态详情

例如,分析了以下结果:

  • git-core 软件包(版本 2.43.5-1.el9_4)标记为 CVE-2024-50349 (VEX 数据),并标记为"Affected",并带有"Fix deferred."的精细状态。这意味着,由于优先级较高的开发工作,无法保证修复。软件包会受三个 CVE 的影响。
  • vim-minimal 软件包(版本 2:8.2.2637-20.el9_1)被标记为 109 CVE,108,其中有低 CVSS 分数。大多数被标记为 "Affected",它的精细状态为 " will not fix"。
  • krb5-libs 软件包(版本 1.21.1-2.el9_4.1)标记为 CVE-2025-24528 (VEX 数据),但没有细粒度状态可用。鉴于这个 CVE 最近在分析时被发现,它的状态可能会很快更新。
14.5.9.1.3. 两个扫描程序报告的 CVE

我们手动验证了三个随机选择的软件包,查找 StackRox 扫描程序中使用的 OVAL v2 数据以及 Scanner V4 中使用的 VEX 数据,为检测到的 CVE 提供了一致的解释。在某些情况下,CVSS 分数稍有不同,这是因为 VEX 发布者数据的变化而预期的。

14.5.9.2. 验证漏洞的状态

作为最佳实践,使用公开可用的 VEX 数据,验证节点主机组件中对环境至关重要的细粒度状态。VEX 数据以人类可读的格式访问。有关解释 VEX 数据的更多信息,请访问 Red Hat Enterprise Linux CoreOS 安全数据中的最近改进

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.