vRealize Automation SaltStack SecOpsSaltStack Config 的加载项,提供了两个安全库。这两个内容库会随着安全标准的变化而定期更新。可以将内容配置为随着安全标准的变化自动下载(或摄取),对于大多数标准系统,建议进行此配置。

以下类型的内容作为 SaltStack SecOps 的一部分提供:

  • 合规性 - 对基础架构自动进行合规性检测和修复。合规性内容库包含行业最佳实践安全性与合规性内容(如 CIS)。
  • 漏洞 - 管理环境中所有系统上的漏洞。其内容库包含基于最新常见漏洞与暴露 (CVE) 条目的公告。

此外,库也包括手动下载内容或通过 HTTP(s) 代理从 RaaS 节点访问内容的选项。手动摄取适用于气隙系统,而通过代理下载可用于避免直接从 Internet 下载内容。通过代理下载还加强了控制,能够深入了解下载的内容以及下载位置。

开始前

配置 SaltStack SecOps 是应按特定顺序执行一系列步骤中的一个安装后步骤。首先,完成其中一个安装方案,然后阅读以下安装后页面:

安装 Python 3 rpm 库

SaltStack SecOps 使用 Python 3 rpm 库可靠地比较软件包版本。这些程序需要这些库所提供的更高准确性,以确定版本合规性或评估漏洞。

目前,使用 RedHat 或 CentOS 7 的任何工作节点可能都需要使用 Python 3 rpm 库才能运行准确的合规性或漏洞评估。如果要对使用这些 RedHat 或 CentOS 版本的工作节点运行评估,则需要在这些计算机上手动安装 Python 3 rpm 库。

注:

还有其他解决办法可以选用。如果您需要其他解决办法,请联系支持部门

要在运行主节点插件的 Salt 主节点上安装 Python 3 rpm 库,请执行以下操作:

  1. 使用以下命令安装 EPEL 存储库:
    yum install -y epel-release
  2. 安装 Python 3 rpm 库:
    yum install -y python3-rpm

自动内容摄取(对于标准系统)

对于非气隙 RaaS 系统,可根据配置文件中的设置定期下载和摄取内容。默认情况下,自动内容摄取已在 SaltStack Config 中配置,无需进一步操作。

如果手动安装 SaltStack Config,请按照以下步骤配置自动 SaltStack SecOps 内容摄取:

  1. 在 RaaS 服务配置文件 /etc/raas/raassec 部分中添加以下内容,并根据需要进行调整:
    sec:
      stats_snapshot_interval: 3600
      username: secops
      content_url: https://enterprise.saltstack.com/secops_downloads
      ingest_saltstack_override: true
      ingest_custom_override: true
      locke_dir: locke
      post_ingest_cleanup: true
      download_enabled: true
      download_frequency: 86400
      compile_stats_interval: 10
      archive_interval: 300
      old_policy_file_lifespan: 2
      delete_old_policy_files_interval: 86400
      ingest_on_boot: true
      content_lock_timeout: 60
      content_lock_block_timeout: 120
  2. 保存文件。
  3. 重新启动 RaaS 服务:
    systemctl restart raas

    服务重新启动后,SaltStack SecOps 内容开始下载。这可能需要长达五分钟才能完成,具体取决于您的 Internet 连接。

通过 http(s) 代理摄取内容

要通过代理摄取,需要创建 RaaS 服务替代项,并添加新的环境变量 httpproxyhttpsproxy

要配置 RaaS 节点以使用 https 代理,请执行以下操作:

  1. 完成上述步骤以启用自动摄取。
  2. 在主节点上的命令行中,编辑 RaaS 服务:
    systemctl edit raas
  3. 在生成的文件中添加以下行。
    [Service]
    Environment="http_proxy=http://<hostname>:234"
    Environment="https_proxy=https://<hostname>:234"
    Environment="HTTP_PROXY=http://<hostname>:234"
    Environment="HTTPS_PROXY=http://<hostname>:234"
  4. 如果代理需要密码身份验证,可能需要将此项设置为代理环境变量的一部分。例如:
    Environment="HTTP_PROXY=http://USER:PASSWORD@<hostname>:234"
  5. 如果代理使用内部证书颁发机构,可能还需要设置 REQUESTS_CA_BUNDLE 环境变量以确保代理能够加以使用。例如:
    Environment="REQUESTS_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt"
  6. 重新启动 RaaS 服务:
    systemctl restart raas

