17.6. 防止服务器欺骗

服务器在运行时,它不可能为恶意用户采取正常的数据库服务器。然而,当服务器关闭时, 它是一个本地用户可以欺骗正常的服务器通过启动它们自己的服务器。欺骗的服务器可以读取客户端发送的密码和查询语句, 但是不可能返回任何数据,因为PGDATA这个目录是安全的,因为它有目录权限的。 欺骗是可能的,因为任何用户都可以启动数据库服务器;客户端无法识别一个无效的服务器,除非它专门配置。

local连接上防欺骗服务器,最简单方法是使用一个Unix域套接字目录 (见unix_socket_directory),该目录只有信任的本地用户有写权限。 这可以防止恶意用户在该目录中创建自己的套接字文件。如果你担心有些应用程序可能引用/tmp下的套接字文件, 因此防止欺骗是脆弱的, 在操作系统启动时创建一个符号链接/tmp/.s.PGSQL.5432指向一个重定位的套接字文件。 你也可能需要修改/tmp下的清除脚本防止删除这个符号链接。

在TCP连接上防欺骗服务器,最好的解决方案是使用SSL证书,并且确保客户检查服务器的证书。 要做到这点,必须配置为仅接受hostssl连接(Section 19.1),并且有SSL的服务器server.key(密钥) 和server.crt(证书)文件(Section 17.8)。 TCP客户端连接必须使用sslmode=verify-caverify-full,并且安装有相应的根证书文件(Section 31.1)。