热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQL本地登录trust、ident认证权限控制

感觉不大可思议,这种登录方式类似Oracle中的sqlplusassysdba命令,不同的是,对于非安装用户以这种方式登录时,Oracle返回

感觉不大可思议,这种登录方式类似Oracle中的 sqlplus / as sysdba命令,不同的是,对于非安装用户以这种方式登录时,Oracle返回

前几天偶然发现任意OS用户无需密码就可以获取PG数据库管理员权限。感觉这个也太BUG了,如果DBA配置不当,岂不是很容易就数据泄露了。

通过合理配置pg_hba.conf,pg_ident.conf禁止非数据库OS用户登录以trust方式登录,对于某些需要支持本地认证的同学可能有用。

前置条件:

1.我的PG数据库是由Linux用户 ithomer创建的私有数据库

2.数据库认证方式pg_hba.conf中,本地用户登录认证方式为trust

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust

问题重现:

1.以任意Linux用户如homerwu登录OS(该用户无任何数据库权限,与ithomer也不在同一组)

2.homerwu用户下载PG客户端可执行程序,以本地套接字认证方式登录PG,指定用户,不指定密码

psql (9.2.3) Type "help" for help. postgres=#

登录成功了。。。直接就取到了ithomer私有数据库的管理员权限,无需密码。

一时以为又出现了重大的安全漏洞,于是发邮件给PG开源社区,得到答复:“trust认证设计就是这样的,并且文档上也说明了”

感觉不大可思议,这种登录方式类似Oracle中的 sqlplus / as sysdba命令,不同的是,对于非安装用户以这种方式登录时,Oracle返回了个认证错误的信息,直接就拒绝掉了。而PG的这种方式,不检查OS用户 名、用户组,直接就通过认证,感觉相当不安全(数据库默认本地用户认证方式就是为trust)。

后来,阅读了PG文档中关于认证部分的文档,改为ident认证方式("Identification Protocol"标识协议在 RFC 1413 里面描述),指定哪些OS用户可以用那些PG用户名登录。对于那种需要直接在sysdba方式登录的用户可能有用。

解决方法:

1.修改ident认证文件pg_ident.conf,设定本地套接字认证方式的OS与PG用户名的映射关系,允许OS用户名为ithomer的,可以用PG 用户名ithomer以本地套接字认证方式登录。(同理,不在映射关系中的用户,就不允许登录。如果不设定pg_ident.conf,则PG默认映射关系为 sameuser,即只能以OS同名的PG用户名登录)

# MAPNAME SYSTEM-USERNAME PG-USERNAME
local_ident_user ithomer ithomer

2.调整pg_hba.conf本地认证方式为ident,映射名为之前设定的MAPNAME local_ident_user(不同PG版本设定方式稍微不同,得参考文档)

# "local" is for Unix domain socket connections only

local all all ident map=local_ident_user

3.重新加载数据库配置

pg_ctl reload

4.OK,现在只允许OS用户ithomer无需密码登录了~

相关的PG客户端登录认证源码位置:

函数:void ClientAuthentication(Port *port)

源文件:src\backend\libpg\auth.c

PostgreSQL 的详细介绍:请点这里
PostgreSQL 的下载地址:请点这里

PostgreSQL缓存详述

Windows平台编译 PostgreSQL

Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)环境的配置与安装

Ubuntu上的phppgAdmin安装及配置


推荐阅读
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
author-avatar
天涯使者2602921991
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有