![如何在没有静态 IP 的情况下安全地访问生产数据库](https://linux22.com/image/727456/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E9%9D%99%E6%80%81%20IP%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%AE%89%E5%85%A8%E5%9C%B0%E8%AE%BF%E9%97%AE%E7%94%9F%E4%BA%A7%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我在 AWS EC2 上运行一个小规模应用程序,并且其上安装了 PostgreSQL。
我想远程访问这个生产数据库,但也想保证它的安全,而且我不确定我所做的是否足够。
在处理公司项目时,我只是将公司的静态 IP 列入白名单并阻止所有其他 IP,但在这种情况下,我无法使用静态 IP,而且我的 IP 经常更改。
到目前为止,我已经
- 更改了 DB 的默认端口
- 设置 cloudflare(向我无法访问该服务的国家/地区显示挑战)
- 使用随机密码生成器创建密码
但我觉得我可以做得更多,而且因为我的数据库包含一些敏感的个人信息,我觉得我应该做得更多。
我还能做什么来进一步保护我的数据库?
答案1
通过 SSH 隧道连接 Postgresql
ssh -L 5432:/var/run/postgresql/.s.PGSQL.5432
并本地连接到127.0.0.1:
psql -h 127.0.0.1
在服务器上,您可以禁用 postgresql 的所有监听端口,只保留 ssh 端口打开。
还要确保 SSH 不能用于密码访问,只能用于 ssh 密钥访问。
答案2
确保安全的最佳方法是使用 VPN 客户端。
在 VPN 客户端配置文件中,您可以选择可以打开的端口。
这样,服务器就永远不会出现在互联网上,并且您到该服务器的流量在隧道内被加密。