iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL密码安全策略
  • 563
分享到

PostgreSQL密码安全策略

PostgreSQL密码安全策略 2021-12-15 15:12:44 563人浏览 无得
摘要

引用地址:https://blog.csdn.net/weixin_34143774/article/details/89561946  请以原文为主,引用注明出处。问题:今天公司进行软件测评,在测评期间,测评人员问起postgr

PostgreSQL密码安全策略

引用地址:https://blog.csdn.net/weixin_34143774/article/details/89561946  请以原文为主,引用注明出处。


问题:今天公司进行软件测评,在测评期间,测评人员问起postgresql登录失败导致用户定的次数,密码输错几次账户会被锁定?

网上查了一圈,oracleMysql都有相关设置,只有pg库没有找到相关的设置参数。偶然发现网上的帖子,结果发现PG库尚不支持相关设置。

image

下面引用一下:

数据库密码管理是数据库安全的重要环节之一。密码管理及配置策略主要包括:

  • 密码加密存储
  • 密码有效期
  • 密码复杂度
  • 密码验证失败延迟
  • 密码验证失败次数限制,失败后锁定, 以及解锁时间
  • 设置密码时防止密码被记录到数据库日志
    下面会依次讲解在Postgresql中如何实现密码相关的安全性配置。

1、密码加密存储

pg中密码始终以加密方式存储在系统目录中。ENCREPED 关键字没有任何效果, 但被接受向后兼容。加密方式可以通过passWord_encryption参数配置。

postgres=# show password_encryption;
password_encryption 
---------------------
md5
(1 row)
postgres=# select * from pg_shadow where usename="test";
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | usec
onfig 
---------+----------+-------------+----------+---------+--------------+-------------------------------------+------------------------+-----
------
test | 49156 | f | f | f | f | md52d308906cb4ea734a22f76e7927c046b | 2019-04-10 16:58:00+08 |

2、密码有效期

pg支持密码有效期配置,可以通过配置密码有效期,制定密码更换周期。

服务器端设置有效期
postgres=# alter role test valid until "2019-04-10 16:58:00";
ALTER ROLE
postgres=# select * from pg_user where usename="test";
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig 
---------+----------+-------------+----------+---------+--------------+----------+------------------------+-----------
test | 49156 | f | f | f | f | ******** | 2019-04-10 16:58:00+08 | 
(1 row)
客户端连接测试
[postgres@pg2 ~]$ date
Wed Apr 10 17:11:49 CST 2019
[postgres@pg2 ~]$ psql -h 192.168.6.12 -U test -d postgres -p 5432
Password for user test: 
psql: FATAL: password authentication failed for user "test"

注意:

  • pg密码有效期仅针对客户端有效,服务器端不受限制。
  • 网络访问控制文件中不能配置为trust认证方式

3、密码复杂度策略

passwordcheck.so模块可以实现密码复杂度要求,此模块可以检查密码,如果密码太弱,他会拒绝连接
创建用户或修改用户密码时,强制限制密码的复杂度,限制密码不能重复使用
例如密码长度,包含数字,字母,大小写,特殊字符等,同时排除暴力破解字典中的字符串

3.1、启用模块

添加"$libdir/passwordcheck"到参数shared_preload_libraries,重启生效
默认so文件都存放在$libdir目录下

[pg@pg ~]$ ls -atl $LD_LIBRARY_PATH/passwordcheck*
-rwxr-xr-x 1 pg pg 8640 Feb 1 14:23 /opt/postgres/lib/passwordcheck.so
postgres=# select name,setting from pg_settings where name like "%dynamic%";
name | setting 
----------------------------+---------
dynamic_library_path | $libdir
dynamic_shared_memory_type | posix
(2 rows)
postgres=# alter system set shared_preload_libraries=pg_pathman,pg_stat_statements,passwordcheck;
ALTER SYSTEM
postgres=# 
重启生效
shared_preload_libraries参数使用参考“Postgresql共享库预加载(Shared Library Preloading)”
3.2、复杂度功能验证

密码复杂度检查模块Passwordcheck

  • 验证创建的用户密码是否符合规则。
    密码:最少8个字符;必须包含数字和字母;密码中不能含有用户名字段。
postgres=# alter role test with password "test";
ERROR: password is too short
postgres=# alter role test password "12345678";
ERROR: password must contain both letters and nonletters
postgres=# alter role test with password "test1234";
ERROR: password must not contain user name
postgres=# alter role test with password "tttt1234";
ALTER ROLE

4、密码验证失败延迟

auth_delay.so模块会导致服务器在报告身份验证失败之前短暂停留,这个主要用于防止暴力破解. 验证失败后, 延迟一个时间窗口才能继续验证。请注意, 它不会阻止拒绝服务攻击, 甚至可能会加剧这些攻击, 因为在报告身份验证失败之前等待的进程仍将使用连接插槽。

