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

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

2.确保已禁用“ 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();

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

debug_print_plan = 'off'

并重启

3.确保已禁用“ 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(); 3.重复执行步骤1,查看状态是否为off(关闭) 请注意: 如果您的postgresql版本在9.3(或更早),请修改配置文件 postgresql.conf 中配置 debug_print_rewritten= 'off'`

并重启

4.确保已禁用“ 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();

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

debug_print_parse = 'off'

并重启

5.确保正确设置了日志目标

描述

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'

6.密码复杂度检查

描述

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

加固建议

修改shared_preload_libraries参数

$ vi postgresql.conf

新增配置项

shared_preload_libraries = 'passwordcheck'

切换到数据库启动用户:如 u -postgres

执行命令

pg_ctl -D $PGDATA restart

使配置生效(如未配置系统变量pg_ctl 默认在安装的bin目录下)

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

7.确保撤销过多的管理特权

描述

关于PostgreSQL管理SQL命令,仅超级用户应具有

特权提升。 PostgreSQL常规或应用程序用户不应具备此能力

创建角色,创建新数据库,管理复制或执行任何其他操作

被视为特权。 通常,普通用户只应被授予

与管理应用程序相对应的特权:

?DDL(创建表,创建视图,创建索引等)

?DML(选择,插入,更新,删除)

此外,为DDL和DML创建单独的角色已经成为最佳实践。 给定一个

名为“工资单”的应用程序,将创建以下用户:

?payroll_owner

?payroll_user

DML特权仅授予“ payroll_owner”帐户,而DML

特权将仅授予“ payroll_user”帐户。 这样可以防止意外

通过作为应用程序运行的应用程序代码创建/更改/删除数据库对象

“ payroll_user”帐户

加固建议

1.进入postgresql数据库,执行select usename from pg_user;,查看用户

2.执行\du 用户名;,分别查看用户权限,要求除超级用户,审计员,管理员外,尽可能的降低普通用户的权限

3.确保只有一个超级用户(例:postgres),普通用户的权限应比超级用户更低

4.找到您需要限制的用户(username),执行以下一条或多条命令

8.禁止以root用户直接启动数据库

描述

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

加固建议

建议以postgres用户启动

9.建议修改数据库的默认端口

描述

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

加固建议

在配置文件(postgresql.conf)中修改端口 如:

port = 5433

修改后连接时也需更改对应端口

10.确保文件权限掩码正确

描述

始终使用默认权限集创建文件。文件权限可以是

通过应用称为umask的权限掩码进行限制。 Postgres用户帐户

应该使用umask 077拒绝对除所有者以外的所有用户帐户的文件访问。

加固建议

whoami
postgres
$ cd ~
$ ls -ld .{bash_profile,profile,bashrc}
$ echo "umask 077" >> .bash_profile
$ source .bash_profile
$ umask
0077

如上述示例,在~/.bash_profile, ~/.profile , ~/.bashrc的任意一个文件末尾添加umask 077并执行 source ~/.bash_profile | ~/.profile | ~/.bashrc使其生效在postgres用户下输入umask查看返回值验证,弱返回值为077或0077,则符合要求

PostgreSql数据库安全加固的更多相关文章

  1. Redis缓存数据库安全加固指导(二)

    背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一 ...

  2. Redis缓存数据库安全加固指导(一)

    背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一 ...

  3. POSTGRESQL同步——SLONY-I配置

    来自:http://bbs.chinaunix.net/thread-955564-1-1.html 参考文档 http://bbs.chinaunix.net/viewthr ... page%3D ...

  4. 加固mysql服务器

    实验环境:CentOS7 [root@~ localhost]#yum -y install mariadb-server [root@~ localhost]#mysql_secure_instal ...

  5. Mysql安全配置

    相关学习资料 http://drops.wooyun.org/tips/2245 http://www.cnblogs.com/siqi/archive/2012/11/21/2780966.html ...

  6. Mysql安全配置【转】

    相关学习资料 http://drops.wooyun.org/tips/2245 http://www.cnblogs.com/siqi/archive/2012/11/21/2780966.html ...

  7. 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

  8. linux加固目标和对象

    一.  linux加固目标和对象 项目加固的目标:  解决今年信通公司在风险评估工作中发现的linux服务器存在的安全问题,并结合南方电网安全基线标准修订版部署相关要求,将linux服务器的安全状况提 ...

  9. Drupal 网站漏洞修复以及网站安全防护加固方法

    drupal是目前网站系统使用较多一个开源PHP管理系统,架构使用的是php环境+mysql数据库的环境配置,drupal的代码开发较为严谨,安全性较高,但是再安全的网站系统,也会出现网站漏洞,dru ...

随机推荐

  1. psutil模块详解

    import psutil#1.系统性能信息模块psutilmem = psutil.virtual_memory()print(mem)#svmem(total=8442675200, availa ...

  2. mysql 数据库中 int(3) 和 int(11) 有区别么???

    今天去面试的时候 面试官问到了这个问题:int(3) 和 int(11) 有什么区别?? 当时一听有点蒙,(不知道为什么蒙,后来回来想想可能是觉得考官怎么会问这么简单的问题呢,所以蒙了),当时我的回答 ...

  3. 说透 Docker:虚拟化

    本章内容将讲解 Docker 虚拟化.虚拟化本质.namespace.cgroups. Docker 虚拟化 关于Docker 本小节将介绍 Docker 虚拟化的一些特点. Docker 是一个开放 ...

  4. [atARC111F]Do you like query problems

    (以下修改指1和2类操作,询问指3类操作,操作指修改或询问) 注意到总方案数确定,那么不妨求出答案的期望,再乘上方案数即为答案 (这里从期望的角度考虑只是为了描述方便,并没有太大的实际意义) 设$E( ...

  5. 填坑总结:python内存泄漏排查小技巧

    摘要:最近服务遇到了内存泄漏问题,运维同学紧急呼叫解决,于是在解决问题之余也系统记录了下内存泄漏问题的常见解决思路. 本文分享自华为云社区<python内存泄漏排查小技巧>,作者:luti ...

  6. ant命令

    ant -help 帮助(ant -h) ant -projecthelp 列举xml中重要的部分 (ant -p) ant -version 查看版本 ant -diagnostics 打印所有环境 ...

  7. 【Cloud Computing】Hadoop环境安装、基本命令及MapReduce字数统计程序

    [Cloud Computing]Hadoop环境安装.基本命令及MapReduce字数统计程序 1.虚拟机准备 1.1 模板机器配置 1.1.1 主机配置 IP地址:在学校校园网Wifi下连接下 V ...

  8. 洛谷 P5332 - [JSOI2019]精准预测(2-SAT+bitset+分块处理)

    洛谷题面传送门 七月份(7.31)做的题了,题解到现在才补,不愧是 tzc 首先不难发现题目中涉及的变量都是布尔型变量,因此可以考虑 2-SAT,具体来说,我们将每个人在每个时刻的可能的状态表示出来. ...

  9. Python基础之基本运算符

    目录 1. 算数运算符 2. 比较运算符 3. 赋值运算符 4. 逻辑运算符 5. 身份运算 6. 运算符优先级 1. 算数运算符 常用算术运算符使用方法如下: x = 5 y = 2 a = x + ...

  10. JForum论坛安装以及部署

    转载链接:https://blog.csdn.net/jhyfugug/article/details/79467369 首先安装JForum之前,先准备好安装环境Windows7+JDK+Tomca ...