标准化系统账号安全加固的核心是通过自动化脚本(如Ansible或Shell)统一落地密码复杂度、账户锁定、过期周期等策略,实现账号创建、权限分配、回收全生命周期管理,并确保操作可备份、可回滚、可验证、可审计。

标准化系统账号安全加固,核心是把“人盯人”的配置变成“机器跑一遍”的流程。关键不是堆砌命令,而是让每台服务器的账号策略一致、可验证、能回滚。
账号策略必须统一落地
密码复杂度、锁定阈值、过期周期这些参数,不能靠人工在每台机器上敲一遍。Ansible Playbook 或 Shell 脚本里直接写死策略值,比如:
- 密码至少8位,含大小写字母+数字+特殊字符(用PAM模块
pwquality控制) - 5次失败后锁定15分钟(
login.defs+pam_faillock双生效) - 所有普通用户密码90天强制更换(
chage -M 90 username) - 禁用空密码登录、禁止root远程SSH(改
/etc/ssh/sshd_config)
账号生命周期自动化管理
新用户创建、权限分配、离职回收,都该走同一套脚本逻辑。例如:
- 用
useradd -m -G wheel -s /bin/bash ops01创建标准运维账号 - 自动写入 sudoers 规则,只授权指定命令(如
/usr/bin/systemctl restart nginx),不给全权 - 定期扫描
/etc/passwd,对比白名单列表,自动禁用或删除非授权账号 - 对临时测试账号加时间戳,到期自动
chage -E $(date -d "+7 days" +%Y-%m-%d) tempuser
执行前必须留退路
账号配置出错,最怕连不上机器。所以自动化脚本第一件事不是改配置,而是:
- 备份
/etc/shadow、/etc/passwd、/etc/sudoers、/etc/ssh/sshd_config - 确认当前会话不是唯一SSH连接(
who | wc -l≥2 才继续) - 设置超时退出机制:改完SSH配置后,启动一个守护进程,10分钟内没收到心跳就自动还原配置并重启sshd
- 所有操作记录到独立日志文件,含时间戳和执行者IP,方便审计追溯
加固效果要能自动验证
跑完脚本不等于加固完成,得验证是否真生效:
- 用
sudo -n -l -U testuser检查权限是否按预期收缩 - 模拟暴力尝试:
for i in {1..6}; do ssh -o ConnectTimeout=5 -o BatchMode=yes testuser@localhost exit 2>/dev/null; done,再查faillock --user testuser是否锁住 - 跑一次
grep -E "PASS_MAX_DAYS|PASS_MIN_DAYS|FAIL_DELAY" /etc/login.defs,比对输出是否匹配基线值 - 集成进CI/CD流水线,在部署镜像前自动触发账号合规检查
















