手把手教你如何配置Linux强密码复杂度策略及审计指南

轻敏姑娘_5775

轻敏姑娘_5775

2026-03-31

805人浏览

原创

linux系统需通过pam模块pam_pwquality.so强制密码复杂度,配置minlen=12、dcredit=-1等参数,并结合login.defs设置生命周期及pam_pwhistory限制复用,再经实测与日志审计确保生效。

手把手教你如何配置linux强密码复杂度策略及审计指南

Linux系统默认密码强度较弱,容易被暴力破解。要提升安全性,必须通过PAM模块(pam_pwquality.so)强制设置密码复杂度,并配合日志审计追踪密码修改行为。

一、启用并配置密码复杂度策略

编辑PAM密码策略配置文件:

sudo nano /etc/pam.d/common-password

在文件开头附近找到或添加以下行(确保不重复):

password requisite pam_pwquality.so retry=3 minlen=12 difok=4 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 maxrepeat=3 reject_username enforce_for_root

各参数含义说明:

  • minlen=12:最小长度12位(注意:实际最小长度还受minclass和字符种类影响)
  • dcredit=-1:至少含1位数字;ucredit=-1:至少1个大写字母;lcredit=-1:至少1个小写字母;ocredit=-1:至少1个特殊字符
  • difok=4:新密码与旧密码至少4个字符不同
  • maxrepeat=3:禁止连续3个以上相同字符(如aaabbb允许,aaaa拒绝)
  • reject_username:禁止密码包含用户名或其反转
  • enforce_for_root:root用户也受策略约束

⚠️ 注意:若系统使用libpwquality旧版本(如CentOS 7),部分参数名不同(如minlen对应minlen,但ocredit可能需用minclass=4替代)。可运行man pam_pwquality确认支持项。

二、设置密码生命周期与历史记录

防止长期不改密和密码复用,需配置/etc/login.defs和/etc/pam.d/common-password:

1. 编辑/etc/login.defs,确保以下行存在且未被注释:

PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 7

2. 在/etc/pam.d/common-password中添加一行(放在pam_pwquality.so之后):

password [success=1 default=ignore] pam_unix.so use_authtok sha512 shadow
password required pam_pwhistory.so remember=24 use_authtok

说明:

  • PASS_MAX_DAYS 90:密码最长有效期90天
  • PASS_MIN_DAYS 7:两次改密至少间隔7天(防频繁重置绕过策略)
  • remember=24:保存最近24次密码哈希,禁止重复使用

三、验证策略是否生效

不要仅依赖配置完成就认为有效,务必实测:

  • 用普通用户执行passwd,尝试设置Abc123!(太短)、MyPass123(无特殊符)、MyPassword123!(含用户名子串)——均应被拒绝
  • 成功设置一个合规密码后,再尝试设为相同密码,应提示“already used”
  • 检查/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(RHEL/CentOS)中是否有pam_pwquality相关拒绝日志

如遇策略不触发,检查PAM调用顺序:同一类型(password)的模块按自上而下执行,requisite失败立即终止;确认没有其他password required模块提前返回success跳过后续校验。

四、审计密码策略执行情况

定期检查策略是否被绕过或失效:

  • 查所有用户的密码过期信息:sudo chage -l username,或批量查看:sudo awk -F: '$2 ~ /^\$/ {print $1}' /etc/shadow | xargs -I{} sh -c 'echo -n "{}: "; chage -l {} | grep -E "(Password|Minimum|Maximum)"'
  • 查近期密码修改日志:sudo grep "password changed" /var/log/auth.log | tail -20
  • 检查PAM配置完整性:sudo pam-config --query pwquality(SUSE系)或手动确认pam_pwquality.so路径存在(通常为/lib/x86_64-linux-gnu/security/pam_pwquality.so)
  • 扫描弱密码(需离线):导出/etc/shadow哈希,用john或hashcat进行有限字典爆破测试(仅限授权环境)

建议将关键检查项写成脚本,加入cron每日运行,并邮件告警异常(如发现password changed但无对应用户操作记录)。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4050

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3453

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2633

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6410

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6042

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3513

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3005

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3239

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习