选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

17.6. 防止服务器欺骗 #

当服务器正在运行时,恶意用户不可能取代正常的数据库服务器。然而,当服务器关闭时,本地用户却可能通过启动自己的服务器来冒充正常服务器。这个伪造服务器可以读取客户端发出的密码和查询语句,但由于PGDATA目录仍然受目录权限保护,它无法返回任何真实数据。之所以会出现这种冒充,是因为任何用户都可以启动一个数据库服务器;而客户端除非经过专门配置,否则无法识别服务器是否为伪造。

防止local连接被欺骗的最简单办法,是使用一个 Unix 域套接字目录(unix_socket_directory),并且只允许可信的本地用户对该目录拥有写权限。这样可以防止恶意用户在其中创建自己的套接字文件。如果你担心某些应用程序仍会引用/tmp中的套接字文件,因此仍然容易受到欺骗,那么可以在操作系统启动时创建一个符号链接/tmp/.s.PGSQL.5432,使其指向迁移后的套接字文件。你可能还需要修改/tmp清理脚本,防止该符号链接被删除。

要防止 TCP 连接被欺骗,最好的解决方案是使用 SSL 证书,并确保客户端检查服务器的证书。为此,服务器必须配置为只接受hostssl连接(见第 19.1 节),并拥有 SSL 的server.key(密钥)和server.crt(证书)文件(见第 17.8 节)。TCP 客户端必须使用sslmode=verify-caverify-full连接,并安装了相应的根证书文件(见第 31.1 节)。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。