当前位置:   article > 正文

Postgres配置密码复杂度_postgresql 密码复杂度

postgresql 密码复杂度

目录

概述:

一、安装cracklib以及字典

二、下载PostgreSQL数据库的源码安装包

二、配置passwordcheck

三、编译passwordcheck

四、复制passwordcheck.so到数据库的$libdir下

五、添加passwordcheck扩展,重启数据库

六、新建账户AAA,测试密码复杂度是否生效

七、报错问题


概述:

PostgreSQL自带了一个passwordcheck扩展插件(需下载PostgreSQL数据库的源码安装包)可以满足简单的密码复杂度测验, 防止使用过短, 或者与包含用户名的密码,只需要把"$libdir/passwordcheck"加入到postgresql.conf的shared_preload_libraries参数中,然后重启服务器即可。

以下测试使用的是PostgreSQL 13.7,原数据库安装位置/var/lib/pgsql/13/

一、安装cracklib以及字典

下载安装cracklib

[root@localhost ~]# yum install -y cracklib-devel cracklib-dicts cracklib

 检查安装

  1. [root@localhost ~]# rpm -ql cracklib-dicts
  2. /usr/lib64/cracklib_dict.hwm
  3. /usr/lib64/cracklib_dict.pwd
  4. /usr/lib64/cracklib_dict.pwi
  5. /usr/sbin/mkdict
  6. /usr/sbin/packer
  7. /usr/share/cracklib/cracklib-small.hwm
  8. /usr/share/cracklib/cracklib-small.pwd
  9. /usr/share/cracklib/cracklib-small.pwi
  10. /usr/share/cracklib/pw_dict.hwm
  11. /usr/share/cracklib/pw_dict.pwd
  12. /usr/share/cracklib/pw_dict.pwi

二、下载PostgreSQL数据库的源码安装包

下载与自己数据库版本一致的PostgreSQL源码,其中包含passwordcheck扩展插件。

下载地址:Index of /pub/source/

本次下载到/opt/src下

  1. #创建新文件夹src
  2. mkdir /opt/src
  3. #进入src文件夹下
  4. cd /opt/src
  5. #下载源码包,在此替换成自己的数据库版本一致的源码包
  6. wget https://ftp.postgresql.org/pub/source/v13.7/postgresql-13.7.tar.bz2
  7. #解压
  8. tar xjvf postgresql-13.7.tar.bz2
  9. #查看文件夹下
  10. [root@localhost src]# ls
  11. postgresql-13.7 postgresql-13.7.tar.bz2

二、配置passwordcheck

  1. #查找cracklib_dict路径
  2. [root@localhost src]# find / -name cracklib_dict*
  3. /usr/lib64/cracklib_dict.hwm
  4. /usr/lib64/cracklib_dict.pwd
  5. /usr/lib64/cracklib_dict.pwi
  6. #进入passwordcheck文件夹下
  7. [root@localhost src]# cd /opt/src/postgresql-13.7/contrib/passwordcheck
  8. [root@localhost passwordcheck]#
  9. #修改Makefile, 把注释去掉, 并修改字典文件(不要带.pwd后缀).
  10. [root@localhost passwordcheck]# vi Makefile
  11. #把下面两行注释去掉
  12. #修改字典文件/usr/lib/cracklib_dict为步骤一安装的cracklib
  13. PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/usr/lib64/cracklib_dict"'
  14. SHLIB_LINK = -lcrack

三、编译passwordcheck

  1. #进入/opt/src/postgresql-13.7下应该有configure
  2. [root@localhost passwordcheck]# cd /opt/src/postgresql-13.7
  3. [root@localhost postgresql-13.7]# ls
  4. aclocal.m4 config.status contrib GNUmakefile INSTALL src
  5. config configure COPYRIGHT GNUmakefile.in Makefile
  6. config.log configure.in doc HISTORY README
  7. [root@localhost postgresql-13.7]#
  8. #全部重新编译,大概需要等待5分钟
  9. [root@localhost postgresql-13.7]#./configure --prefix=/opt/pgsql
  10. [root@localhost postgresql-13.7]#gmake world

在此可能出现没有安装readline库和zlib库,若不存在这些库,下载安装库后再次编译即可。

  1. #安装readline库
  2. yum install readline-devel
  3. #安装zlib库
  4. yum install zlib-devel

