PostgreSQL数据库的最佳安全配置
2020-12-17 16:03:14 Author: www.freebuf.com(查看原文) 阅读量:119 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

这里我们以在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 + 上面的地址 回车

1608182594_5fdaeb423ee1124a680ba.png!small

安装PostgreSQL:输入:yum install -y postgresql94-server postgresql94-contrib回车

1608182781_5fdaebfde8f4b915f6031.png!small

1608182827_5fdaec2b31f7beb6f4b9d.png!small

初始化数据库   输入:/usr/pgsql-9.4/bin/postgresql94-setup initdb

1608182935_5fdaec9751b258b967e36.png!small

二、安全配置

1、查看1)注册并正确设置了服务运行级别以及、2)数据库集群安装成功

1608183463_5fdaeea79150b3027cff0.png!small

2、配置正确的文件掩码  输入: umask 回车

Linux中 umask值默认为002代表文件的所有者和同组用户能够读写文件,其他用户能够读取文件内容。

在这里我们需要将掩码设置为077若掩码设置错误不为 077,将导致其他用户能够读、写甚至执行 postgres 用户创建的文件和脚本。所以必须要正确设置 umask,防止出现用户越权操作。

1608183737_5fdaefb92604f88463a97.png!small

3、日志监控和审计

  1. 开启日志收集器功能  进入数据库 执行命令:

    show logging_collector;

  2. 设置正确的日志格式  执行命令:

    show log_destination;

  3. 设置正确的日志文件权限(默认值为0600) 执行命令:

    show log_file_mode;

  4. 确保“log_truncate_on_rotation”已启用 执行命令:

    show log_truncate_on_rotation;

  5. 设置正确的日志文件大小(当日志文件大小设置为“0”时,将无法创建新的日志文件) 执行命令:

4、用户访问和授权安全配置

撤销过多的函数权限

  1. 进入数据库执行下列语句

    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”,表示该行的函数使用了过多的

    权限。

撤销过多的管理员权限

  1. 确定当前数据库中超级用户所拥有的权限,进入数据库执行命令:

    \du postgres

  2. 查看其他用户的权限,与超级用户进行对比,查询数据库中所有用户,执行命令:

    Select * from pg_user order by username;

  3. 查看用户权限信息,执行命令:

    \du * ; (其中“*”替换为用户名)

5、PostgreSQL 数据库安全配置

  1. 正确配置了“backend”运行时参数,进入数据库执行命令:
    select name,setting,unit from pg_settings where context like ’%backend%’ order by 1;

  2. 开启正确配置ssl(以保证客户端与服务器之间通讯的保密性),进入数据库执行命令:
    show ssl
  3. 确保使用 FIPS 140-2 OpenSSL(如果结果不为“1”,表示该操作系统未启动 FIPS;),进入数据库执行命令:cat /proc/sys/crypto/fips_enabled

安装并正确配置 pgcrypto

在数据库中执行命令:

select * from pg_available_extensions where name=’pgcrypto’;

以上是我对postgresql数据库的浅显理解与说明,希望对读者的你有所帮助。


文章来源: https://www.freebuf.com/articles/paper/258115.html
如有侵权请联系:admin#unsafe.sh