ARTICLE · 1051392
(文档)第138讲:密码安全策略构建


密码安全策略概述
密码安全策略包括以下内容:
·密码生效周期和过期
·密码历史记录
·密码复杂性验证
·账户锁定
密码管理
·User
·密码老化和过期
·密码验证
·密码历史
·账户锁定
·passwordcheck
启用密码管理
在配置文件postgresql.conf中定于加载
shared_preload_libraries='passwordcheck'
默认检查项
·密码长度检查
·密码不包含用户名
·密码复杂度检查(字符和非字符组合)可以是:字符+数字、字符加特殊字符,不能数字+特殊字符
强化密码检查
cracklib-dict 介绍
cracklib_dict是一个包含各种字典数据的包,主要用于密码强度检查。在使用cracklib进行密码强度检查时,cracklib_dict提供了必要的字典数据,帮助判断密码是否符合设定的复杂度要求。
我们可以使用passwordcheck+cracklib-dict实现密码强化检查,以增加密码的复杂度。
pwdchk+cracklib-dict强化密码难度
1. 安装cracklib_dict软件包
yum install -y cracklib-devel cracklib-dicts cracklib
2. 检查cracklib_dict软件包
rpm -ql cracklib-dictsls /usr/include/crack.h
3. 下载密码库文件
wget http://downloads.sourceforge.net/project/cracklib/cracklib-words/2008-05-07/cracklib-words-20080507.gz
4. 添加敏感密码到密码文件中
echo postgres12345 >> /soft/cracklib-words-20080507
5.产生密码数据字典文件(.hwm/.pwd/.pwi)
create-cracklib-dict -o /soft/cracklib-dict /soft/cracklib-words-20080507
6. 修改contrib/passwordcheck目录下的Makefile
PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/soft/cracklib-dict"'SHLIB_LINK = -lcrack
7. 编译与安装
cd /soft/postgresql-17.0/contrib/passwordcheckmake cleanmake && make install
8. 修改postgresql.conf
shared_preload_libraries='passwordcheck'
7. 重启数据库
pg_ctl restart
8. 测试密码复杂度
postgres=# create user a1 password 'postgres12345';
2025-03-14 22:06:54.731 CST [7525] ERROR: password is easily cracked2025-03-14 22:06:54.731 CST [7525] DETAIL: cracklib diagnostic: it is based on a dictionary word2025-03-14 22:06:54.731 CST [7525] STATEMENT: create user a1 password 'postgres12345';ERROR: password is easily cracked
密码安全漏洞
使用操作系统的命令创建用户,会避开密码检查策略
createuser -P -r l3

PostgreSQL 中文社区认证
与工信部人才交流中心合作,推出 PostgreSQL 初/中/高级证书,证书中明确指定适用于信息技术应用创新人才岗位能力评定要求。

PostgreSQL从入门到精通,
系列课程始于23年初,
在周日19:30与大家分享PG技术,
从基础的PG介绍与安装,
到后续的调优、流复制等企业应用,
涉及90多个知识点的介绍与演示,
截至25年8月9日,
系列课程已讲100期,
欢迎继续关注PostgreSQL技术大讲堂,
如果你也有意学习PostgreSQL,
可以联系客服,领取相关资料。
