我是一名软件工程师,除了负责处理部署问题之外,并不一定是操作人员。
我正在开发的 Web 应用程序的各个组件将分布在不同的基于云的虚拟机上。对于基于 node.js 的 http 服务和数据库(每个服务都位于自己的实例中),加密通信的最佳做法或至少是好的做法是什么?
我正在考虑SSH
盒子之间的隧道...你们这些 serverfault 专业人士怎么说?
答案1
这似乎非常接近于购物问题,SF(以及其他 SE 网站)的常见问题解答禁止此类问题。您也没有提到云服务器上将运行什么操作系统;但我还是假设它是 Linux。
话虽如此,我还是会首选 IPSec,因为它内置于 Linux,非常强大,并且在网络层面集成良好(因此您不必处理路由表)。不会有任何身份验证问题,因为这一切都是通过预共享密钥或证书完成的。它与iptables
防火墙集成良好。在长时间网络中断后,它可以很好地恢复。它在启动时通过标准脚本自动启动/etc/rcN.d
。有了 IPSec 隧道,应用程序只需向 IP 地址发送数据包;加密就会全部发生方式从那里往下堆叠。
除此之外,还有 OpenVPN。它比 IPSec 更复杂,但也有许多相同的优点。
如果做不到这一点,那么就使用 ssh 隧道吧——但是一旦网络中断导致它们倒塌,您将永远忙于将它们重新安装。我宁愿做(更多)根管治疗,也不愿使用 ssh 隧道。
答案2
隧道也可能是一个有趣的选择。如果您有多个虚拟机(而不仅仅是两个),为它们设置 VPN 并通过它在节点之间路由所有流量在某种程度上也是明智的 - 它将“永远保护一切” - 如果您添加另一个互连,它将默认加密,而无需设置额外的ssh
/stunnel
转发。强制执行 IPSec 可能是另一种选择。