当前位置:   article > 正文

PostgreSQL安全基线_pgsql安全基线

pgsql安全基线

PostgreSQL安全基线

访问控制

1.中危-确保通过“主机” TCP / IP套接字登录已正确配置

描述:
大量的身份验证方法可用于使用
TCP / IP套接字,包括:
?信任 、? 拒绝、?md5、?scram-sha-256、?密码、?gss、?sspi、?身份、?pam、?ldap、?半径、?证书
方法trust,password和ident不能用于远程登录。 方法md5是最受欢迎,可以在加密和未加密会话中使用,但是容易受到数据包重播攻击。 建议使用scram-sha-256而不是md5。使用gss,sspi,pam,ldap,radius和cert方法,比md5更安全,但取决于外部认证过程/服务的可用性,因此未包含在此基准测试中。

加固建议
在配置文件(pg_hba.conf)中如下配置

# TYPE     DATABASE     USER         ADDRESS              METHOD
  host           all    postgres    127.0.0.1/32    scram-sha-256
  • 1
  • 2

配置文件路径可登录postgres数据库 show hba_file;进行查看.

文件系统配置

2.高危-确保正确设置了日志目标

描述:
PostgreSQL支持多种记录服务器消息的方法,包括stderr,csvlog和syslog。 在Windows上,也支持eventlog。 这些中的一个或多个应该为服务器日志输出设置目的地。

加固建议:

  1. 进入postgresql数据库,执行命令 show log_destination; 查看状态
  2. 执行命令 alter system set log_destination = ‘csvlog’; select pg_reload_conf();
  3. 重复执行步骤1,查看状态是否为’csvlog’

文件权限

3.中危-确保已禁用“ debug_print_plan”

描述:
debug_print_plan设置启用打印每个已执行查询的执行计划。
这些消息在LOG消息级别发出。除非您另有指示
组织的日志记录策略,建议通过将其设置为off来禁用此设置。

加固建议:
1.进入postgresql数据库,执行命令 show debug_print_plan; 查看状态
2.执行命令

alter system set debug_print_plan = 'off';
select pg_reload_conf();
  • 1
  • 2

3.重复执行步骤1,查看状态是否为off(关闭) 请注意: 如果您的postgresql版本在9.3(或更早),请修改配置文件 postgresql.conf 中配置 debug_print_plan = 'off',并重启

入侵防范

4.高危-postgresql数据库版本存在安全漏洞

描述:

postgresql存在以下版本存在漏洞,容易被入侵 :

  1. Postgresql[9.3;10.0] 函数伪造可导致远程代码执行漏洞AVD-2018-1058
  2. PostgreSQL [9;9.1.22; 9.2.17; 9.3.13; 9.4.8; 9.5.3;]空指针引用漏洞AVD-2016-5423
  3. PostgreSQL[9.3;11.2]任意代码执行漏洞AVD-2019-9193
  4. Postgresql[10.0;10.16; 11.0,;11.11; 12.0; 12.6;]授权机制不正确 AVD-2021-20229

加固建议:
升级postgresql至最新可用版本,完成漏洞修复

5.高危-PostgreSQL未授权访问

描述:
Postgresql数据库在配置trust的情况下存在未授权漏洞,攻击者可以在未授权的情况下直接登陆数据库,可能造成数据泄露。需立即修复加固。

加固建议:

  1. 登陆数据库执行SHOW hba_file;查看配置文件路径
  2. 查看是否存在 host xxx xxx 0.0.0.0/0 trust
  3. 如果存在,请修改配置为密码校验(如下)或者删除(如您已配置密码校验) host xxx xxx 0.0.0.0/0 md5
  4. 重启postgresql

6.中危-建议修改数据库的默认端口

描述:
避免使用熟知的端口,降低被初级扫描的风险

加固建议:
在配置文件(postgresql.conf)中修改端口 如:
port = 5433
修改后连接时也需更改对应端口

恶意代码防范

7.中危-确保已禁用“ debug_print_rewrite”

描述:
debug_print_rewrite设置允许为每个输出打印查询重写器输出执行查询。这些消息在LOG消息级别发出。除非有指示
否则,根据您组织的日志记录策略,建议禁用此设置通过将其设置为关闭

加固建议

  1. 进入postgresql数据库,执行命令 show debug_print_rewritten; 查看状态
  2. 执行命令
alter system set debug_print_rewritten = 'off';
select pg_reload_conf();
  • 1
  • 2
  1. 重复执行步骤1,查看状态是否为off(关闭) 请注意: 如果您的postgresql版本在9.3(或更早),请修改配置文件 postgresql.conf 中配置 debug_print_rewritten= 'off' ,并重启

安全审计

8.中危-确保已禁用“ debug_print_parse”

描述:
debug_print_parse设置启用为每次执行打印结果分析树查询。 这些消息在LOG消息级别发出。 除非另有指示您组织的日志记录策略,建议通过设置禁用此设置关闭。

加固建议
1.进入postgresql数据库,执行命令 show debug_print_parse; 查看状态
2.执行命令

alter system set debug_print_parse = 'off';
select pg_reload_conf();
  • 1
  • 2

3.重复执行步骤1,查看状态是否为off(关闭) 请注意: 如果您的postgresql版本在9.3(或更早),请修改配置文件 postgresql.conf 中配置 debug_print_parse = 'off',并重启

密码策略

9.高危-密码复杂度检查

描述:
检查密码长度和密码是否使用多种字符类型

加固建议
修改shared_preload_libraries参数 $ vi postgresql.conf

新增配置项
shared_preload_libraries = 'passwordcheck'

切换到数据库启动用户:如 su -postgres
执行命令 pg_ctl -D $PGDATA restart 使配置生效(如未配置系统变量pg_ctl 默认在安装的bin目录下);

如果您没有安装配置passwordcheck(自带的第三方插件,建议重新安装) 如不能重装,可考虑加白名单。

用户权限分配

10.高危-确保撤销过多的管理特权

描述:
关于PostgreSQL管理SQL命令,仅超级用户应具有特权提升。 PostgreSQL常规或应用程序用户不应具备此能力创建角色,创建新数据库,管理复制或执行任何其他操作被视为特权。 通常,普通用户只应被授予与管理应用程序相对应的特权:

  • DDL(创建表,创建视图,创建索引等)
  • DML(选择,插入,更新,删除)
    此外,为DDL和DML创建单独的角色已经成为最佳实践。 这样可以防止意外通过作为应用程序运行的应用程序代码创建/更改/删除数据库对象.

加固建议

  1. 进入postgresql数据库,执行select usename from pg_user;,查看用户
  2. 执行\du 用户名;,分别查看用户权限,要求除超级用户,审计员,管理员外,尽可能的降低普通用户的权限
  3. 确保只有一个超级用户(例:postgres),普通用户的权限应比超级用户更低
  4. 找到您需要限制的用户(username),执行以下一条或多条命令
ALTER ROLE username NOSUPERUSER;
ALTER ROLE appuser NOCREATEROLE;
ALTER ROLE appuser NOCREATEDB;
ALTER ROLE appuser NOREPLICATION;
ALTER ROLE appuser NOBYPASSRLS;
ALTER ROLE appuser NOINHERIT;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

11.高危-禁止以root用户直接启动数据库

描述:
以postgres用户启动,降低数据库在系统中的权限占比

加固建议:
建议以postgres用户启动

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

闽ICP备14008679号