4.1、启用模块

需要配置以下参数,实现密码验证延迟失败延迟

so文件存储在$libdir下
[pg@pg lib]$ ls -atl $LD_LIBRARY_PATH/auth_delay*
-rwxr-xr-x 1 pg pg 8432 Feb 1 14:23 /opt/postgres/lib/auth_delay.so
参数修改
shared_preload_libraries --预加载模块
auth_delay.milliseconds (int) --指定延迟时间
postgres=# alter system set shared_preload_libraries=pg_pathman, pg_stat_statements, passwordcheck,auth_delay;
ALTER SYSTEM
重启生效
postgres=# alter system set auth_delay.milliseconds=5000;
ALTER SYSTEM
reload生效
4.2、验证
[pg@pg ~]$ psql -h 192.168.6.12 -U test -p 5432 -d postgres
Password for user test: 
--5s
psql: FATAL: password authentication failed for user "test"
[pg@pg ~]$
输入密码后,如果密码不正确,会等待5s,然后返回密码失败提示
[pg@pg ~]$ psql -h 192.168.6.12 -U test -p 5432 -d postgres
Password for user test: 
psql (10.4)
Type "help" for help.
postgres=> 
输入密码后,如果密码正确,没有等待。

5、密码验证失败次数限制,失败后锁定, 以及解锁时间

目前PostgreSQL不支持这个安全策略, 目前只能使用auth_delay来延长暴力破解的时间.

6、设置密码时防止密码被记录到数据库日志中

密码的配置命令可能会被记录到history文件及csvlog日志文件中(如果开启了DDL或更高级别审计log_statement),这些文件明文记录了密码,可能造成密码泄露风险。

6.1、密码记录到两个地方
HISTFILE
The file name that will be used to store the history list. If unset, the file name is taken from the PSQL_HISTORY environment variable. If that is not set either, the default is ~/.psql_history, or %APPDATA%postgresqlpsql_history on windows. For example, putting:
set HISTFILE ~/.psql_history- :DBNAME
in ~/.psqlrc will cause psql to maintain a separate history for each database.
Note
This feature was shamelessly plagiarized from Bash. --??!!
csvlog 
数据库错误日志

事例:

如以下命令,会记录到HISTFILE和csvlog日志中
postgres=# alter role test with password "tttt1234";
ALTER ROLE
history file记录
[pg@pg ~]$ cat ~/.psql_history |grep tttt1234
alter role test with password "tttt1234";
[pg@pg ~]$ 
csvlog记录
[pg@pg ~]$ cat $PGDATA/postgresql.conf |grep log_statement
#log_statement = "none"         # none, ddl, mod, all
log_statement = "ddl"
#log_statement_stats = off
[pg@pg ~]$ 
[pg@pg ~]$ cat $PGDATA/pg_log/postgresql-2019-04-12_092557.csv |grep tttt1234
2019-04-12 09:33:23.036 CST,"pg","postgres",1309,"[local]",5cafeadb.51d,3,"idle",2019-04-12 09:33:15 CST,3/21,0,LOG,00000,"statement: alter role test with password "tttt1234";",,,,,,,,,"psql"
6.2、解决方式
  1. 使用createuser命令行工具-W选项提示输入密码。
  2. 使用pg_md5工具生成密码, 在psql中使用ALTER ROLE填入md5值。
    与上面类似, pg_md5是pgpool提供的一个工具, 实际上就是调用上面的函数。
[pg@pg ~]$ createuser -l -h 127.0.0.1 -p 5432 -U pg -W tuser
Password: 
[pg@pg ~]$ 
[pg@pg ~]$ cat $PGDATA/pg_log/postgresql-2019-04-12_092557.csv |grep tuser
2019-04-12 11:17:48.348 CST,"pg","postgres",1574,"localhost:42560",5cb0035c.626,3,"idle",2019-04-12 11:17:48 CST,3/236,0,LOG,00000,"statement: CREATE ROLE tuser NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;",,,,,,,,,"createuser"
您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL密码安全策略

