Ansible批量修复Linux漏洞的核心是将安全响应标准化为可重复、可验证、可回滚的动作:按漏洞类型选用对应模块(yum/apt/dnf、copy/template、checksum校验、iptables/modprobe),Playbook必须包含前置检查、主操作block、rescue回滚、后置验证四段,分批执行(serial+limit)、禁用无用facts、集成监控审计与Vault加密。

用 Ansible 批量修复 Linux 漏洞,核心不是“跑命令”,而是把安全响应变成可重复、可验证、可回滚的标准化动作。几百台机器靠人工打补丁不现实,但盲目推送脚本更危险——一次配置写错或路径填错,可能批量中断服务。
明确漏洞类型与修复方式
不同漏洞对应不同修复逻辑,Ansible 本身不判断 CVE,但要适配落地手段:
-
软件包升级类(如 OpenSSH、Polkit、OpenSSL):优先用
yum、apt或dnf模块,依赖自动处理,版本锁定可靠。避免手动编译+覆盖,除非官方源无更新包 -
配置加固类(如禁用 pprof、限制 SSH 登录、调整 PAM 策略):用
copy替换配置文件,或template动态生成;配合systemd模块 reload/restart 服务,别漏掉backup: yes -
二进制替换类(如 node-exporter 热修版、自研 agent 补丁):用
copy+file设置权限,必须校验 SHA256(checksum参数),并保留原文件备份 -
临时封堵类(如 iptables 封 IP、禁用内核模块):用
iptables或modprobe模块,执行前加command检查当前状态,避免重复操作
Playbook 必须带验证和回滚
只写“安装→重启”是生产环境大忌。一个可用的漏洞修复 Playbook 至少包含三段:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
前置检查:用
command或uri检查服务是否运行、端口是否监听、关键进程是否存在;失败则failed_when跳过该节点 -
主操作块:用
block包裹所有变更任务(如下载包、安装、改配置、重启) -
失败兜底:在
rescue中恢复备份文件、回退服务、发送告警;所有copy和template都启用backup: true -
后置验证:调用
uri访问健康接口,或shell执行ss -tlnp | grep :22确认 SSH 仍存活;验证失败触发fail模块并标记节点为 failed
分批执行与连接控制
全量并发会压垮控制机,也可能触发目标机 SSH 连接限流或服务雪崩:
- 按业务角色分组执行,例如
ansible-playbook fix-openssh.yml --limit web_servers,再切db_servers - 每组内设
serial: 3,每次只操作 3 台;全部通过验证后再推进下一批 - Playbook 开头加
gather_facts: false(除非真需要 facts 判断系统类型),跳过耗时的事实收集 - 关键任务加
timeout: 30和retries: 2,防网络抖动误判 - 避免用
shell模块拼接变量执行敏感命令,防止注入;需管道/重定向时,优先用script模块传本地脚本
集成监控与审计闭环
补丁执行完不等于风险解除,得让结果可追踪:
- Playbook 结尾调用
community.general.httpapi或uri向监控平台(如 Prometheus Alertmanager、企业微信机器人)推送执行摘要:成功数、失败数、耗时、异常节点列表 - 所有 Playbook 提交到 Git 仓库,分支命名含 CVE 编号(如
cve-2021-4034-polkit),提交信息注明影响范围和回滚步骤 - Inventory 使用动态或分层结构(如按区域/环境/角色划分),避免硬编码 IP;敏感参数(如 root 密码、API token)走
vars_files+ Ansible Vault 加密 - 定期用
ansible-lint扫描 Playbook,检查未设become、缺少backup、硬编码路径等常见风险点

















