linux安全配置“一键达标”需覆盖账户认证、ssh加固、服务与网络、日志审计、文件系统五类动作,优先用ansible实现幂等性、自动备份与闭环验证(预检、验证、报告)。

实现Linux安全配置“一键达标”,关键不是写个能跑的脚本,而是让脚本真正覆盖合规要求、执行可靠、结果可验证。它不是替代人工审计,而是把人工反复核对和修改的动作固化下来,确保每次部署都符合等保2.0或CIS Benchmark这类明确标准。
覆盖真实基线项,避免“伪加固”
很多所谓“一键脚本”只改两三个参数就标榜“已加固”,实际漏掉核心项。一个达标的脚本必须包含以下五类动作:
-
账户认证:强制密码最小长度≥8位、含大小写字母+数字+特殊字符;设置90天过期(
PASS_MAX_DAYS 90);5次失败锁定(用pam_faillock);禁用空密码(检查/etc/shadow中第二字段为空的账号) -
SSH加固:关闭SSH v1协议;设
PermitRootLogin no;启用PubkeyAuthentication yes;限制登录用户(AllowUsers) -
服务与网络:停用
telnet、ftp、rsh等明文服务;firewalld默认拒绝入站,仅开放业务端口;关闭ICMP响应(sysctl -w net.ipv4.icmp_echo_ignore_all=1) -
日志审计:启用
auditd并加载CIS规则;/var/log/secure等关键日志权限设为600;配置rsyslog将日志转发至中心服务器(支持TLS) -
文件系统:挂载
/tmp和/var/tmp时加noexec,nosuid,nodev;/etc/shadow权限强制为000;umask设为027
优先用Ansible,别硬写Shell
纯Shell脚本容易因路径错误、权限不足、命令返回值未判断而中途失败,甚至误删配置。Ansible原生支持幂等性、自动备份、条件跳过和错误中断,更适合生产环境:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 用
lineinfile模块改/etc/ssh/sshd_config,开启backup: true自动备份原文件 - 用
sysctl模块设内核参数,避免手动echo+sysctl -p出错 - 用
user模块创建管理账号,同时设定密码策略、shell类型和sudo权限 - 用
community.general.expect验证加固效果,比如确认sshd -t无报错、grep PermitRootLogin /etc/ssh/sshd_config输出no
适配多环境,靠角色+变量驱动
开发、测试、生产环境的安全策略常有差异——比如是否改SSH端口、是否启用SELinux、是否允许特定IP登录。把这些差异抽成变量,而不是写死在脚本里:
- 把SSH配置、防火墙规则、审计策略分别拆成独立role
- 定义
env_type: production或enable_selinux: true等变量,在playbook中动态引用 - 通过不同inventory或extra-vars传入变量,同一套代码适配不同场景
配套机制不能少:预检、验证、报告
脚本执行完不等于就“达标”了。必须有闭环验证:
-
预检:运行前检查是否root权限、是否已安装必要工具(如
openscap-scanner)、关键服务是否正在运行 -
验证:每项加固后立即检测,比如改完
sshd_config后执行sshd -t,失败则中断流程 - 报告:生成HTML或JSON格式的加固报告,列出哪些项已生效、哪些被跳过、哪些执行失败,并附原始配置与当前配置对比