本文链接: https://www.lsjlt.com/news/5595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ORACLE11g密码安全与过期策略
    数据库安全问题一直是人们关注的焦点之一,我们知道一个企业或者机构的数据库如果遭到黑客的攻击,而这些数据库又保存着非常重要的数据,象银行、通信等数据库,后果将不堪设想。oracle数据库使用了多种手段来...
    99+
    2024-04-02
  • Linux账号密码安全策略设置
    前言 随着云计算厂商的兴起,云资源如ECS不再只有企业或者公司才会使用,普通人也可以自己买一台ECS来搭建自己的应用或者网站。虽然云计算厂商帮我们做了很多安全相关的工作,但并不代表我们的机器资源就绝对...
    99+
    2023-10-05
    linux 运维 服务器
  • MySQL 5.7密码安全策略是什么
    小编给大家分享一下MySQL 5.7密码安全策略是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!查看现有的密码策略mysql> SHOW VARIABLES LIKE '...
    99+
    2024-04-02
  • 怎么理解PostgreSQL行安全策略
    这篇文章主要讲解了“怎么理解PostgreSQL行安全策略”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解PostgreSQL行安全策略”吧!行安全策...
    99+
    2024-04-02
  • 提升Oracle用户密码安全性的策略
    环境:Oracle 11.2.0.4 客户需求:主要背景是数据库中有很多业务用户名,且由于部分用户缺乏安全意识,甚至直接将自己的密码设置为和用户名一样,目前客户期望密码设置不要过于简单,最起码别和用户名一...
    99+
    2024-04-02
  • MySQL的密码策略
    文章目录 一、配置远程主机可登录mysql数据库二、MySQL的密码复杂度5.7的密码复杂度是由validate_password_policy参数控制8.0的密码复杂度是由validate_...
    99+
    2023-09-04
    mysql 数据库
  • 防火墙安全策略
    目录 防火墙安全策略 实验图  1.配置防火墙图形界面         先添加UDP端口          添加网段网卡         启动防火墙FW1          查找防火墙 0/0/0 端口默认的IP地址         将地...
    99+
    2023-10-01
    linux 服务器 运维
  • 浅谈Redis安全策略
    目录命令配置密码手动配置密码指令安全端口安全SSH代理补充:1. 开启redis密码认证,并设置高复杂度密码2. 禁止监听在公网3. 禁止使用root用户启动4. 限制redis 配...
    99+
    2024-04-02
  • 等保三级安全加固,服务器三权分立设置,mysql密码策略登录策略
    安全计算环境 1)数据库、服务器未配置口令复杂度策略。 OS 系统编辑文件/etc/pam.d/system-auth,是否存在如下配置: password requisite ...
    99+
    2023-09-07
    mysql 服务器 安全 运维 linux
  • MySQL8.0密码策略是什么
    这篇文章主要讲解了“MySQL8.0密码策略是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL8.0密码策略是什么”吧!从8.0.4开始mysq...
    99+
    2024-04-02
  • MySQL密码策略有哪些
    本篇内容介绍了“MySQL密码策略有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1)  临...
    99+
    2024-04-02
  • MySQL 8.0 密码策略修改
    首次登录mysql,需要修改原始密码。 mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALT...
    99+
    2023-09-12
    mysql
  • 云服务器安全策略
    1. 强密码和多因素认证 强密码是保护云服务器的第一道防线。使用复杂的密码,包括大小写字母、数字和符号,并定期更改密码。此外,启用多因素认证可以提高安全性,因为它需要用户提供两个或多个身份验证因素才能访问服务器。 2. 安全组和网络访问控...
    99+
    2023-10-26
    安全策略 服务器
  • MysqL安全策略有哪些
    小编给大家分享一下MysqL安全策略有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1:使用预处理语句防止SQL注入2:写入数据库的数据要进行特殊字符的转义,比如字符中带单引号和双引号...
    99+
    2024-04-02
  • Win10如何重置恢复安全策略和组策略
    本文小编为大家详细介绍“Win10如何重置恢复安全策略和组策略”,内容详细,步骤清晰,细节处理妥当,希望这篇“Win10如何重置恢复安全策略和组策略”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。右键点击开始按钮或...
    99+
    2023-06-28
  • win7密码策略怎么更改
    这篇文章主要介绍“win7密码策略怎么更改”,在日常操作中,相信很多人在win7密码策略怎么更改问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7密码策略怎么更改”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-01
  • oracle怎么关闭密码策略
    要关闭Oracle的密码策略,可以按照以下步骤进行操作:1. 以sysdba权限登录到Oracle数据库。2. 运行以下SQL语句来...
    99+
    2023-08-24
    oracle
  • 一键安装mysql5.7及密码策略修改方法
    一、一键安装Mysql脚本 [root@uat01 ~]# cat InstallMysql01.sh #!/bin/bash #2018-10-13 #旅行者-Travel #1.安装wget yu...
    99+
    2024-04-02
  • 阿里云Linux服务器默认密码是什么?安全使用策略
    阿里云为用户提供了一种高性能、安全可靠的云计算服务。在使用过程中,用户常常会遇到关于阿里云Linux服务器默认密码的问题。本文将详细说明阿里云Linux服务器默认密码是什么,以及如何安全使用服务器。 阿里云Linux服务器默认密码是什么?...
    99+
    2023-11-23
    阿里 策略 密码
  • webservice安全策略怎么配置
    Web服务安全策略的配置应该包括以下几个方面:1. 认证和授权:配置Web服务的认证和授权机制,确保只有授权用户可以访问服务。2. ...
    99+
    2023-06-13
    webservice安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作