新闻详情

新闻详情

首页 / 资讯中心 / 详情

ansible-collection-hardening 的 os_hardening Molecule Docker 测试环境搭建指南

发布时间:2026/10/2 8:16:33来源:尧图网络
ansible-collection-hardening 的 os_hardening Molecule Docker 测试环境搭建指南
网络安全运维应用安全【免费下载链接】ansible-collection-hardeningThis Ansible collection provides battle tested hardening for Linux, SSH, nginx, MySQL项目地址https://gitcode.com/GitHub_Trending/an/ansible-collection-hardening点击查看免费下载导读本文围绕 molecule/os_hardening/INSTALL.rst 这份 Docker 驱动安装指南展开讲解如何在本地为 ansible-collection-hardening 项目中的 os_hardening 角色搭建基于 Molecule Docker 的自动化测试环境。读完本文你将掌握 Docker Engine 的安装前提、Python 虚拟环境与molecule[docker]的推荐安装方式、本仓库 os_hardening 场景的 Molecule 配置结构以及从环境变量到完整测试序列的实战运行方法。一、为什么需要 Docker 驱动Molecule 场景与 Docker 的关系ansible-collection-hardening 是一个提供 Linux、SSH、nginx、MySQL 加固能力的 Ansible collection其角色roles的质量依赖 Molecule 用于验证devsec.hardening.os_hardening角色。Molecule 本身是一个测试框架它需要一个驱动driver来创建、管理和销毁测试实例。本仓库的 os_hardening 场景采用 Docker 驱动理由很直接Docker 能以容器形式快速拉起一个接近真实发行版的环境并通过 systemd 在容器内模拟完整的系统初始化流程非常适合验证操作系统加固类角色。这一点可以从 molecule/os_hardening/molecule.yml 开头的配置得到印证driver: name: docker因此运行 os_hardening 的 Molecule 测试前首要任务就是在本机装好 Docker Engine并安装带 docker 插件的 Molecule——这正是 INSTALL.rst 这份文档的全部主题。二、前置要求RequirementsINSTALL.rst 明确列出唯一硬性要求Docker Engine即在运行 Molecule 测试之前你的机器上必须已经安装并启动 Docker Engine包括 Linux 上的 docker daemon或 Docker Desktop 等发行版。Molecule 的 Docker 插件会通过 Docker Python SDK 与本地 docker daemon 通信所以仅安装 CLI 是不够的需要保证docker ps之类的命令能正常工作。补充说明本仓库的其他场景如 molecule/os_hardening_vm/使用 Vagrant 驱动验证虚拟机环境其依赖在 requirements-vm.txt 中单独声明molecule-plugins[vagrant]26.9.28而 Docker 驱动的依赖则在 requirements.txt 中声明二者职责分明。三、安装步骤InstallINSTALL.rst 给出的安装命令非常简洁$ python3 -m pip install molecule[docker]围绕这条命令文档还给出了两条重要的最佳实践本文结合实际仓库环境展开说明。3.1 推荐使用 Python 虚拟环境INSTALL.rst 建议优先参考 Virtual environmentvirtualenv官方文档的安装实践即把 Molecule 及其依赖安装到独立的虚拟环境中而不是直接装进系统 Python。这样做的好处是避免 Molecule、Ansible 与系统包管理器管理的 Python 包发生版本冲突便于按项目锁定依赖版本、随时重建环境。典型做法虚拟环境安装python3 -m venv .venv source .venv/bin/activate python3 -m pip install molecule[docker]3.2 不使用虚拟环境时请使用--user标志INSTALL.rst 特别提醒如果由于某种原因不使用虚拟环境请考虑在调用pip时加上广泛推荐的--user标志把包安装到当前用户站点目录避免污染系统级 Python 环境、也无需 root 权限python3 -m pip install --user molecule[docker]3.3 本仓库锁定的依赖版本为了可复现本仓库在 requirements.txt 中锁定了与 Docker 测试场景直接相关的依赖版本molecule26.9.0 molecule-plugins[docker]26.9.28 ansible-core2.21.4 docker7.2.0 jmespath1.1.0 aar-doc2.3.0 passlib1.7.4其中molecule-plugins[docker]是 Molecule 的 Docker 驱动插件包docker7.2.0是 Python 的 Docker SDKansible-core则提供ansible-playbook等执行引擎。在虚拟环境中按此文件安装可得到与 CI 一致的环境python3 -m pip install -r requirements.txt四、os_hardening 场景的 Molecule 配置解读安装好 Docker 驱动后理解 molecule/os_hardening/molecule.yml 的配置是正确运行测试的关键。它决定了测试实例如何创建、按什么顺序执行。4.1 Docker 平台定义platforms: - name: instance image: rndmh3ro/docker-${MOLECULE_DISTRO}-ansible:latest command: ${MOLECULE_DOCKER_COMMAND:-/lib/systemd/systemd} volumes: - /sys/fs/cgroup:/sys/fs/cgroup:rw privileged: true cgroupns_mode: host pre_build_image: true要点镜像名通过${MOLECULE_DISTRO}环境变量注入例如debian-13、ubuntu-24.04、almalinux-10等因此运行前必须设置MOLECULE_DISTRO见下文 4.3command: /lib/systemd/systemd表示容器以 systemd 作为 PID 1 启动模拟真实系统初始化流程这是 os_hardening 这类需要操作systemctl、PAM、login.defs 等系统级组件的角色所必需的privileged: true与 cgroup 挂载是 systemd 容器正常运行的前提pre_build_image: true表示直接使用预构建镜像不现场用 Dockerfile 构建。4.2 Provisioner 与 Verifier 配置provisioner: name: ansible options: diff: true config_options: defaults: interpreter_python: auto_silent callbacks_enabled: profile_tasks, timer inject_facts_as_vars: false verifier: name: ansiblediff: true让 playbook 执行时输出文件差异便于观察加固前后变化callbacks_enabled: profile_tasks, timer用于统计每个任务耗时verifier 使用 ansible 驱动即通过 verify.yml 中的任务断言加固结果。4.3 前置校验MOLECULE_DISTRO 必须设置仓库在 molecule/shared/prerequisites.yml 中提供了一个前置校验 playbook它断言MOLECULE_DISTRO环境变量必须非空否则直接报错提示设置镜像名- name: Make sure environment variable for MOLECULE_DISTRO is set ansible.builtin.assert: that: - lookup(env,MOLECULE_DISTRO) | length 0 fail_msg: You need to set MOLECULE_DISTRO to a supported image name. See CONTRIBUTING.md该 playbook 被编排进check_sequence与test_sequence的第一位verify ../shared/prerequisites.yml确保在任何 Docker 操作之前就拦截缺失环境变量的情况。因此典型运行方式为export MOLECULE_DISTROdebian-13 molecule test -s os_hardening五、场景编排从依赖安装到销毁的完整序列molecule.yml 定义了五组执行序列理解它们有助于定位测试失败的阶段序列内容作用create_sequencedependency → create → prepare创建容器并准备环境check_sequencedependency → verify prerequisites → destroy → create → prepare → converge → check → destroy以 check 模式快速验证变更converge_sequencedependency → create → prepare → converge只执行收敛应用角色destroy_sequencedestroy销毁容器test_sequencedependency → verify prerequisites → destroy → syntax → create → prepare → check → converge → idempotence → verify → destroy完整测试流水线test_sequence是日常最常用的入口它依次完成依赖安装、前置校验、清理旧实例、playbook 语法检查、创建容器、prepare 准备、check 模式试运行、converge 正式应用角色、幂等性测试、verify 结果验证最后销毁实例。幂等性测试idempotence会二次运行 converge 并断言无任务变更这是加固角色可重复执行不产生副作用这一质量属性的直接保障。六、prepare 与 verify测试数据怎么造、怎么验6.1 prepare.yml 准备测试数据molecule/os_hardening/prepare.yml 会在容器内制造各种待加固的初始状态例如在/root创建.netrc文件模拟存放明文凭据的危险文件见 prepare_tasks/netrc.yml创建密码永不过期的pw_ageing用户与不应被改动的pw_no_ageing用户prepare_tasks/pw_ageing.yml创建使用/bin/bash的系统账号shell_sys_accprepare_tasks/sys_account_shell.yml创建 home 目录权限为 777 的user_with_777_home用户prepare_tasks/ignore_home_folders.yml在 RedHat 系创建foo、bar两个无效 yum 仓库prepare_tasks/yum.yml。6.2 converge.yml 注入测试变量molecule/os_hardening/converge.yml 是应用 os_hardening 角色的 wrapper playbook它通过vars覆盖角色默认值覆盖了角色的大部分核心参数例如os_security_users_allow: change_user允许的用户变更名单os_security_kernel_enable_core_dump: false关闭内核 core dump 加固os_auth_lockout_time: 15PAM 锁定时间os_auth_pw_warn_age: 7密码过期预警天数os_netrc_enabled: false、os_ignore_users、os_ignore_home_folder_users等白名单/黑名单参数一段完整的sysctl_config内核参数表含kernel.randomize_va_space: 2、net.ipv4.conf.all.rp_filter: 1、fs.suid_dumpable: 0等同时它设置了ansible_virtualization_type: docker的事实绕过 ansible-core 在容器内收集虚拟化事实的已知问题issue #66304 的 workaround。6.3 verify.yml 双重验证molecule/os_hardening/verify.yml 包含三层验证通过include_tasks执行角色自带的断言任务覆盖系统账号 shell、密码时效、netrc、home 权限、SSH 认证锁定等加固点在 localhost 上以 Docker 方式运行 cinc-auditorInspec 的发行版执行 dev-sec/linux-baseline 声明豁免项如 os-14/15/16 因 Ansible 无法收集 tmpfs 挂载事实而豁免额外测试变量可覆盖性以os_env_umask: 027 #override再次应用角色随后grep 027 #override /etc/login.defs验证os_env_umask参数确实被写入 login.defs。七、完整的实战运行流程综合以上内容从零开始运行 os_hardening 的 Molecule Docker 测试的推荐流程为# 1. 前置要求确保 Docker Engine 已安装并运行 docker ps # 2. 创建并激活 Python 虚拟环境 python3 -m venv .venv source .venv/bin/activate # 3. 安装带 docker 驱动的 MoleculeINSTALL.rst 核心命令 python3 -m pip install molecule[docker] # 或按仓库锁定版本安装 python3 -m pip install -r requirements.txt # 4. 设置被测发行版镜像名prerequisites.yml 强制要求 export MOLECULE_DISTROdebian-13 # 5. 运行完整测试流水线test_sequence molecule test -s os_hardening # 6. 迭代调试仅应用角色并保留容器 molecule converge -s os_hardening molecule verify -s os_hardening molecule destroy -s os_hardening八、常见问题与注意事项未设置 MOLECULE_DISTROcheck_sequence与test_sequence会首先执行 shared/prerequisites.yml 并直接失败提示参考 CONTRIBUTING.md 中的镜像名列表容器内无 systemd本场景依赖command: /lib/systemd/systemd的预构建镜像rndmh3ro/docker-${MOLECULE_DISTRO}-ansible若替换镜像需同步调整启动命令与特权参数幂等性测试失败表明角色二次执行仍有任务变更可结合diff: true输出的差异定位验证豁免linux-baseline 基线中因 Ansible 事实收集限制无法修复的项通过 waivers.yaml 显式豁免并写明 justification避免误报。结语molecule/os_hardening/INSTALL.rst 虽然简短却点出了整条 Docker 测试链路的起点Docker Engine molecule[docker]。以此为入口配合本仓库 molecule/os_hardening/molecule.yml 的平台定义、五组执行序列、prepare/converge/verify 三份 playbook 以及 waivers 豁免机制即可在本地复现 os_hardening 角色的完整自动化验证为加固配置的每一次修改提供可重复、可审计的质量保障。赞分享网络安全运维应用安全【免费下载链接】ansible-collection-hardeningThis Ansible collection provides battle tested hardening for Linux, SSH, nginx, MySQL项目地址https://gitcode.com/GitHub_Trending/an/ansible-collection-hardening点击查看免费下载相关推荐ansible-collection-hardening 中的 Molecule Docker 驱动安装指南环境要求、pip 安装与测试场景实战ansible collection hardening 中的 Molecule Docker 驱动安装指南环境要求、pip 安装与测试场景实战 导读 mol网络安全运维应用安全ansible-collection-hardening 中 Molecule Docker 驱动安装与 mysql_hardening 测试场景实战ansible collection hardening 中 Molecule Docker 驱动安装与 mysql_hardening 测试场景实战 本篇指南网络安全运维应用安全OpenRocket 代码库漫游指南核心模块结构、GUI 主题定制与单位体系解析OpenRocket 代码库漫游指南核心模块结构、GUI 主题定制与单位体系解析 OpenRocket 是一个开源的模型火箭空气动力学与轨迹仿真软件其代码库网络安全运维应用安全上一篇变砖手机复活全记录MTKClient 开源刷机工具手把手实战下一篇Civitai 扫描器派生标签Derived Labels实现指南XGuard 回调中的标签抑制与合成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Python机器学习课程设计:旅游业发展预测实验报告(Pearson+Lasso+灰色预测+SVR) 2026/10/2 8:56:43

