ansible-lockdown.rhel8_cis
RHEL 8 CIS
配置 RHEL/Rocky/AlmaLinux 8 机器以符合 CIS 标准
基于 CIS RedHat Enterprise Linux 8 基准 v3.0.0 - 2023年11月10日
寻求支持?
社区
加入我们的 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
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 可以在目录内测试并运行。
pre-commit run
感谢与致敬
特别感谢出色的社区及其所有成员。 对此,特别感谢和致敬原作者和维护者。 Josh Springer、Daniel Shepherd、Bas Meijeri、James Cassell、Mike Renfro、DFed、George Nalen、Mark Bolwell。
Apply the DISA RHEL 8 CIS
ansible-galaxy install ansible-lockdown.rhel8_cis