如何在Linux上设置安全性强的密码策略

来源:中国站长站作者:新井头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何在Linux上设置安全性强的密码策略》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上设置安全性强的密码策略》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中,密码是用户身份验证的核心凭证,设置安全性强的密码策略能够从规则层面约束用户使用高强度密码,减少因弱密码引发的安全入侵事件。本文将以主流的Linux发行版为例,详细介绍密码策略的完整配置流程。

密码策略的核心配置维度

完整的Linux密码策略通常包含以下四个核心维度:

  • 密码复杂度要求:规定密码的最小长度、必须包含的字符类型(大写字母、小写字母、数字、特殊符号)
  • 密码过期规则:设置密码的最长使用期限、最短使用期限、过期前提醒时间
  • 密码历史记录:限制用户不能重复使用最近N次设置过的密码
  • 密码锁定策略:连续输错密码时临时锁定账户,防止暴力破解

配置密码复杂度规则

Linux系统通过PAM(可插拔认证模块)的pam_pwquality.so模块实现密码复杂度校验,该模块默认在大多数主流发行版中已安装。首先需要修改PAM的密码配置规则,不同发行版的配置文件路径略有差异:

  • Debian、Ubuntu系统:/etc/pam.d/common-password
  • CentOS、RHEL、Rocky Linux系统:/etc/pam.d/system-auth

在配置文件中找到包含pam_pwquality.so的行,添加或修改对应的参数,常见参数含义如下:

参数名含义推荐取值
minlen密码最小长度12
dcredit数字字符的最小数量,负数表示至少需要对应数量的数字-1
ucredit大写字母的最小数量,负数表示至少需要对应数量的大写字母-1
lcredit小写字母的最小数量,负数表示至少需要对应数量的小写字母-1
ocredit特殊符号的最小数量,负数表示至少需要对应数量的特殊符号-1
minclass密码必须包含的字符类型数量,取值范围1-43

以CentOS系统为例,修改后的配置行示例如下:

# 在/etc/pam.d/system-auth文件中找到对应行,修改为如下内容
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 minclass=3

修改完成后,当用户修改密码时如果不符合复杂度要求,会直接提示错误,示例如下:

[root@localhost ~]# passwd testuser
Changing password for user testuser.
New password: 
BAD PASSWORD: The password is too short
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic

配置密码过期规则

密码过期规则通过/etc/login.defs文件配置,该配置对新建用户生效,已存在的用户需要通过chage命令单独调整。需要修改的配置项如下:

# 编辑/etc/login.defs文件,修改以下参数
# 密码最长使用天数,推荐取值90
PASS_MAX_DAYS 90
# 密码最短使用天数,推荐取值7,避免用户频繁修改密码
PASS_MIN_DAYS 7
# 密码过期前提前提醒天数,推荐取值7
PASS_WARN_AGE 7
# 密码最小长度,和pam_pwquality的minlen保持一致
PASS_MIN_LEN 12

对于已经存在的用户,使用chage命令调整策略,示例如下:

# 查看testuser用户的密码策略
chage -l testuser

# 设置testuser用户的密码最长使用90天,最短使用7天,过期前7天提醒
chage -M 90 -m 7 -W 7 testuser

配置密码历史记录

密码历史记录用于防止用户重复使用旧密码,同样通过PAM模块配置。在/etc/pam.d/system-auth/etc/pam.d/common-password文件中添加pam_pwhistory.so模块配置:

# 添加到password相关的配置段中,remember=5表示记住最近5次密码,用户不能重复使用
password required pam_pwhistory.so remember=5

配置完成后,用户修改密码时如果输入的是最近5次使用过的密码,会直接提示错误。

配置密码错误锁定策略

为了防止暴力破解密码,可以配置连续输错密码时锁定账户的规则,通过pam_faillock.so模块实现,配置同样在PAM的认证文件中修改:

# 在auth配置段添加如下内容,deny=5表示连续输错5次锁定,unlock_time=300表示锁定300秒后自动解锁
auth required pam_faillock.so preauth silent deny=5 unlock_time=300
auth required pam_faillock.so authfail deny=5 unlock_time=300

# 在account配置段添加如下内容,用于检查锁定状态
account required pam_faillock.so

如果需要手动解锁被锁定的账户,可以使用如下命令:

# 解锁testuser用户的锁定状态
pam_tally2 --user testuser --reset
# 或者使用faillock命令
faillock --user testuser --reset

策略验证与生效

所有配置修改完成后,不需要重启系统,配置会立即生效。可以通过新建测试用户、修改密码的方式验证策略是否生效:

  • 尝试设置长度不足12位的密码,验证是否提示长度错误
  • 尝试设置不包含大写字母的密码,验证是否提示复杂度错误
  • 尝试重复使用旧密码,验证密码历史规则是否生效
  • 连续输错5次密码,验证账户是否被锁定

以上配置完成后,Linux系统的密码策略即可达到较高的安全等级,能够有效抵御弱密码带来的安全风险。

Linux密码策略PAM密码复杂度密码过期修改时间:2026-06-17 11:36:47

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。