ansible-lockdown.rhel8_stig

RHEL 8 DISA STIG

配置基于 RHEL8 的系统以符合 DISA STIG 要求

此角色基于 RHEL 8 DISA STIG:版本 1,发布 13,发布日期为 2024 年 1 月 24 日


组织明星 明星 分支 关注者 Twitter 链接

Discord 徽章

发布分支 发布标签 发布日期

主管道状态

开发管道状态 开发提交

打开的问题 关闭的问题 拉取请求

许可证


寻求支持?

Lockdown 企业

Ansible 支持

社区

在我们的 Discord 服务器 上询问问题,讨论功能,或与其他 Ansible-Lockdown 用户聊天。


配置 RHEL/Rocky 8 系统以符合 DISA STIG 要求。 默认情况下,将自动修正非破坏性的 CAT I、CAT II 和 CAT III 问题。 通过将 rhel8stig_disruption_high 设置为 true 可以启用破坏性问题的修复。

更新

来自先前版本。

与所有版本和更新一样,建议进行测试并对控制进行调整。 根据 STIG 文档,这包含重写和 ID 参考更改。

审计

可以在 defaults/main.yml 文件中通过变量 rhel7cis_run_audit 打开或关闭。默认值为 false,更多详细信息请参考 wiki。默认文件还填充了 goss 检查,仅检查在 ansible 角色中启用的控制。

这是一种快速、非常轻量级的合规性检查(在可能的情况下)配置和正在运行的设置。

开发了一种审计形式,使用一个小的(12MB)go 二进制文件 goss 及相关配置进行检查。无需基础设施或其他工具。 此审计不仅检查配置是否具有正确的设置,还旨在捕获它是否在使用该配置运行,同时努力消除 假阳性

文档

要求

  • RHEL/Rocky/AlmaLinux/OL 8 - 不支持其他版本。
  • 其他操作系统可以通过将 skip_os_check 设置为 true 进行测试。
  • 如果使用审计,则需要能够下载或添加 goss 二进制文件和内容到系统。关于如何将内容导入系统的选项可用。

依赖

以下软件包必须安装在执行 ansible 的控制主机上:

  • python2-passlib(如果使用 python3,只需 passlib)
  • python-lxml

软件包 python(2)-passlib 是使用自定义过滤器或模块的任务所需。这些在执行 Ansible 的控制主机上都是必需的。

角色变量

此角色设计为最终用户不必编辑任务本身。所有自定义都应通过 defaults/main.yml 文件或通过额外变量在项目、作业、工作流等中进行。

标签

提供许多标签以增强控制精度。每个控制都有自己的一组标签,标记控制编号以及该控制所涉及的系统部分。

以下是此角色中某个控制的标签部分示例。使用此示例,如果您设置运行以跳过所有带有 ssh 标签的控制,则此任务将被跳过。 也可以发生相反的情况,只运行带有 ssh 标签的控制。

tags:
    - RHEL-08-010050
    - ssh
    - dod_logon_banner

审计摘要示例

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

ok: [rocky8_efi] =>
  msg:
  - '初步修复结果:计数:804,失败:416,时长:6.488秒。'
  - '修复后结果:计数:804,失败:28,时长:68.687秒。'
  - 完整细节可在 /opt 找到。

PLAY RECAP ****************************************************************************************************************
rocky8_efi                 : ok=482  changed=269  unreachable=0    failed=0    skipped=207  rescued=0    ignored=0

分支

  • devel - 这是默认分支和工作开发分支。社区的拉取请求会合并到这个分支。
  • main - 这是发布分支。
  • reports - 这是一个受保护的分支,用于我们的评分报告,不能提交代码到这里。
  • gh_pages - GitHub 页面。
  • 其他分支 - 各个社区成员的分支。

容器 - 测试

  • system_is_container

默认设置为 false。 如果发现是容器类型或 ansible_connection == docker,它将转换为 true。 如果为 true,则某些控制将被跳过,因为它们完全不适用。其他控制在 vars/is_container.yml 中运行,基于供应商提供的未修改的映像。

未修改的供应商映像。

  • container_vars_file: is_container.yml

此变量文件将在标签中分组控制,因此如果容器后来有了 ssh,可以通过加载替代变量文件重新启用它。

社区贡献

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

  • 您的工作在您自己的个人分支中完成。确保对要合并的所有提交进行签名和 GPG 签名。
  • 所有社区拉取请求将合并到 devel 分支。
  • 合并到 devel 的拉取请求将确认您的提交具有 GPG 签名、已签署并在批准前经过功能测试。
  • 一旦您的更改合并并完成更详细的审查,授权成员将把您的更改合并到 main 分支以进行新发布。

管道测试

使用:

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

已知问题

如果采用 STIG 规则 RHEL-08-040134

这将影响云初始化,具体参见 bug 1839899

支持

这本质上是一个社区项目,将作为这样的项目进行管理。

如果您对专门的支持服务或定制设置感兴趣

致谢

这个代码库起源于 Sam Doran 的工作。

添加的额外内容

  • makefile - 仅用于测试和初始设置目的。
  • pre-commit 可以进行测试,并且可以在目录内运行。
pre-commit run

致谢与感谢

感谢出色的社区及其所有成员。 特别感谢原作者和维护者。

Josh Springer, Daniel Shepherd, Bas Meijeri, James Cassell, Mike Renfro, DFed, George Nalen, Mark Bolwell

安装
ansible-galaxy install ansible-lockdown.rhel8_stig
许可证
mit
下载
1.9k
拥有者
Lockdown is a security baseline automation project sponsored by Tyto Athene.