Linux系统无“一键自动加固”,但可通过PAM faillock实现登录失败自动锁定、login.defs与pwquality固化密码策略、包管理器+定时任务保障配置持续生效、auditd+远程日志确保认证可追溯。

操作系统本身不提供“一键自动加固”功能,但现代Linux发行版通过PAM、systemd、内核参数和包管理器等机制,支持可落地的自动化账号认证加固。关键不是等待系统自动做,而是把人工策略固化为可重复、可验证的自动化行为。
用PAM模块实现登录失败自动锁定
这是最贴近“自动加固”的实战能力——无需第三方工具,仅靠系统原生PAM即可实现账户级防护:
- 启用
pam_faillock.so模块,配置15分钟内连续5次失败即锁定该用户30分钟 - 编辑
/etc/pam.d/sshd和/etc/pam.d/system-auth,插入以下行(顺序不能错):auth [default=ignore] pam_faillock.so silent audit deny=5 unlock_time=1800 even_deny_rootauth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=1800 even_deny_root - 锁定记录默认写入
/var/log/faillog,可用faillog -u username查看状态 - root账户默认豁免,避免运维被锁;如需保护,改用
even_deny_root并确保有SSH密钥+跳板机兜底
用systemd与login.defs固化密码策略
系统级密码规则必须在创建用户时生效,而非事后补救:
- 修改
/etc/login.defs:设置PASS_MAX_DAYS 90、PASS_MIN_LEN 8、PASS_WARN_AGE 7 - 安装
libpam-pwquality(Debian/Ubuntu)或libpwquality(RHEL/CentOS),配置/etc/security/pwquality.conf强制包含大小写字母、数字、特殊字符 - 对已有用户批量更新策略:
chage -M 90 -W 7 username,配合passwd -e username强制首次登录改密 - systemd服务
sshd启动时会自动加载这些策略,新用户useradd即继承,无需额外脚本
用包管理器+定时任务实现策略持续生效
防止人为误操作或配置漂移,让加固状态“自动回归”:
- 将关键配置(如
/etc/ssh/sshd_config中PermitRootLogin no、PasswordAuthentication no)纳入版本控制,并用Ansible或shell脚本定期校验 - 配置cron任务每小时检查一次:
grep -E "^(PermitRootLogin|PasswordAuthentication)" /etc/ssh/sshd_config | grep -v "no",异常则自动修复并告警 - 利用
debsums(Debian)或rpm -V(RHEL)校验系统文件完整性,发现/etc/shadow、/etc/passwd被篡改立即触发响应 - 启用
unattended-upgrades(Debian)或yum-cron(RHEL),确保密码强度相关补丁(如PAM更新)及时落地
用审计日志+远程存储保障认证行为可追溯
账号认证稳定不仅指“不被爆破”,更指“任何异常都能被发现和回溯”:
- 开启
auditd,添加规则监控/etc/shadow、/var/log/auth.log等关键路径:-w /etc/shadow -p wa -k auth_shadow - 配置
/etc/rsyslog.conf将auth,authpriv.*日志转发至远程SIEM或专用日志服务器,防本地删除 - 设置
logrotate对/var/log/auth.log按天压缩保留90天,避免磁盘打满导致日志丢失 - 结合
ausearch -m USER_AUTH -ts recent快速检索最近的登录事件,确认密钥认证是否正常、失败次数是否触发锁定


















