authselect是centos 8+和rocky linux中管理pam认证策略的官方工具,替代authconfig;需通过select启用profile、enable-feature启用特性,并配置pwquality.conf和login.defs实现密码复杂度、历史、有效期等安全策略。

在 CentOS 8+ 和 Rocky Linux 中,authselect 是管理 PAM 认证策略的官方工具,替代了老旧的 authconfig。直接编辑 /etc/pam.d/system-auth 或 password-auth 不仅无效(这些是软链接),还可能被覆盖。正确做法是通过 authselect 创建或启用配置集,并配合 pwquality.conf 和 login.defs 实现完整密码安全策略。
确认当前配置并选择基础模板
先查看系统当前状态:
-
authselect current—— 查看是否已启用配置(如返回No existing configuration detected,说明未初始化) -
authselect list—— 列出可用标准配置,常见有sssd、nis、winbind
推荐以 sssd 为基础(即使不连域控,它也支持本地用户强化):
- 首次启用:
authselect select sssd --force - 若需密码历史功能(如 remember=12),启用对应特性:
authselect enable-feature with-pwhistory - 若需防暴力锁定(替代 pam_tally2),启用:
authselect enable-feature with-faillock
配置密码复杂度(pam_pwquality)
authselect 不直接改 PAM 行,而是通过 /etc/security/pwquality.conf 控制强度:
- 编辑该文件:
sudo vi /etc/security/pwquality.conf - 关键参数示例(满足等保要求):
minlen = 12minclass = 4(大小写字母、数字、特殊字符各至少1类)ucredit = -1(必须含大写)lcredit = -1(必须含小写)dcredit = -1(必须含数字)ocredit = -1(必须含特殊字符)reject_username = 1(禁止含用户名)dictcheck = 1(禁用字典词)
注意:修改后无需重启服务,新密码设置时立即生效。
设置密码有效期与历史记录
这部分由两层协同控制:
-
全局默认值(影响新建用户):
编辑/etc/login.defs:PASS_MAX_DAYS 90PASS_MIN_DAYS 1PASS_WARN_AGE 7PASS_MIN_LEN 12(此值仅作参考,实际以 pwquality.conf 为准) -
已有用户单独设置:
chage -M 90 -m 1 -W 7 usernamechage -l username可验证结果 -
密码历史(remember):
authselect 启用with-pwhistory后,自动在password-auth插入pam_pwhistory.so;
如需自定义保留数量(如 12 次),可手动编辑生成的模板:sudo vi /usr/share/authselect/default/sssd/password-auth(或 custom 目录下对应文件),将相关行改为:password requisite pam_pwhistory.so remember=12 use_authtok
验证与生效检查
完成配置后务必验证:
- 运行
authselect verify—— 检查配置完整性(应返回All files were correctly generated.) - 测试新用户:
useradd testuser && passwd testuser,尝试设弱密码(如 123456)应被拒绝 - 查策略是否加载:
grep pwquality /etc/pam.d/password-auth应有对应行 - 查失败锁定是否启用:
grep faillock /etc/pam.d/system-auth,再试错登录三次后执行faillock --user testuser看是否被锁
authselect 的核心逻辑是“声明式配置”,不是手动拼接 PAM 行。只要选对 profile、启对 feature、配好底层 conf 文件,策略就稳定生效,且兼容等保测评要求。











