一、说明

生产环境一般都会要求,对连接数据库的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求(长度不少于8位,包含不少于3类字符)并定期(不长于90天)更换;必须包含字母和非字母、密码不能包含用户名。如果这些规则仍然不能满足你的密码强度要求,那么还可以安装cracklib以及字典来提高密码强度。

环境:

OS:CentOS Linux release 7.6.1810 (Core) 

postgresql:v12.15

二、源码下载

wget https://ftp.postgresql.org/pub/source/v12.15/postgresql-12.15.tar.gz --no-check-certificate

=== END ===

三、安装cracklib以及字典

yum install –y cracklib-devel cracklib-dicts cracklib
 
 === END ===

四、修改passwordcheck相关配置

cd /root/postgresql-12.15/contrib/passwordcheck

# 如果需要修改密码长度
vim passwordcheck.c
#define MIN_PWD_LENGTH 8  # 定义密码最短长度

#修改Makefile文件, 把下图红框的2行注释去掉, 并修改字典文件和路径(文件不要带.pwd后缀,如下图)。
# 查找cracklib_dict文件的路径。
find / -name cracklib_dict*

=== END ===

PostgreSQL数据库安全加固——密码复杂策略_密码强度

PostgreSQL数据库安全加固——密码复杂策略_密码复杂度_02

五、编译安装passwordcheck插件

# 编译 & 安装
make && make install

=== END ===

PostgreSQL数据库安全加固——密码复杂策略_密码强度_03

六、加载模块

打开${PGDATA}/postgresql.conf文件,修改shared_preload_libraries参数以包含’passwordcheck’,重启数据库。

# 把注释去掉
shared_preload_libraries = 'passwordcheck'

# 重启数据库
su - postgres
pg_ctl -D /data/pgdata-12.5/ restart

=== END ===

PostgreSQL数据库安全加固——密码复杂策略_密码强度_04

七、测试

PostgreSQL数据库安全加固——密码复杂策略_密码复杂度_05


=== END ===