这里我们以在centos7的环境下去安装PostgreSQL数据库并详细的说明一下其最佳安全配置(数据库以9.4为例)
一、首先我们看一下在centos环境下去安装PostgreSQL数据库
选择一个合适的数据库版本如:https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-3.noarch.rpm
以root方式进入centos7 输入 yum install + 上面的地址 回车
安装PostgreSQL:输入:yum install -y postgresql94-server postgresql94-contrib回车
初始化数据库 输入:/usr/pgsql-9.4/bin/postgresql94-setup initdb
二、安全配置
1、查看1)注册并正确设置了服务运行级别以及、2)数据库集群安装成功
2、配置正确的文件掩码 输入: umask 回车
Linux中 umask值默认为002代表文件的所有者和同组用户能够读写文件,其他用户能够读取文件内容。
在这里我们需要将掩码设置为077若掩码设置错误不为 077,将导致其他用户能够读、写甚至执行 postgres 用户创建的文件和脚本。所以必须要正确设置 umask,防止出现用户越权操作。
3、日志监控和审计
-
开启日志收集器功能 进入数据库 执行命令:
show logging_collector;
-
设置正确的日志格式 执行命令:
show log_destination;
- 设置正确的日志文件权限(默认值为0600) 执行命令:
show log_file_mode;
-
确保“log_truncate_on_rotation”已启用 执行命令:
show log_truncate_on_rotation;
- 设置正确的日志文件大小(当日志文件大小设置为“0”时,将无法创建新的日志文件) 执行命令:
show log_rotation_size;
4、用户访问和授权安全配置
撤销过多的函数权限
-
进入数据库执行下列语句
select nspname,proname,proargtypes,prosecdef,rolename,proconfig from
pg_proc p join pg_namespace n on p.pronamespace = n.oid join pg_authid a on
a.oid = p.propwner where prosecdef or not proconfig is Null;
在查询结果中,如果 a processdef 的值为“t”,表示该行的函数使用了过多的
权限。
撤销过多的管理员权限
-
确定当前数据库中超级用户所拥有的权限,进入数据库执行命令:
\du postgres
-
查看其他用户的权限,与超级用户进行对比,查询数据库中所有用户,执行命令:
Select * from pg_user order by username;
-
查看用户权限信息,执行命令:
\du * ; (其中“*”替换为用户名)
5、PostgreSQL 数据库安全配置
-
正确配置了“backend”运行时参数,进入数据库执行命令:
select name,setting,unit from pg_settings where context like ’%backend%’ order by 1; - 开启正确配置ssl(以保证客户端与服务器之间通讯的保密性),进入数据库执行命令:
show ssl -
确保使用 FIPS 140-2 OpenSSL(如果结果不为“1”,表示该操作系统未启动 FIPS;),进入数据库执行命令:cat /proc/sys/crypto/fips_enabled
安装并正确配置 pgcrypto
在数据库中执行命令:
select * from pg_available_extensions where name=’pgcrypto’;
以上是我对postgresql数据库的浅显理解与说明,希望对读者的你有所帮助。
来源:freebuf.com 2020-12-17 15:03:14 by: luckin庸人自扰
请登录后发表评论
注册