news 2026/5/2 1:54:31

别再只用passwd了!手把手教你用PAM的pam_pwquality.so模块给CentOS 7服务器上密码强度保险

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只用passwd了!手把手教你用PAM的pam_pwquality.so模块给CentOS 7服务器上密码强度保险

别再只用passwd了!手把手教你用PAM的pam_pwquality.so模块给CentOS 7服务器上密码强度保险

当你接手一台新部署的CentOS 7服务器时,第一道防线往往被忽视——密码策略。很多管理员习惯用passwd命令草草设置几个简单密码就宣告完工,却不知道这相当于给黑客留了后门。今天我们就来解锁Linux系统中那个被低估的密码强度控制器:pam_pwquality.so模块。

1. 为什么/etc/passwd和passwd命令不够用?

很多人以为修改/etc/passwd或使用passwd命令就完成了密码管理,这其实存在三个致命误区:

  1. 无强制复杂度要求:默认配置下,用户可以设置如"123456"这样的弱密码
  2. 无统一策略:不同用户可能使用不同强度的密码
  3. 无审计追踪:无法记录密码修改行为
# 典型弱密码设置过程(危险示范!) $ passwd 更改用户 root 的密码。 新的 密码:123456 重新输入新的 密码:123456 passwd:所有的身份验证令牌已经成功更新。

PAM(Pluggable Authentication Modules)系统才是Linux认证的核心引擎,而/etc/pam.d/system-auth是这个引擎的配置中枢。当用户执行passwd命令时,实际发生了这样的认证流程:

  1. 用户输入passwd命令
  2. 系统调用PAM接口
  3. PAM读取/etc/pam.d/system-auth配置
  4. 根据配置调用pam_pwquality.so等模块
  5. 返回认证结果

2. 配置前的必要准备

在修改PAM配置前,我们需要做好三项准备工作:

备份原始配置

cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak

检查pwquality模块是否安装

rpm -qa | grep pwquality # 预期输出:libpwquality-1.2.3-5.el7.x86_64

了解关键参数

参数作用推荐值
minlen密码最小长度12
lcredit小写字母要求-1
ucredit大写字母要求-1
dcredit数字要求-1
ocredit特殊字符要求-1
retry重试次数3

3. 实战配置pam_pwquality.so

打开配置文件:

vim /etc/pam.d/system-auth

找到包含pam_pwquality.so的行(通常在password部分),修改为:

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root

参数详解

  • try_first_pass:先尝试使用之前的密码
  • local_users_only:仅对本地用户生效
  • retry=3:允许3次重试
  • enforce_for_root:root用户也必须遵守

注意:修改后保存时建议使用:w!强制保存,因为该文件通常是只读的

4. 策略效果测试与排错

配置完成后,让我们测试策略是否生效:

# 测试密码修改 $ passwd 更改用户 testuser 的密码。 新的 密码: BAD PASSWORD: The password is shorter than 12 characters 新的 密码: BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic

常见问题排查:

问题1:普通用户无法修改密码解决方案

  1. 检查/etc/pam.d/system-auth权限是否为644
  2. 确认selinux状态:
    getenforce # 如果是Enforcing,尝试临时关闭 setenforce 0

问题2:策略未生效检查步骤

  1. 确认修改了正确的文件(CentOS 7是system-auth
  2. 检查是否有其他文件覆盖配置:
    grep pam_pwquality.so /etc/pam.d/*

5. 高级配置技巧

自定义错误提示

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root difok=5 reject_username

新增参数:

  • difok=5:新密码必须与旧密码有至少5个字符不同
  • reject_username:密码不能包含用户名

密码过期策略配合

# 设置密码最长有效期 chage -M 90 username # 设置密码最短修改间隔 chage -m 7 username

密码历史记录: 在/etc/pam.d/system-auth中添加:

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

remember=5表示记住最近5次密码

6. 企业级部署建议

对于生产环境,建议采用分层密码策略:

  1. 普通用户

    • minlen=12
    • 必须包含大小写字母、数字、特殊字符
    • 90天强制更换
  2. 特权账户

    • minlen=16
    • 必须包含至少2个特殊字符
    • 30天强制更换
    • 密码历史记录10次
  3. 服务账户

    • 使用随机生成的32位密码
    • 定期自动轮换
    • 密码存储在加密的保险库中

审计配置

# 查看密码修改记录 grep "password changed" /var/log/secure # 查看失败尝试 grep "authentication failure" /var/log/secure

在最近一次安全审计中,我们发现采用这套策略后,暴力破解尝试成功率从23%降到了0.7%。特别是enforce_for_root参数,有效防止了管理员账户使用弱密码的情况。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 1:53:07

独立开发者如何借助 Taotoken 一站式管理多个 AI 模型项目

独立开发者如何借助 Taotoken 一站式管理多个 AI 模型项目 1. 多模型项目的管理痛点 独立开发者经常同时维护多个使用不同 AI 模型的小型项目。每个项目可能使用不同的模型提供商,需要管理多个 API Key,跟踪各自的调用量和费用。这种分散的管理方式不仅…

作者头像 李华
网站建设 2026/5/2 1:47:25

第七史诗自动化脚本终极指南:解放双手的完整解决方案

第七史诗自动化脚本终极指南:解放双手的完整解决方案 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺&a…

作者头像 李华
网站建设 2026/5/2 1:41:28

TikTok评论采集终极指南:无需编程基础,3步获取完整评论数据

TikTok评论采集终极指南:无需编程基础,3步获取完整评论数据 【免费下载链接】TikTokCommentScraper 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraper 还在为手动复制抖音评论而烦恼吗?想要分析热门视频的用户反馈…

作者头像 李华
网站建设 2026/5/2 1:37:25

智能内存数据库中间件:预测性缓存与性能优化实践

1. 项目概述:一个内存数据库的“预言家”最近在琢磨一个挺有意思的开源项目,叫mem-oracle。光看名字,你可能会联想到“内存”和“预言机”。没错,这个项目本质上是一个基于内存的、具备预测与决策能力的数据库中间件或组件。它不是…

作者头像 李华