首页 > 运维 > linux运维 > 正文

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

P粉602998670
发布: 2025-09-05 13:37:01
原创
636人浏览过
答案:通过配置PAM模块pam_pwquality.so及/etc/security/pwquality.conf文件设置密码复杂度,如最小长度、字符类型、差异性等,并结合密码过期策略与用户教育,确保新密码符合安全要求,且在用户下次修改密码时生效。

linux如何设置用户密码复杂度要求

在Linux系统上设置用户密码的复杂度要求,核心在于配置可插拔认证模块(PAM),特别是通过

pam_pwquality.so
登录后复制
模块及其配置文件
/etc/security/pwquality.conf
登录后复制
来定义密码强度规则。这不仅仅是技术配置,更是系统安全策略落地的重要一环,确保用户密码不易被猜测或暴力破解。

解决方案

要为Linux系统设置用户密码复杂度要求,主要步骤是编辑

/etc/security/pwquality.conf
登录后复制
文件,并确保PAM模块正确加载
pam_pwquality.so
登录后复制

首先,定位并编辑

/etc/security/pwquality.conf
登录后复制
。这个文件定义了各种密码质量参数。如果你的系统没有这个文件,可能需要安装
libpwquality
登录后复制
cracklib
登录后复制
相关的包(例如在Debian/Ubuntu上是
libpam-pwquality
登录后复制
,在RHEL/CentOS上是
libpwquality
登录后复制
)。

以下是一些常用参数及其作用,以及一个示例配置:

  • minlen
    登录后复制
    : 密码的最小长度。
  • dcredit
    登录后复制
    : 密码中至少包含的数字字符数量(负数表示必须包含,例如
    -1
    登录后复制
    表示至少一个)。
  • ucredit
    登录后复制
    : 密码中至少包含的大写字母数量(负数表示必须包含)。
  • lcredit
    登录后复制
    : 密码中至少包含的小写字母数量(负数表示必须包含)。
  • ocredit
    登录后复制
    : 密码中至少包含的特殊字符数量(负数表示必须包含)。
  • difok
    登录后复制
    : 新密码与旧密码之间必须不同的字符数量。
  • maxrepeat
    登录后复制
    : 允许连续重复的字符最大数量。
  • maxclassrepeat
    登录后复制
    : 允许连续重复的字符类别最大数量(例如“aaa”是同一类别重复)。
  • gecoscheck
    登录后复制
    : 是否检查密码与用户GECOS信息(全名、电话等)的相似性。
  • badwords
    登录后复制
    : 一个文件路径,包含禁止使用的字典词汇。
  • enforce_for_root
    登录后复制
    : 是否对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模块加载了
pam_pwquality.so
登录后复制
。这通常在
/etc/pam.d/common-password
登录后复制
(或类似文件,具体取决于你的发行版)中完成。

找到以下行(或添加它,如果不存在):

password    requisite     pam_pwquality.so retry=3
登录后复制

这行应该放在其他

password
登录后复制
模块之前,特别是那些用于哈希密码的模块(如
pam_unix.so
登录后复制
)。
requisite
登录后复制
表示如果此模块失败,则认证立即失败。
retry=3
登录后复制
表示在用户输入错误密码后,系统会提示重试3次。

完成这些配置后,保存文件。新的密码复杂度要求将在用户下次尝试更改密码时生效。

Linux密码策略配置最佳实践有哪些?

在Linux系统上制定密码策略,不仅仅是机械地设置几个参数,更是一门平衡艺术:在安全性与用户便利性之间找到一个合适的点。我个人经验告诉我,过于严苛的策略往往会导致用户将密码写在便利贴上,反而适得其反。

首先,最小长度是基石。我通常建议将

minlen
登录后复制
设置为至少12到14个字符。这听起来有点长,但现代的破解技术进步太快,短密码已经不再安全。12个字符的长度,加上多样化的字符类型,能大大增加破解难度。

其次,字符多样性至关重要。强制要求包含大小写字母、数字和特殊字符(

dcredit
登录后复制
,
ucredit
登录后复制
,
lcredit
登录后复制
,
ocredit
登录后复制
设置为
-1
登录后复制
),这是构建强密码的关键。我发现,仅仅要求包含这些类型,就能让用户思考如何组合,而不是只用简单的单词加数字。

再来,避免重复和模式化

maxrepeat
登录后复制
maxclassrepeat
登录后复制
参数可以有效防止“aaaaa”或“111222”这类易猜的密码。同时,
difok
登录后复制
参数确保新密码与旧密码有足够的差异,防止用户只是在旧密码基础上做微小改动。

禁用常用词汇和个人信息也很重要。

gecoscheck
登录后复制
是一个很好的功能,可以防止用户将自己的名字、生日等作为密码。更进一步,如果你的组织有明确的禁用词汇列表(比如公司名、产品名),可以利用
badwords
登录后复制
参数指向一个包含这些词汇的文件。这需要一些维护,但对提升安全性很有帮助。

