合 PG密码加强插件之passwordcheck
Tags: PG插件密码验证密码加强passwordcheck
简介
PostgreSQL自带了一个插件passwordcheck可以满足简单的密码复杂度测验, 防止使用过短, 或者与包含用户名的密码,只需要把“$libdir/passwordcheck”加入到postgresql.conf的shared_preload_libraries参数中,然后重启服务器即可,只要通过CREATE ROLE或ALTER ROLE设置用户,passwordcheck模块就会检查用户的口令。
在该模块中,主要有3个规则判断,一个是用户名自身的判断,是否包含用户名本身;一个是密码长度少于8位的判断;必须包含字母和非字母。
passwordcheck安装
下载PostgreSQL源码,配置passwordcheck
如果当前的PG非源码安装,或者以前编译源码已清理,需要重新下载对应的PG源码版本
1 2 3 4 5 6 7 8 9 10 11 12 | [root@test src]# wget https://ftp.postgresql.org/pub/source/v10.14/postgresql-10.14.tar.bz2 [root@test src]# tar xjvf postgresql-10.14.tar.bz2 [root@test src]# cd /opt/src/postgresql-10.14/contrib/passwordcheck/ #修改Makefile, 把注释去掉, 并修改字典文件(不要带.pwd后缀). [root@test passwordcheck]# vi Makefile #把下面两行注释去掉 #修改字典文件/usr/lib/cracklib_dict为步骤3生产的字典 PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/opt/src/cracklib-dict"' SHLIB_LINK = -lcrack #修改需要的密码最小长度,修改为13 [root@test passwordcheck]# vi passwordcheck.c #define MIN_PWD_LENGTH 13 |
编译passwordcheck
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #因为这里是重新下载的源码,需要全部重新编译 [root@test passwordcheck]# cd /opt/src/postgresql-10.14 [root@test postgresql-10.14]# ./configure --prefix=/opt/pgsql [root@test postgresql-10.14]# gmake world #如果有以前的编译的源码,可按以下方式编译 [root@test postgresql-10.14]# cd /opt/src/postgresql-10.14/contrib/passwordcheck [root@test passwordcheck]# make clean rm -f passwordcheck.so libpasswordcheck.a libpasswordcheck.pc rm -f passwordcheck.o [root@test passwordcheck]# make gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -O2 -fPIC -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/opt/src/cracklib-dict"' -I. -I. -I../../src/include -D_GNU_SOURCE -c -o passwordcheck.o passwordcheck.c gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -O2 -fPIC -shared -o passwordcheck.so passwordcheck.o -L../../src/port -L../../src/common -Wl,--as-needed -Wl,-rpath,'/opt/pgsql/lib',--enable-new-dtags -lcrack [root@test passwordcheck]# ls Makefile passwordcheck.c passwordcheck.o passwordcheck.so |
安装passwordcheck
1 2 3 4 | #以前的先做下备份 [root@test passwordcheck]# mv /opt/pg10/lib/postgresql/passwordcheck.so /opt/pg10/lib/postgresql/passwordcheck.so.bak #拷贝重新编译后的SO文件 [root@test passwordcheck]# cp /opt/src/postgresql-10.14/contrib/passwordcheck/passwordcheck.so /opt/pg10/10/lib/postgresql/ |
添加passwordcheck扩展,重启数据库