ansible-lockdown.rhel8_cis

RHEL 8 CIS

配置 RHEL/Rocky/AlmaLinux 8 机器以符合 CIS 标准

基于 CIS RedHat Enterprise Linux 8 基准 v3.0.0 - 2023年11月10日


Org Stars Stars Forks followers Twitter URL

Discord Badge

Release Branch Release Tag Release Date

Main Pipeline Status

Devel Pipeline Status Devel Commits

Issues Open Issues Closed Pull Requests

License


寻求支持?

Lockdown Enterprise

Ansible 支持

社区

加入我们的 Discord 服务器 提问、讨论功能或与其他 Ansible-Lockdown 用户聊天。


注意事项

此角色 将对系统做出更改,可能会产生意想不到的后果。这不是一个审计工具,而是一个在审核后用于修复的工具。

  • 测试是最重要的工作。

  • 不支持检查模式!角色将以检查模式运行且不会报错,但不被支持,使用时需谨慎。应使用 RHEL8-CIS-Audit 角色或合规扫描器进行合规检查。

  • 此角色是针对操作系统的干净安装开发的。如果您要在现有系统上应用,需查看该角色以获取所需的特定更改。

  • 使用发行版本时,请指向主分支及您希望使用的相关发布/标签。

  • 如果在主要版本间移动,例如 v2.0.0 到 v3.0.0,基准和控制将有显著变化,建议作为新标准开始,而不是升级。

  • 容器引用 vars/is_container.yml,这是一个示例,需根据您的要求进行更新。

  • 我们提到过测试吗??


匹配 CIS 安全级别

可以只运行 CIS 的级别 1 或级别 2 控制。 这是通过标签管理的:

  • level1_server
  • level1_workstation
  • level2_server
  • level2_workstation

在默认主设置中找到的控制也需反映这一点,因为这是在使用审计组件时进行的测试。

从以前的版本过渡

CIS 发布总是包含更改,强烈建议查看新的参考和可用变量。自 ansible-lockdown 首次发布以来,这些已经发生显著变化。 如果找到默认解释器,则现在与 python3 兼容。它带有相应的先决条件,有助于配置系统。

更多详细信息请查看 变更日志

审计(新)

可以在 defaults/main.yml 文件中通过变量 rhel8cis_run_audit 打开或关闭。默认值为 false,请参阅 wiki 了解更多细节。默认文件还填充了 goss 检查,只检查已在 Ansible 角色中启用的控制。

这是一个快捷且非常轻量的检查配置合规性和实时设置的方法。

新型审计通过使用一个小型(12MB)go 二进制文件 goss 及相关配置进行检查。无需基础设施或其他工具。 此审计不仅会检查配置是否正确,还旨在检查其是否以该配置运行,并尽量消除 误报

请参见 RHEL8-CIS-Audit

示例审计摘要

这是基于启用选项的 vagrant 镜像。比如无 GUI 或防火墙。 注意:在审计期间会进行更多测试,因为我们检查配置和运行状态。


ok: [default] => {
    "msg": [
        "预修复结果为: ['总持续时间: 5.454s', '数量: 338, 失败: 47, 跳过: 5'].",
        "后修复结果为: ['总持续时间: 5.007s', '数量: 338, 失败: 46, 跳过: 5'].",
        "完整细节可在 /var/tmp 中找到",
        ""
    ]
}

PLAY RECAP *******************************************************************************************************************************************
default                    : ok=270  changed=23   unreachable=0    failed=0    skipped=140  rescued=0    ignored=0

文档

要求

一般要求:

  • 具备基本的 Ansible 知识,以下是一些链接,可以帮助您入门。

  • 需要安装、配置并运行的有效 Ansible 和/或 Tower。这包括所有基础的 Ansible/Tower 配置、所需的软件包以及基础设施设置。

  • 请查看此角色中的任务以了解每个控制的功能。有些任务是破坏性的,可能会对在线生产系统产生意想不到的后果。同时熟悉 defaults/main.yml 文件中的变量。

技术依赖:

支持的版本为 RHEL/AlmaLinux/Rocky/Oracle 8 - 其他版本不支持。

  • AlmaLinux/Rocky 在 8.8 下进行了测试(启用 crypto(1.10 和 1.11 部分)导致更新或安装失败:2021年7月1日)。
  • 如使用审计,则需访问下载或添加 goss 二进制文件和内容到系统(还有其他方法可以将内容传输到系统。)
  • Python3.8
  • Ansible 2.11+
  • python-def(应包含在 RHEL 8 中)
  • libselinux-python

角色变量

此角色的设计使得最终用户无需编辑任务本身。所有自定义应通过 defaults/main.yml 文件或项目、作业、工作流等中的额外变量来完成。

标签

可用于增加控制精度的标签有很多。每个控制都有自己的一组标签,说明其级别、是否计分、与哪个操作系统元素相关、是否为修补程序或审计以及规则编号。

下面是此角色中某个控制的标签部分的示例。如果您将运行设置为跳过所有带有标签 services 的控制,则此任务将被跳过。相反,您也可以仅运行带有 services 标签的控制。

      tags:
      - level1-server
      - level1-workstation
      - scored
      - avahi
      - services
      - patch
      - rule_2.2.4

社区贡献

我们鼓励您(社区)为此角色做出贡献。请阅读以下规则。

  • 您的工作将在您自己的单独分支进行。确保您已签名并对所有要合并的提交进行 GPG 签名。
  • 所有社区的拉取请求都会合并到 devel 分支
  • 合并到 devel 的拉取请求将确认您的提交具有 GPG 签名,已签名,以及在批准之前经过功能测试。
  • 一旦您的更改被合并并完成更详细的审核,授权成员将把您的更改合并到主分支以发行新版本。

已知问题

cloud0init - 由于一个错误,如果 /var 添加了 noexec,则将停止工作。 rhel8cis_rule_1_1_3_3

bug 1839899

Almalinux BaseOS、EPEL 和许多云提供商的存储库,不允许 rule_1.2.3 的 repo_gpgcheck,这将在剧本运行期间造成问题,除非找到解决方法。

管道测试

使用:

  • ansible-core 2.12
  • ansible 集合 - 根据需求文件拉取最新版本
  • 使用 devel 分支运行审计
  • 这是在对 devel 的拉取请求中发生的自动测试

本地测试

可以使用 Molecule 在此角色上工作并进行不同场景的测试。

示例

molecule test -s default
molecule converge -s wsl -- --check
molecule verify -s localhost

本地测试使用:

  • ansible 2.13.3
  • molecule 4.0.1
  • molecule-docker 2.0.0
  • molecule-podman 2.0.2
  • molecule-vagrant 1.0.0
  • molecule-azure 0.5.0

附加内容

pre-commit run

感谢与致敬

特别感谢出色的社区及其所有成员。 对此,特别感谢和致敬原作者和维护者。 Josh Springer、Daniel Shepherd、Bas Meijeri、James Cassell、Mike Renfro、DFed、George Nalen、Mark Bolwell。

安装
ansible-galaxy install ansible-lockdown.rhel8_cis
许可证
mit
下载
10.6k
拥有者
Ansible Lockdown is a security baseline automation project sponsored by Mindpoint Group.