服务重新启动后,将开始下载内容。这可能需要长达 20 分钟才能完成。

手动摄取 SaltStack SecOps Compliance 内容

如果您的环境是气隙环境,这意味着无法连接到外部站点以下载更新,则必须通过从 Customer Connect 下载 tar 并将其传输到 RaaS 节点手动更新 SaltStack SecOps Compliance 内容。

此外,如果您的系统处于气隙状态,请将 RaaS 配置文件中的下载配置设置更改为 False:

sec:
  download_enabled: False

RaaS 配置文件位于 /etc/raas/raas 中。应用以下配置设置后,您可能还需要重新启动 RaaS 服务:

systemctl restart raas

要手动摄取 SaltStack SecOps Compliance tar,请执行以下操作:

  1. 下载 SaltStack SecOps Compliance 内容。
  2. 登录到 RaaS 节点。
  3. 将合规性内容 tar 复制到 RaaS 节点上的 tmp 文件夹中。

    可通过电子邮件或其他任何方式传送此内容。

  4. 确认 locke.tar.gz.e 的权限设置为 raas:raas
  5. 摄取 tar 内容。
    su - raas -c "raas ingest /path/to/locke.tar.gz.e"

    这将返回:

    Extracting: /tmp/locke.tar.gz -> /tmp/extracted-1551290468.5497127
    
    Cleaning up: /tmp/extracted-1551290468.5497127
    
    Results:
    
    {'errors': [], 'success': True}

手动摄取 SaltStack SecOps Vulnerability 内容

如果您的环境是气隙环境,这意味着无法连接到外部站点以下载更新,则必须通过从 Customer Connect 下载 tar 并将其传输到 RaaS 节点手动更新 SaltStack SecOps Vulnerability 内容。

此外,如果您的系统处于气隙状态,请将 RaaS 配置文件中的下载配置设置更改为 False:

sec:
  download_enabled: False

RaaS 配置文件位于 /etc/raas/raas 中。应用以下配置设置后,您可能还需要重新启动 RaaS 服务:

systemctl restart raas

要手动摄取 SaltStack SecOps Vulnerability tar,请执行以下操作:

  1. 下载 SaltStack SecOps Vulnerability 内容。
  2. 登录到 RaaS 节点。
  3. 将漏洞内容 tar 复制到 RaaS 节点上的 tmp 文件夹中。

    可通过电子邮件或其他任何方式传送此内容。

  4. 确认 locke.tar.gz.e 的权限设置为 raas:raas
  5. 载入 tarball 内容,将此命令中的 tarball 名称替换为 tarball 的确切文件名:
    su - raas -c "raas vman_ingest /tmp/vman_date_example123.tar.gz.e"

    这将返回:

    'adv': {'error': 0, 'success': 60334},
      'adv_cve_xref': {'error': 0, 'success': 243781},
      'cve': {'error': 0, 'success': 162251},
      'pkgfile': {'error': 0, 'success': 42},
      'py': {'error': 0, 'success': 7},
      'sls': {'error': 0, 'success': 3}

对手动摄取进行故障排除

如果尝试对 SaltStack SecOps ComplianceSaltStack SecOps Vulnerability 内容运行手动摄取命令,可能会显示类似以下内容的错误消息:

/home/centos/locke_date_example123.tar.gz.e not found or not readable

如果未将 tar 放在 tmp 文件夹中,有时会显示此错误消息。将 tar 放在 tmp 文件夹中可解决此问题。

设置 Splunk 集成

SaltStack Config 将漏洞库与 Splunk 集成,可帮助您使用适用于 Splunk Enterprise 的 SaltStack Config 加载项优化并保护数字基础架构。该加载项可从 Splunkbase 获取,并且需要 SaltStack Config 版本 6.3 或更高版本。

Splunk 中的 SaltStack Config 加载项利用与 Prometheus 兼容的衡量指标端点,该端点可报告 25 个以上的独特 SaltStack Config 衡量指标。通过这些衡量指标,可以深入了解基础架构的运行状况。在 Splunk 中访问这些衡量指标有助于监控中断情况、识别异常活动等。此外,还支持使用 SaltStack Config 根据特定的 Splunk 事件执行自动化操作。

有关如何安装和配置此加载项的说明,请参见 VMware 知识库中完整的加载项文档

