我可以很好地连接到一个远程PostgreSQL服务器,该服务器对pg_hba.conf中的几个IP有连接限制,但是如果您在postgresql.conf文件中listen_addresses
设置为"*"
,就足够了吗?
该文件表明该参数可以采用逗号分隔的IP地址列表,但是如果我这样做,我将失去远程连接的能力。
postgresql-8.4.9 Rhel
我可以很好地连接到一个远程PostgreSQL服务器,该服务器对pg_hba.conf中的几个IP有连接限制,但是如果您在postgresql.conf文件中listen_addresses
设置为"*"
,就足够了吗?
该文件表明该参数可以采用逗号分隔的IP地址列表,但是如果我这样做,我将失去远程连接的能力。
postgresql-8.4.9 Rhel
listen_addresses = 'localhost, 192.168.1.10'
listen_addresses = '192.168.0.10, localhost, 192.168.1.8'
。
Answers:
listen_addresses控制服务器将在哪个IP上应答,而不控制服务器将允许从其进行身份验证的IP。使用它是完全合理和正常的,listen_addresses '*'
因此服务器将接受分配给postgresql服务器主机上接口的任何ip上的传入连接,而使用pg_hba.conf可以在更细粒度的级别上控制访问服务器将接受来自哪个IP的IP。特定的数据库和用户。
pg_hba.conf
控件登录更加明确。服务器仍然在任何侦听接口上接受TCP / IP连接,并与连接的客户端进行对话。它很快得出结论,客户端不在允许的IP范围内,并关闭连接。这意味着除其他外,预身份验证漏洞利用可以pg_hba
排除在外,但如果Pg根本不监听漏洞利用的接口,则无法使用。防火墙规则而非listen_addresses
答案就是答案。
listen_addresses
,但预授权漏洞利用还是有可能的pg_hba
?换句话说,Postgres服务器使用客户端来识别listen_addresses
规则,或者该listen_addresses
规则是否阻止了服务器-客户端的参与?
/etc/postgresql/11/main/postgresql.conf
是listen_addresses
在Ubuntu上添加的地方
dbenhur指出,将listen_addresses设置为'*'是正常的。另外,您可以使用iptables之类的工具来拒绝访问某些远程IP之外的端口。您甚至可以做到这两者:安全性冗余不一定是一件坏事(尽管依靠IP地址安全性并不是很好)。