↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
历史版本。 PostgreSQL 12 已结束支持。 2024-11-21. 请参阅 当前版本手册.

18.7. 防止服务器欺骗 #

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

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

对于 local 连接,另一个选项是让客户端使用 requirepeer,指定连接到该套接字的服务器进程必须由哪个用户拥有。

要防止 TCP 连接上的欺骗,要么使用 SSL 证书并确保客户端检查服务器证书,要么使用 GSSAPI 加密(如果它们分别用于不同连接,也可以两者都用)。

要通过 SSL 防止服务器欺骗,服务器必须配置为仅接受 hostssl 连接(第 20.1 节),并且具备 SSL 密钥和证书文件(第 18.9 节)。TCP 客户端必须使用 sslmode=verify-ca 或 verify-full 连接,并安装适当的根证书文件(第 33.18.1 节)。

要通过 GSSAPI 防止服务器欺骗,服务器必须配置为仅接受 hostgssenc 连接(第 20.1 节),并对这些连接使用 gss 认证。TCP 客户端必须使用 gssencmode=require 连接。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.