有关 SaltStack Config 衡量指标端点的详细信息,请参见 SaltStack SecOps 的产品文档。

配置选项

下表介绍了可用于合规性内容的配置选项:

选项 说明
stats_snapshot_interval 收集 SaltStack SecOps Compliance 统计信息的频率(以秒为单位)
compile_stats_interval 编译 SaltStack SecOps Compliance 统计信息的频率(以秒为单位)
username 连接到 SaltStack Config 以下载最新 SaltStack SecOps Compliance 内容时使用的用户名(默认值:secops
content_url 用于下载 SaltStack SecOps Compliance 内容的 URL
ingest_override 摄取新内容时,覆盖现有基准和检查(默认值:True
locke_dir 摄取有望在其中找到新内容的路径(默认值:locke)。如果使用相对路径(无前导 /),则相对于 RaaS 服务缓存目录 /var/lib/raas/cache
post_ingest_cleanup 摄取后从文件系统中移除扩展的内容(默认值:True
download_enabled 是否允许下载 SaltStack SecOps Compliance 内容(默认值:True)。对于气隙系统,请将此选项设置为 False
download_frequency RaaS 服务尝试下载 SaltStack SecOps Compliance 内容的频率(默认值:86400,即 24 小时)
ingest_on_boot RaaS 服务是否应该在引导时尝试下载 SaltStack SecOps Compliance 内容?(默认值:True
content_lock_timeout 内容下载锁定持续时长(以秒为单位)(默认值:60
content_lock_block_timeout 内容下载锁定在失败之前阻止的时长(以秒为单位)(默认值:120

下表介绍了可用于漏洞内容的配置选项:

选项 说明
vman_dir 在摄取之前扩展 SaltStack SecOps Vulnerability 内容的位置。如果路径是相对路径(无前导 /),则相对于 RaaS 服务缓存目录 /var/lib/raas/cache
download_enabled 如果为 True,则启用 SaltStack SecOps Vulnerability 内容下载。对于气隙系统,设置为 False
download_frequency 自动下载和摄取 SaltStack SecOps Vulnerability 内容的频率(以秒为单位)
username 用于登录到 enterprise.saltstack.com 以获取内容的用户名
content_url 用于下载 SaltStack SecOps Vulnerability 内容的 URL
ingest_on_boot 如果为 True,则 RaaS 服务引导后不久,便下载和摄取 SaltStack SecOps Vulnerability 内容(默认值:True
compile_stats_interval 编译 SaltStack SecOps Vulnerability 统计信息的频率(以秒为单位)
stats_snapshot_interval 收集 SaltStack SecOps Vulnerability 统计信息的频率(以秒为单位)
old_policy_file_lifespan 旧策略文件保留在 RaaS 文件系统中的期限(以天为单位)
delete_old_policy_files_interval 从 RaaS 文件系统中删除旧 SaltStack SecOps Vulnerability 策略文件的频率(以秒为单位)
tenable_asset_import_enabled 如果为 True,则 SaltStack Config 中的工作节点颗粒将发送到 Tenable.io 以与资产匹配(默认值:True
tenable_asset_import_grains

要发送到 Tenable.io 的工作节点颗粒列表(如果启用了 tenable 资产导入)。

SaltStack SecOps Vulnerability 仅对 fqdnipv4ipv6、和 hostname 提供即时可用支持,但是可以通过定义自定义颗粒发送其他信息。有关颗粒(包括如何写入自定义颗粒)的详细信息,请参见 Salt 文档:颗粒

如果颗粒数据中只有键子集,则只会同步该子集中的键。

即使未在此处列出 fqdnipv4,也会发送这两项信息。

有关详细信息,请参见 Tenable 导入资产文档。

常见问题解答

  • 问:新 SaltStack SecOps 内容多久发布一次?
    • 答:当前的发布频率大约为每季度一次。但是,将来可能会更频繁地发布内容。
  • 如果使用自动内容摄取而不是手动摄取,是否会更快地访问新内容?
    • 答:无论是手动还是自动摄取,获取的内容都一样。

      但是,如果使用手动摄取,则需要制定检查安全内容更新计划,并设计一个流程,在更新内容可用时手动摄取。

后续操作

配置 SaltStack SecOps 后,可能还需要执行其他安装后步骤。检查安装后步骤列表,以确保您已完成所有必要的步骤。