新闻详情

新闻详情

首页 / 资讯中心 / 详情

ansible-collection-hardening 实战:安装 Molecule 与 Docker driver 并本地测试 ssh_hardening 角色

发布时间:2026/10/2 13:38:35来源:尧图网络
ansible-collection-hardening 实战:安装 Molecule 与 Docker driver 并本地测试 ssh_hardening 角色
网络安全运维应用安全【免费下载链接】ansible-collection-hardeningThis Ansible collection provides battle tested hardening for Linux, SSH, nginx, MySQL项目地址https://gitcode.com/GitHub_Trending/an/ansible-collection-hardening点击查看免费下载本篇指南以仓库内 molecule/ssh_hardening/INSTALL.rst 为核心系统讲解如何为 ansible-collection-hardening 配置 Molecule 的 Docker 测试驱动从前置条件、虚拟环境最佳实践、精确版本锁定到结合molecule test -s ssh_hardening在 Docker 容器中完整跑通 SSH 加固角色的集成测试。读完本文你将掌握一套可复制的本地/CI 测试环境搭建流程并理解仓库中 Docker 驱动配置、系统镜像矩阵与验证脚本的底层原理。一、为什么需要 Molecule 的 Docker driverMolecule 是 Ansible 角色/集合开发的事实标准测试工具它通过driver驱动管理测试实例的生命周期。本仓库的 SSH 加固角色 roles/ssh_hardening 会修改/etc/ssh/sshd_config、主机密钥、PAM 与登录策略等系统级配置绝不能在开发机上直接施加因此必须在隔离的测试容器中验证。molecule-plugins[docker]就是让 Molecule 直接调用 Docker Engine 创建、销毁测试容器的驱动是本地开发与 CI 共用的默认方案——仓库的 molecule.yml 第一行即声明driver: name: docker。二、前置要求Docker Engine原文档明确列出唯一的硬性要求Docker Engine本地需要可用的 Docker 守护进程daemon且当前用户具备调用它的权限通常通过docker用户组或 root 环境。Molecule 在create阶段会用 Docker SDKdocker7.2.0见下文版本锁定拉起测试容器destroy阶段再将其删除。在 Linux 上安装 Docker Engine 后建议用docker run hello-world或docker info先确认环境可用再进入下一步安装 Molecule。CI 场景中仓库使用ubuntu-26.04运行器其原生自带 Docker 环境见 .github/workflows/ssh_hardening.yml。三、安装 Molecule 与 Docker driver原文档给出的安装命令是$ python3 -m pip install molecule[docker]这条命令会同时安装 Molecule 本体、molecule-plugins的 Docker 插件及其 Python 依赖如dockerSDK。围绕它原文档补充了两条重要的最佳实践优先使用虚拟环境virtualenv/venv官方虚拟环境文档强调隔离依赖、避免污染系统 Python。仓库内的 CONTRIBUTING.md 与 CI 也遵循这一思路——工作流中先actions/setup-python建独立 Python 环境再pip install -r requirements.txt。若必须装到系统 Python请加--user标志即python3 -m pip install --user molecule[docker]将包安装到当前用户 site-packages规避权限问题与系统包冲突。推荐完整做法虚拟环境方式# 1. 创建并激活虚拟环境 python3 -m venv .venv source .venv/bin/activate # 2. 安装 Molecule 及 Docker driver python3 -m pip install molecule[docker] # 3. 确认安装成功 molecule --version3.1 仓库内的精确版本锁定直接用上述命令会安装最新版本而仓库通过 requirements.txt 对工具链做了精确锁定本地复现 CI 环境建议照搬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其中molecule26.9.0Molecule 主程序对应仓库全部 scenario 所依赖的指令集molecule test、create_sequence等均在该版本定义。molecule-plugins[docker]26.9.28Docker driver 插件本篇文章的主角负责实例生命周期与 Docker 交互。docker7.2.0Python Docker SDKdriver 底层通过它连接 Docker Engine。ansible-core2.21.4Molecule 的 provisioner 依赖的 Ansible 核心。安装时建议直接pip install -r requirements.txt保证与仓库测试完全同版本。另注意虚拟机测试场景需要额外依赖 requirements-vm.txtmolecule-plugins[vagrant]Docker 场景不需要。四、把 ssh_hardening 的测试真正跑起来安装完成后进入仓库根目录执行# 必须指定要测试的目标发行版镜像 export MOLECULE_DISTROdebian12 # 运行 ssh_hardening 场景的完整测试 molecule test -s ssh_hardeningMOLECULE_DISTRO是必需的环境变量——仓库在 molecule/shared/prerequisites.yml 中用ansible.builtin.assert强制校验其已设置未设置会直接失败并提示See CONTRIBUTING.md。它决定拉起哪个发行版容器镜像。注意-s ssh_hardening指 molecule 目录下的场景名。仓库共有多个场景ssh_hardening、ssh_hardening_custom_tests、ssh_hardening_vm虚拟机驱动、os_hardening、nginx_hardening、mysql_hardening等本文聚焦ssh_hardening。4.1 支持的系统镜像矩阵CI 工作流 .github/workflows/ssh_hardening.yml 展示了官方验证过的MOLECULE_DISTRO取值矩阵EL 系almalinux8/9/10、centosstream9、rocky8/9/10Fedorafedora42、fedora43、fedora44Debian/Ubuntudebian12、debian13、ubuntu2204、ubuntu2404、ubuntu2604其他amazon2023、arch以及特例alpine# 例如在 Fedora 43 上测试 export MOLECULE_DISTROfedora43 molecule test -s ssh_hardening4.2 测试期间发生了什么执行序列molecule test依次执行 molecule.yml 中test_sequence定义的步骤对 ssh_hardening 场景而言dependency解析角色依赖本角色无外部依赖。verify ../shared/prerequisites.yml校验MOLECULE_DISTRO已设置。destroy清理可能残留的旧实例。syntax对 converge.yml 做语法检查。createDocker driver 登场——按平台定义拉起容器。prepare执行 prepare.yml在容器内安装 openssh-client/openssh-server 等包并生成主机密钥ssh-keygen -A。check/converge运行 converge.yml通过include_role调用devsec.hardening.ssh_hardening角色注意该场景传入了sftp_enabled: false的测试变量。idempotence再次执行并断言零变更保证角色幂等。verify执行 verify.yml用cincproject/auditor镜像在容器内跑 dev-sec SSH 基线Inspec测试失败则任务退出码非零并报错。destroy删除容器清理环境。五、Docker driver 配置剖析molecule.yml 逐项解读仓库 molecule/ssh_hardening/molecule.yml 是 Docker driver 实际配置的完整范例理解它对二次开发与排障至关重要--- driver: name: 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 provisioner: name: ansible options: diff: true config_options: defaults: interpreter_python: auto_silent callbacks_enabled: profile_tasks, timer inject_facts_as_vars: false inventory: host_vars: instance: ansible_user: ansible verifier: name: ansible关键项说明image镜像名由${MOLECULE_DISTRO}动态拼装即你设置的发行版代号会直接进入镜像标签。仓库使用rndmh3ro/docker-distro-ansible:latest这类预置了 systemd 与 Ansible 运行环境的镜像。command容器入口命令默认/lib/systemd/systemd让 systemd 作为 PID 1以便角色能真正管理系统服务Alpine 特例为/sbin/init——CI 矩阵里alpine项就单独覆盖了MOLECULE_DOCKER_COMMAND这也是为什么 prepare.yml 对 Alpine 用community.general.apk安装 openssh。volumesprivilegedcgroupns_mode: host挂载 cgroup 并授予特权、使用宿主 cgroup 命名空间这是 systemd 容器正确初始化服务的标准组合。pre_build_image: true镜像已预装所需内容Molecule 不再为其额外构建。host_vars.instance.ansible_user: ansible注释链接指向 Molecule 官方文档中非特权用户容器一节容器内用ansible用户执行任务贴合真实生产的最小权限原则。callbacks_enabled: profile_tasks, timer输出各任务耗时便于定位慢任务inject_facts_as_vars: false与interpreter_python: auto_silent是 Ansible 侧的性能与兼容性调优。5.1 prepare.yml容器内的准备逻辑prepare.yml 按发行版族做差异化准备Fedora 用dnf安装openssh-clients/openssh-server与libselinux-python、procps-ngDebian/Ubuntu 用apt安装openssh-client/openssh-serverSuSE 因 zypper 模块依赖 python-xml 而改用zypper -n install python-xml命令后安装opensshAlpine 用apk、Arch 用pacman额外装awk。最后统一执行ssh-keygen -A生成缺失的主机密钥。这些差异正是测试多发行版时一处配置、处处可测的实现基础。六、CI 中的用法工作流如何调用 Docker driver仓库把上述本地流程原样搬进了 GitHub Actions。ssh_hardening.yml 的核心步骤如下检出仓库到ansible_collections/devsec/hardening符合 Ansible 集合目录布局使devsec.hardening.ssh_hardening角色名可解析用 Python 3.14 pip 缓存安装 requirements.txt针对 Rocky 8 / AlmaLinux 8 降级工具链pip install ansible-core2.17并固定community.crypto:3.0.0与community.general:12.0.0保证旧发行版兼容执行molecule test -s ssh_hardening通过矩阵变量注入MOLECULE_DISTRO与MOLECULE_DOCKER_COMMAND。此外 ssh_hardening_custom_tests.yml 用同样的驱动配置跑-s ssh_hardening_custom_tests场景验证自定义测试覆盖二者互为印证。本地完全可以用同一套命令复现这些矩阵结果。七、本地测试常见问题与注意事项结合 roles/ssh_hardening/README.md 与仓库配置实战中要留意以下几点MOLECULE_DISTRO必须设置缺失会在test_sequence的 prerequisites 校验阶段直接失败错误信息见 molecule/shared/prerequisites.yml。非特权容器用户实例内默认ansible_user: ansible若自定义平台请保持该约定或同步修改 inventory 变量。角色禁用 root 登录ssh_hardening 默认ssh_permit_root_login: no测试容器本身依赖预置的ansible用户与密钥完成连接在自己机器上直接跑该角色时务必确保存在可 sudo 的非 root 账户。禁用 SFTP 的连锁影响ssh_hardening场景的 converge.yml 设置sftp_enabled: false而 Ansible 默认用 SFTP 传文件——按角色 README 的建议若在真实主机上禁用 SFTP需在ansible.cfg中设置scp_if_ssh True控制端 OpenSSH ≥ 9.0 时还需scp_extra_args -O因新版本 scp 也默认走 SFTP。版本锁定优先直接pip install molecule[docker]得到的是最新版与仓库 CI 的molecule26.9.0molecule-plugins[docker]26.9.28可能存在行为差异排障时先用pip install -r requirements.txt对齐。旧发行版需降级Rocky 8 / AlmaLinux 8 上角色依赖的集合模块较新本地模拟 CI 时应参考工作流中的降级步骤。八、小结本指南围绕 molecule/ssh_hardening/INSTALL.rst 的三点核心内容——Docker Engine 前置要求、虚拟环境/--user最佳实践、python3 -m pip install molecule[docker]安装命令——展开了从环境搭建、版本锁定、场景执行到配置解读的完整链路。掌握了 Docker driver 的安装与调用方式你就能在本地复现 .github/workflows/ssh_hardening.yml 的全部测试矩阵为 SSH 加固角色的二次开发与安全基线验证建立可靠的自动化基础。更进一步理解 molecule.yml 的平台定义模式后可以轻松扩展到本仓库的os_hardening、nginx_hardening、mysql_hardening等其他场景——它们的 Docker driver 配置思路完全一致。赞分享网络安全运维应用安全【免费下载链接】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 的 nginx_hardening Molecule 场景Docker Driver 安装与 CI 测试实践指南ansible collection hardening 的 nginx_hardening Molecule 场景Docker Driver 安装与 CI网络安全运维应用安全ansible-collection-hardening 中 Molecule Docker 驱动安装与 mysql_hardening 测试场景实战ansible collection hardening 中 Molecule Docker 驱动安装与 mysql_hardening 测试场景实战 本篇指南网络安全运维应用安全Ansible SSH 加固实战深入解析 ansible-collection-hardening 的 ssh_hardening 角色Ansible SSH 加固实战深入解析 ansible collection hardening 的 ssh_hardening 角色 导读 本文围绕开源网络安全运维应用安全上一篇WarcraftHelper5分钟解决魔兽争霸3现代电脑兼容性问题下一篇WarcraftHelper终极指南5分钟让魔兽争霸3在现代电脑上重生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