代码小浣熊
代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51
查看详情 代码小浣熊

最后,别忘了密码过期策略。虽然

pam_pwquality
登录后复制
处理的是密码强度,但密码的定期更换也是安全策略的重要组成部分。这通常通过
/etc/login.defs
登录后复制
中的
PASS_MAX_DAYS
登录后复制
PASS_MIN_DAYS
登录后复制
,以及
chage
登录后复制
命令来管理。我一般建议90天到180天更换一次,太频繁了用户会抱怨,太久了风险又高。

如何验证Linux系统上的密码复杂度设置是否生效?

配置完密码复杂度规则后,最关键的一步就是验证它们是否真正生效。毕竟,配置文件写得再好,如果没被系统正确加载或执行,那都是空谈。

最直接的验证方法,就是尝试修改一个用户的密码。你可以创建一个测试用户,或者用一个不重要的现有用户来测试。

sudo passwd testuser
登录后复制

当你被提示输入新密码时,尝试输入一些不符合你设置规则的密码。例如,如果你的

minlen
登录后复制
是12,就尝试输入一个8位数的密码;如果要求大小写、数字、特殊字符都包含,就尝试只输入小写字母。系统应该会拒绝这些弱密码,并给出类似“BAD PASSWORD: The password fails the dictionary check - too short”或“BAD PASSWORD: The password is too similar to the old one”的错误提示。如果系统允许你设置一个明显不符合规则的密码,那么说明你的配置可能没有正确加载。

另一个有用的工具

pwscore
登录后复制
命令,它通常是
libpwquality-tools
登录后复制
包的一部分。这个命令可以评估一个密码的强度得分,并与
pwquality.conf
登录后复制
中定义的规则进行比较。

pwscore "你的测试密码"
登录后复制

例如,如果你运行

pwscore "short"
登录后复制
,它可能会返回一个负数或很低的分数,并指出具体的原因,如“password too short”。这能让你在不实际更改密码的情况下,快速验证特定密码是否符合要求。

此外,检查PAM配置文件的加载顺序也很重要。你可以查看

/etc/pam.d/
登录后复制
目录下,哪些文件包含了
pam_pwquality.so
登录后复制
。例如,
login
登录后复制
passwd
登录后复制
sshd
登录后复制
等服务通常会引用
common-password
登录后复制
,所以确保
common-password
登录后复制
pam_pwquality.so
登录后复制
的配置是正确的。如果你的系统使用了SELinux,有时SELinux策略也可能影响到PAM模块的加载或行为,虽然这种情况比较少见,但值得留意。

修改密码复杂度后,对现有用户有什么影响?

这是一个非常实际的问题,也是我在实际操作中经常被问到的。好消息是,修改

pam_pwquality.conf
登录后复制
和PAM配置文件,不会立即强制所有现有用户更改他们的密码。这些新的复杂度要求只会在用户下次尝试更改密码时才生效。

这意味着,如果一个用户在新的策略生效之前设置了一个弱密码,那么这个弱密码会继续有效,直到该用户主动或被动(例如,密码过期)地尝试更改它。当他们下次更改密码时,系统就会强制他们遵循新的、更严格的复杂度规则。

这种“懒惰”的生效方式,虽然避免了对生产环境的即时冲击,但也带来了一些潜在的安全隐患:那些不符合新策略的弱密码可能会在系统中继续存在一段时间。

为了解决这个问题,通常有几种策略:

  1. 设置密码过期策略: 这是最常见的做法。通过
    chage
    登录后复制
    命令或修改
    /etc/login.defs
    登录后复制
    ,可以为所有用户或特定用户设置密码过期时间。例如,
    chage -M 90 <username>
    登录后复制
    会强制用户在90天内更改密码。当他们更改时,就会被新规则约束。对于已经设置了弱密码的用户,可以考虑缩短他们的过期时间,促使他们尽快更新。
  2. 用户通知与教育: 告知用户新的密码策略,解释其重要性,并提供一些创建强密码的建议。有时,用户只是不知道如何创建既复杂又容易记住的密码。
  3. 对高风险账户进行强制重置: 对于特权账户(如管理员、数据库账户等),可以考虑在业务低峰期进行一次强制密码重置,确保这些关键账户能尽快符合新策略。当然,这需要周密的计划和沟通。
  4. enforce_for_root
    登录后复制
    的考量:
    别忘了
    pwquality.conf
    登录后复制
    中的
    enforce_for_root
    登录后复制
    参数。如果设置为
    1
    登录后复制
    ,那么root用户在更改密码时也必须遵守这些规则。这很重要,因为root账户是系统的最高权限,其密码强度至关重要。

总的来说,修改密码复杂度是一个渐进的过程。你需要平衡安全性提升与用户体验,通过合理的策略和沟通,平稳地将系统过渡到更安全的密码环境。

以上就是Linux如何设置用户密码复杂度要求的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号