答案:通过配置PAM模块pam_pwquality.so及/etc/security/pwquality.conf文件设置密码复杂度,如最小长度、字符类型、差异性等,并结合密码过期策略与用户教育,确保新密码符合安全要求,且在用户下次修改密码时生效。

在Linux系统上设置用户密码的复杂度要求,核心在于配置可插拔认证模块(PAM),特别是通过
pam_pwquality.so
/etc/security/pwquality.conf
要为Linux系统设置用户密码复杂度要求,主要步骤是编辑
/etc/security/pwquality.conf
pam_pwquality.so
首先,定位并编辑
/etc/security/pwquality.conf
libpwquality
cracklib
libpam-pwquality
libpwquality
以下是一些常用参数及其作用,以及一个示例配置:
minlen
dcredit
-1
ucredit
lcredit
ocredit
difok
maxrepeat
maxclassrepeat
gecoscheck
badwords
enforce_for_root
示例 /etc/security/pwquality.conf
# 设置密码最小长度为12 minlen = 12 # 必须包含至少一个数字 dcredit = -1 # 必须包含至少一个大写字母 ucredit = -1 # 必须包含至少一个小写字母 lcredit = -1 # 必须包含至少一个特殊字符 ocredit = -1 # 新密码与旧密码至少有7个字符不同 difok = 7 # 连续重复字符不能超过3个 maxrepeat = 3 # 连续重复字符类别不能超过3个 maxclassrepeat = 3 # 检查密码是否与GECOS信息相似 gecoscheck = 1 # 指定一个包含禁用词汇的文件 (如果需要) # badwords = /etc/security/badwords.txt # 对root用户也强制执行密码复杂度规则 enforce_for_root = 1
配置好
pwquality.conf
pam_pwquality.so
/etc/pam.d/common-password
找到以下行(或添加它,如果不存在):
password requisite pam_pwquality.so retry=3
这行应该放在其他
password
pam_unix.so
requisite
retry=3
完成这些配置后,保存文件。新的密码复杂度要求将在用户下次尝试更改密码时生效。
在Linux系统上制定密码策略,不仅仅是机械地设置几个参数,更是一门平衡艺术:在安全性与用户便利性之间找到一个合适的点。我个人经验告诉我,过于严苛的策略往往会导致用户将密码写在便利贴上,反而适得其反。
首先,最小长度是基石。我通常建议将
minlen
其次,字符多样性至关重要。强制要求包含大小写字母、数字和特殊字符(
dcredit
ucredit
lcredit
ocredit
-1
再来,避免重复和模式化。
maxrepeat
maxclassrepeat
difok
禁用常用词汇和个人信息也很重要。
gecoscheck
badwords
最后,别忘了密码过期策略。虽然
pam_pwquality
/etc/login.defs
PASS_MAX_DAYS
PASS_MIN_DAYS
chage
配置完密码复杂度规则后,最关键的一步就是验证它们是否真正生效。毕竟,配置文件写得再好,如果没被系统正确加载或执行,那都是空谈。
最直接的验证方法,就是尝试修改一个用户的密码。你可以创建一个测试用户,或者用一个不重要的现有用户来测试。
sudo passwd testuser
当你被提示输入新密码时,尝试输入一些不符合你设置规则的密码。例如,如果你的
minlen
另一个有用的工具是
pwscore
libpwquality-tools
pwquality.conf
pwscore "你的测试密码"
例如,如果你运行
pwscore "short"
此外,检查PAM配置文件的加载顺序也很重要。你可以查看
/etc/pam.d/
pam_pwquality.so
login
passwd
sshd
common-password
common-password
pam_pwquality.so
这是一个非常实际的问题,也是我在实际操作中经常被问到的。好消息是,修改
pam_pwquality.conf
这意味着,如果一个用户在新的策略生效之前设置了一个弱密码,那么这个弱密码会继续有效,直到该用户主动或被动(例如,密码过期)地尝试更改它。当他们下次更改密码时,系统就会强制他们遵循新的、更严格的复杂度规则。
这种“懒惰”的生效方式,虽然避免了对生产环境的即时冲击,但也带来了一些潜在的安全隐患:那些不符合新策略的弱密码可能会在系统中继续存在一段时间。
为了解决这个问题,通常有几种策略:
chage
/etc/login.defs
chage -M 90 <username>
enforce_for_root
pwquality.conf
enforce_for_root
1
总的来说,修改密码复杂度是一个渐进的过程。你需要平衡安全性提升与用户体验,通过合理的策略和沟通,平稳地将系统过渡到更安全的密码环境。
以上就是Linux如何设置用户密码复杂度要求的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号