暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL数据库安全加固

IT那活儿 2021-04-07
3117

数据已经成为了一个企业发展的基石,数据的安全至关重要,近年来,发生了多起,数据被删除的案例。因此数据库的安全策略相当重要,本文列举了一些常见的安全加固方法。

1、设置PostgreSQL数据库实例的最大连接数,并给超级用户预留足够的连接

Alter system set max_connections to 2000;

Alter system set superuser_reserved_connections to 20;

注意:普通用户的最大连接数实际为:2000-20 =1980;参数修改后,需要重启数据库生效

2、为数据库设置最大允许的连接数

Alter database dbname with connection limit 1000;

3、修改数据库实例的默认监听端口

查看PG使用的监听端口:

设置数据库监听端口:

Alter system set port to 6789;//注意需要使用超级用户修改,重启生效

4、为应用用户设置最大连接数

Max_connections设置PG实例的最大连接数,还可以为单独用户设置最大连接数

Create user weiqiang password ‘weiqiang’ connection limit 300;

或者

Alter user weiqiang wiyh connection limit 300;

5、自定义PG超级管理员

在初始化数据库时,指定超级管理员:

6、设置用户角色的密码的导入日期

尝试进行登录报错信息如下:

7、不使用默认的postgres数据库

在数据库集群初始化完毕后,不建议保留postgres数据,建议使用一个新的空的数据库进行代替,避免人为非法尝试登录默认数据库:

Create database empty_used;

\c empty_used

Drop database postgres;

8、修改用户的默认密码加密方式

新版本数据库建议用户密码加密方式设置为scram-sha-256

修改用户加密方式

或者在数据库实例初始化时指定密码加密方式:

Initdb -A scram-sha-256

或者

Alter system set password_encryption to ‘scram-sha-256’;

9、设置PostgreSQL实例的监听地址

PostgreSQL监听地址默认为localhost,不建议使用*或0.0.0.0

建议修改为:应用的ip地址

Alter system set listen_addresses to ‘192.168.21.142,192,168.21.144’;重启生效

10、配置pg_hba.conf客户端认证

Local all all scram-sha-256 ##本地登录使用密码验证,禁止设置为trust认证

Host all postgres 0.0.0.0/0 reject ##禁止超级用户远程登录

Host all all 192.168.21.142/32 scram-sha-256

Host replication repuser 192.168.21.144/32 scram-sha-256

11、设置用户密码复杂度策略

不建议用户和密码相同;建议使用大小写字母及特殊字符混合,且不能小于一定的长度。建议使用passwordcheck进行密码复杂度检查。在CREATE USER或ALTER USER设置用户密码时会自动触发密码复杂度检查。

Vi $PGDATA/postgresql.conf

Shared_preload_libraries=’passwordcheck’;

Passwordcheck.level=’true’;

举例:

12、用户权限设置

用户权限设置原则:应用用户权限越小越好;够用就好

建议1:数据库删除public模式,或者回收所有用户拥有的public模式的权限

Revoke all privileges on schema public from PUBLIC;

建议2:设置应用用户的search_path to ‘app_user_schema’;不建议将该shema的所有权限授予引用用户

13、设置idle_in_transaction_session_timeout参数,避免长时间的空闲未提交的事务导致表膨胀
14、建议设置statement_timeout参数,避免SQL执行时间过长,占用过多资源,建议在会话中设置
15、建议安装pg_stat_statements插件,捕捉性能低下的SQL进行优化,提高系统响应。
16、PostgreSQL数据库版本每个季度发行一个小版本,因此相关BUG、漏洞会较快的修复,建议根据需要定期进行版本升级。

END

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论