四、复制passwordcheck.so到数据库的$libdir下

  1. #查询$libdir位置。$libdir是一个环境变量,它用于指定PostgreSQL安装目录中存放库文件的路径。
  2. #在Linux系统中,$libdir通常指定为/usr/lib/postgresql/{version}/lib/
  3. #在命令行中输入以下命令查找$libdir路径:
  4. [root@localhost postgresql-13.7]# pg_config --libdir
  5. /usr/pgsql-13/lib
  6. [root@localhost postgresql-13.7]# cd /usr/pgsql-13/lib
  7. #若pg_config工具未安装,可配置
  8. #查询pg_config文件位置
  9. [root@localhost postgresql-13.7]# find / -name pg_config
  10. find: ‘/proc/32474’: No such file or directory
  11. /usr/pgsql-13/bin/pg_config
  12. /opt/src/postgresql-13.7/src/bin/pg_config
  13. /opt/src/postgresql-13.7/src/bin/pg_config/pg_config
  14. #将/usr/pgsql-13/bin替换为你的pg_config实际所在的路径
  15. export PATH=$PATH:/usr/pgsql-13/bin
  16. #生效
  17. source ~/.bashrc
  18. #测试pg_config是否生效,输入pg_config后有信息显示
  19. pg_config
  20. #复制passwordcheck.so到原数据库的$libdir下
  21. cp /opt/src/postgresql-13.7/contrib/passwordcheck/passwordcheck.so /usr/pgsql-13/lib
  22. [root@localhost lib]# ls
  23. bitcode libecpg.so utf8_and_euc2004.so
  24. cyrillic_and_mic.so libecpg.so.6 utf8_and_euc_cn.so
  25. dict_int.so libecpg.so.6.13 utf8_and_euc_jp.so
  26. dict_snowball.so libpgfeutils.a utf8_and_euc_kr.so
  27. dict_xsyn.so libpgtypes.so.3 utf8_and_euc_tw.so
  28. euc2004_sjis2004.so libpgtypes.so.3.13 utf8_and_gb18030.so
  29. euc_cn_and_mic.so libpq.so.5 utf8_and_gbk.so
  30. euc_jp_and_sjis.so libpq.so.5.13 utf8_and_iso8859_1.so
  31. euc_kr_and_mic.so libpqwalreceiver.so utf8_and_iso8859.so
  32. euc_tw_and_big5.so passwordcheck.so utf8_and_johab.so
  33. latin2_and_win1250.so pgoutput.so utf8_and_sjis2004.so
  34. latin_and_mic.so plpgsql.so utf8_and_sjis.so
  35. libecpg_compat.so.3 utf8_and_big5.so utf8_and_uhc.so
  36. libecpg_compat.so.3.13 utf8_and_cyrillic.so utf8_and_win.so

五、添加passwordcheck扩展,重启数据库

  1. #查看shared_preload_libraries
  2. postgres=# show shared_preload_libraries;
  3. shared_preload_libraries
  4. --------------------------
  5. (1 row)
  6. #配置shared_preload_libraries
  7. postgres=# alter system set shared_preload_libraries='passwordcheck';
  8. ALTER SYSTEM
  9. #重启数据库
  10. [root@localhost passwordcheck]# systemctl restart postgresql-13
  11. [root@localhost passwordcheck]# systemctl status postgresql-13
  12. #查看配置是否生效
  13. postgres=# show shared_preload_libraries;
  14. shared_preload_libraries
  15. --------------------------
  16. passwordcheck
  17. (1 row)

六、新建账户AAA,测试密码复杂度是否生效

  1. postgres=# CREATE USER AAA WITH PASSWORD '123';
  2. ERROR: password is too short
  3. postgres=# CREATE USER AAA WITH PASSWORD '123456';
  4. ERROR: password is too short
  5. postgres=# CREATE USER AAA WITH PASSWORD '12345678';
  6. ERROR: password must contain both letters and nonletters
  7. postgres=# CREATE USER AAA WITH PASSWORD '1234567a';
  8. ERROR: password is easily cracked
  9. postgres=# CREATE USER AAA WITH PASSWORD '123456Aa';
  10. ERROR: password is easily cracked
  11. postgres=# CREATE USER AAA WITH PASSWORD '12345$Aa';
  12. ERROR: password is easily cracked
  13. postgres=# CREATE USER AAA WITH PASSWORD 'D3mNj76F';
  14. CREATE ROLE

七、报错问题

1、编译passwordcheck时,出现

"configure:12156: error: readline library not found If you have readline already installed, see config.log for details on the Use --without-readline to disable readline support. pgac_cv_check_readline=no with_readline='yes'"

"checking for inflate in -lz... no configure: error: zlib library not found If you have zlib already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-zlib to disable zlib support."

由于没有安装readline库和zlib库,下载安装库后再次编译即可。

  1. #安装readline库
  2. yum install readline-devel
  3. #安装zlib库
  4. yum install zlib-devel

参考:

PostgreSQL扩展之passwordcheck - 墨天轮

PostgreSQL数据库安全加固(一)——设置密码复杂度_postgresql密码复杂度-CSDN博客

https://www.cnblogs.com/Jingkunliu/p/14048221.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/981862
推荐阅读
相关标签
  

闽ICP备14008679号