Linux如何配置用户密码复杂度 pam_cracklib模块详解

配置用户密码复杂度,用pam_cracklib模块。

安装cracklib库,依赖libpam-cracklib包。

修改/etc/pam.d/system-auth或/etc/pam.d/common-password。

参数: retry=3 minlen=1 0 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
重启系统使配置生效。

测试用passwd命令。

linux密码设置复杂度

这是坑,密码策略不生效时先检查配置文件。

实操提醒:设置密码复杂度后,确保重启PAM服务或重新加载配置文件以使更改生效。

Linux设置用户密码复杂度要求

说白了,Linux密码复杂度设置就靠pam_pwquality.so这个模块,直接改文件加参数就行。

先说最重要的,得找到对应的PAM配置文件改。
RedHat系用sudovim /etc/pam.d/system-auth,Debian系直接sudovim /etc/pam.d/common-password,注意Debian用authselect工具管理更稳当。
加这行password requisite pam_pwquality.so retry=3 minlen=1 2 就能生效,最常用参数就这几个:dcredit=-1 逼着放数字,ucredit=-1 逼着放大写,ocredit=-1 逼着放特殊符号,difok=7 新旧密码得差7 个以上字符。

另外一点,全局策略文件/etc/security/pwquality.conf也能改这些参数,但优先级比PAM文件低,适合统一调整。
比如去年我们跑的那个项目,把minlen改成1 4 ,dcredit改成-2 ,高安全环境这样整效果明显。
还有个细节挺关键的,gecoscheck=1 能防密码含用户名,这点很多人没注意。

我一开始也以为改完就万事大吉了,后来发现不对,暴力破解防不住啊,还得加MFA。
比如用pam_google_authenticator.so搞个TOTP认证,或者上YubiKey这种硬件令牌。
密码9 0天过期、连续3 次失败锁1 5 分钟这些措施也别落下,用sudochage -M9 0用户名和authrequired pam_faillock.so都能搞。
至于SSH,直接禁用密码登录改/etc/ssh/sshd_config里PasswordAuthentication no,用密钥认证更安全。

提醒个坑:sudo权限一定要精细控制,别傻乎乎把root密码共享出去,定期看/etc/sudoers文件。
最后监控日志别手软,tail -f /var/log/auth.log或者上OSSEC这种工具,省心。

建议试试把密码复杂度要求设到1 4 位,数字至少俩,特殊符号加个,看看效果。