手写数字识别系统实战:从MNIST训练到Python部署全流程 2026/10/2 14:25:13

手写数字识别系统实战:从MNIST训练到Python部署全流程

简介:面向课程设计与图像识别入门学习者的 Python 手写数字识别课程资源,覆盖从数字图像输入、数据预处理到多元线性回归多分类建模、模型测试的完整流程。压缩包共 16 个文件、约 251KB,包括可直接运行的训练与识别 Python 脚本、设计报告 W…

阅读更多 →
防尾随门AI视觉方案:YOLO行人检测与多路摄像头部署实战 2026/10/2 14:25:06

防尾随门AI视觉方案:YOLO行人检测与多路摄像头部署实战

高档小区防尾随门项目,最近陆续有人问落地细节。问题集中在几个点上:AI摄像头怎么选、YOLO检测怎么部署、尾随判定逻辑怎么写、多路摄像头批量接入怎么管理。这次把方案拆开讲,从硬件选型、服务部署、尾随判定到接口联动,全部按可…

阅读更多 →
CTF Misc入门:隐写术实战复盘与工具速查 2026/10/2 14:24:54

CTF Misc入门:隐写术实战复盘与工具速查

每次有朋友问我 CTF 的 Misc 题怎么入门,我给的第一个建议基本都是:找一道隐写术的题,做一次完整的 writeup 复盘。因为杂项里最经典、最有递进感的考点就是隐写术,它不需要你去抢 shell,也不像 pwn 那样要啃复杂的内存…

阅读更多 →
多开窗口乱重慢?2.20工具用复合筛选+自动排布解决 2026/10/2 14:24:54

多开窗口乱重慢?2.20工具用复合筛选+自动排布解决

做多开窗口管理这么多年,我最常被问的一句话就是:“为什么我拖窗口拖了半小时,还不如人家一个快捷键来得整齐?”说实话,在多开这件事上,真正拉开效率差距的从来不是手速,而是有没有把“窗口排布…

阅读更多 →
STM32 USB CDC枚举失败根源:Heap Size内存分配深度解析 2026/10/2 14:24:54

STM32 USB CDC枚举失败根源:Heap Size内存分配深度解析

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

阅读更多 →
智能推荐系统实战:源码拆解、算法选型与踩坑排查指南 2026/10/2 14:24:54

智能推荐系统实战:源码拆解、算法选型与踩坑排查指南

简介:一套与《Python人工智能项目开发实战》智能推荐系统章节配套的源代码资源包,面向有一定Python基础、想深入推荐算法实战的开发者。内容针对信息过载问题,讲解如何根据用户历史行为和偏好构建个性化推荐模型,涵盖基于深度学习…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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