Python机器学习课程设计:旅游业发展预测实验报告(Pearson+Lasso+灰色预测+SVR)

简介:这份资源是一份面向高校学生与机器学习初学者的课程设计实验报告,主题为运用Python预测我国旅游业发展,适合作为课程作业参考、数据分析入门练手或相关课题的写作模板。压缩包内共1个docx文档,约264KB,内容围绕20…

阅读更多 →
新能源汽车销售数据时空特征分析与趋势预测:从粒度对齐到模型选型 2026/10/2 8:56:43

新能源汽车销售数据时空特征分析与趋势预测:从粒度对齐到模型选型

简介:新能源汽车销售数据时空特征分析与趋势预测完整代码数据集,面向数据分析初学者、新能源汽车研究人员以及需要市场研判的从业者,用于学习从数据处理到销量预测的完整Python方案。资源基于Python完成数据探索、缺失值处理、标准化、特征工…

阅读更多 →
FACT:用细粒度跨变量卷积建模动态变量交互,替代注意力机制 2026/10/2 8:56:43

FACT:用细粒度跨变量卷积建模动态变量交互,替代注意力机制

FACT:用细粒度跨变量卷积建模动态变量交互——我为什么放弃了注意力机制多变量时间序列预测里,最让人头疼的问题从来不是“预测算法准不准”,而是“变量之间那层剪不断理还乱的关系到底怎么建模”。温度会影响用电量,交通拥堵会影…

阅读更多 →
Jev 深度解析:TypeSafe AI 接入方案与本地部署实战指南 2026/10/2 8:56:43

Jev 深度解析:TypeSafe AI 接入方案与本地部署实战指南

1. Jev 到底是什么:从热搜词里还原它的真实面貌最近一段时间,不管你是刷技术社区、翻聊天群,还是看短视频评论区,"Jev"这个词出现的频率高得有点离谱。有人把它和 Claude Code 放在一起聊,有人问"Jev 模…

阅读更多 →
Fortify Heap Inspection漏洞解析:从String到char[]的内存安全实践 2026/10/2 8:56:36

Fortify Heap Inspection漏洞解析:从String到char[]的内存安全实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
codex 安装配置与实战避坑指南:从环境准备到高效编码 2026/10/2 8:56:36

codex 安装配置与实战避坑指南:从环境准备到高效编码

1. 从“装完就吃灰”说起:codex 到底适合谁我大概是从去年下半年开始把 codex 当成主力工具来用的,中间经历过装不上、连不通、模型报错、配置被忽略、登录卡死、沙盒起不来这一整套流程。身边不少朋友看我天天在用,也去下了个安装包&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