![仅允许通过 VPN 访问 Postgres 远程虚拟机](https://linux22.com/image/773867/%E4%BB%85%E5%85%81%E8%AE%B8%E9%80%9A%E8%BF%87%20VPN%20%E8%AE%BF%E9%97%AE%20Postgres%20%E8%BF%9C%E7%A8%8B%E8%99%9A%E6%8B%9F%E6%9C%BA.png)
我缺乏有关 VPN 的知识。给定的是带有 Postgresql 的远程 VM。服务器具有公共 IP。
是否有可能(以及如何):
- 数据库级别:仅当用户激活了公司 VPN 时才允许连接到 postgres(pg_hba.conf)(<- 如何识别?)
- 服务器级别:关闭公共 IP,但如果用户在 VPN 内则允许访问服务器?(这有意义吗?)
我更加困惑了,因为远程虚拟机与公司网络无关。谢谢大家的指导!
答案1
很有可能。
数据库级别:仅当用户激活了公司 VPN 时才允许连接到 postgres(pg_hba.conf)(<- 如何识别?)
非常简单 - 添加一行来匹配特定数据库和用户连接的 VPN IP 前缀。
服务器级别:关闭公共 IP,但如果用户在 VPN 内则允许访问服务器?(这有意义吗?)
确实如此。方法相同,但位置不同(较低)OSI 模型层:过滤掉从外界到 tcp/5432 的任何连接(如果有多个,则将过滤规则应用于服务器上的外部接口),并且只允许来自 VPN 前缀的连接。
为了进一步加强安全性,让 PostgreSQL 实例仅绑定到特定接口(如果服务器有多个)PostgreSQL 配置文件使用listen_addresses
指令(指定特定地址而不是*
)。