ansible-lockdown.rhel9_cis
RHEL 9 CIS
配置 RHEL 9 机器以符合 CIS 标准
基于 CIS RedHat Enterprise Linux 9 基准 v1.0.0 - 2022年11月30日
寻求支持?
社区
加入我们的 Discord 服务器,提出问题、讨论功能或与其他 Ansible-Lockdown 用户聊天。
贡献
欢迎提出问题和拉取请求,请确保所有提交都已签名和 GPG 签名。 请参考 贡献指南
注意事项
此角色 将对系统进行更改,可能会产生意外后果。这不是审计工具,而是用于审计后进行修复的工具。
不支持检查模式!该角色在检查模式下完成不会报错,但不被支持,使用时应谨慎。可使用 RHEL8-CIS-Audit 角色或合规扫描器进行合规性检查。
该角色是在操作系统的干净安装上开发的。如果您在现有系统上实施,请查看该角色以了解是否需要任何特定于站点的更改。
要使用发行版本,请指向 main
分支及您希望使用的 CIS 基准的相关发行版本。
匹配 CIS 的安全级别
可以仅运行 CIS 的级别 1 或级别 2 控制。 这通过标签进行管理:
- level1-server
- level1-workstation
- level2-server
- level2-workstation
在 defaults
主文件中找到的控制也需要反映这一点,因为该控制是如果您使用审计组件时进行的测试。
来自先前版本的更改
CIS 版本总是包含更改,建议您查看新引用和可用变量。自 ansible-lockdown 初始发行以来,变化显著。 如果发现是默认解释器,则现在与 python3 兼容。这需要一些先决条件,以相应地配置系统。
详细信息请参见 变更日志
审计(新)
可以在 defaults/main.yml
文件中通过变量 setup_audit
和 run_audit
开启或关闭。默认值为 false
。有关更多详细信息,请参阅维基。默认文件还填充了 goss 检查,仅检查已在 ansible 角色中启用的控制。
这是一种更快、更轻量的检查(在可能的情况下)配置合规性和实时/运行设置的方法。
使用一个称为 goss 的小型(12MB)go 二进制文件及相关配置创建了一种新的审计形式,可以无需基础设施或其他工具进行检查。 该审计不仅检查配置是否具有正确的设置,还旨在捕获其是否正在以该配置运行,并尝试在此过程中消除 假阳性。
请参考 RHEL9-CIS-Audit。
文档
要求
RHEL 9 Almalinux 9 Rocky 9 OracleLinux 9
- 如果使用审计,需要访问下载或添加 goss 二进制文件和内容到系统(还有其他方法可以将内容添加到系统)。
CentOS stream - 虽然通常可以工作,但不受支持,并且需要设置以下变量:
os_check: false
一般要求:
对 Ansible 有基本了解,以下是一些链接,可帮助您入门,如不熟悉 Ansible
要求已经安装、配置并运行执行的 Ansible 和/或 Tower。这包括所有基础 Ansible/Tower 配置、所需软件包的安装和基础设施的设置。
请通读本角色中的任务,以了解每个控制正在做什么。某些任务是破坏性的,可能对实时生产系统产生意外后果。也要熟悉 defaults/main.yml 文件中的变量。
技术依赖:
- Python3
- Ansible 2.10+
- python-def(应包含在 RHEL 9 中)
- libselinux-python
- pip 软件包
- jmespath
- 在 collections/requirements.yml 中找到的集合
如果在您的主机上安装了 pre-commit,可以进行拉取请求测试。
角色变量
该角色设计为最终用户不必编辑任务本身。所有自定义应通过覆盖 defaults/main.yml 文件中找到的所需变量来完成。例如使用 inventory、group_vars、extra_vars。
标签
有许多标签可用于增加控制的精确性。每个控制都有自己的一组标签,标明级别、是否评分、有关的操作系统元素、是否为修补程序或审计,以及规则编号。
以下是角色中某个控制的标签部分示例。使用这个示例,如果您设置运行以跳过所有带有标签 services 的控件,这个任务将会被跳过。相反,您也可以仅运行带有 services 标签的控件。
tags:
- level1-server
- level1-workstation
- scored
- avahi
- services
- patch
- rule_2.2.4
社区贡献
我们鼓励您(社区)为此角色作出贡献。请阅读以下规则。
- 您的工作在您自己的单独分支中完成。确保对所有您想合并的提交进行签名和 GPG 签名。
- 所有社区的拉取请求被拉入 devel 分支。
- 拉取请求进入 devel 时,将确认您的提交具有 GPG 签名、已签名,并在获得批准之前经过功能测试。
- 一旦您的更改合并并完成更详细的审核,授权成员将把您的更改合并到主分支以进行新版本发布。
已知问题
CIS 1.2.4 - 对于 RedHat 主机,不执行 repo_gpgcheck,因为默认仓库没有此功能。这也影响 EPEL(不受 var 覆盖)。 - Rocky 和 Alma 不受影响。 使用的变量以取消设置。 rhel9cis_rhel_default_repo: true # 如果使用具有此功能的仓库,则应设置为 false
管道测试
使用:
- ansible-core 2.12
- ansible collections - 根据要求文件拉取最新版本
- 使用 devel 分支运行审计
- 对 PR 运行 pre-commit 设置,以确保一切按预期就位。
- 这是一项自动化测试,发生在对 devel 的拉取请求中。
本地测试
Ansible
- ansible-base 2.10.17 - python 3.8
- ansible-core 2.13.4 - python 3.10
- ansible-core 2.15.1 - python 3.11
附加内容
- makefile - 仅用于测试和初始设置目的。
- pre-commit 可以进行测试,可以在目录内运行
pre-commit run
感谢和致敬
基于 Sam Doran 的原始概念
特别感谢出色的社区及其所有成员。
这包括对原始作者和维护者的巨大感谢和致敬。
Mark Bolwell, George Nalen, Steve Williams, Fred Witty
Apply the RHEL 9 CIS
ansible-galaxy install ansible-lockdown.rhel9_cis