更具体地说,我计划建立一个负载平衡的电子商务网站。两个负载均衡器将接受来自管道的 https 连接,然后按照 ssl 的性质,它们将需要验证连接,解密它,然后将未加密的请求转发到应用程序服务器。
在一个安全的专用网络中,一切都会很好,但是我想用虚拟机(slicehost)运行这个设置。理论上,机器应该在专用网络上,但是其他人的机器(切片)可以以某种方式窥探网络内的流量是可行的。我需要假设网络不安全。
所以。我曾考虑过使用 ssh,有人建议我使用 VPN(我之前没有设置过,也不太了解)。如果我使用 ssh,我将需要持续监控连接并确保其正常运行。
我想我想知道其他人是怎么做的?
越简单越好(即可能出错和需要监控的事情越少)
这是一个linux设置。我正在考虑使用磅作为负载均衡器。仍然需要在这方面做一些测试。也开始阅读nginx。
OpenVPN是 IPSEC 的一个非常好的和简单得多的“替代方案”。OpenVPN 是一个功能齐全的开源 SSL VPN 解决方案,存在于用户空间中。多平台(windows、linux、osx ..)包括所有主要的 Linux 发行版。
示例设置:
首先我们生成静态密钥(不安全但简单):
(通过 scp 将此密钥复制到您的客户端/服务器)
配置服务器(/etc/openvpn/server.conf)
配置客户端(/etc/openvpn/client.conf)
确保服务器上的 UDP 端口 1194 已打开。
在客户端/服务器上运行:
要验证 VPN 是否正在运行,您应该能够从服务器 ping 10.8.0.2 并从客户端 ping 10.8.0.1。
对我来说,这听起来像是 IPSEC 的工作。
IPSEC 已“融入”现代 Linux 发行版。它对应用层完全透明并且“正常工作”。我会走这条路线进行需要保持私密的机器内通信。
使用预共享密钥的“主机到主机”IPSEC 配置非常简单。例如,在 CentOS 中,已经有一种方法可以将这些主机到主机的连接配置为正常的“网络脚本”功能的一部分(参见http://www.centos.org/docs/4/4.5/Security_Guide/ s1-ipsec-host2host.html)。
根据您使用的 Linux 发行版,它可能很容易配置,或者您可能需要做一些工作。您不需要任何 VPN 启动/关闭脚本、隧道监控脚本等——它们都将在第 3 层“正常工作”。对我来说,这听起来像是一个成功的解决方案。
编辑:
我经常大量使用 OpenVPN,所以我不是在这里“反对”OpenVPN,但作为解决您的特定问题的方法,我认为它不是最佳的,原因如下(按照我的关注程度):
它创建了一个并行网络基础设施。您必须确保您的主机内通信使用正确的目标 IP 地址,以便通信通过 VPN 而不是公共 IP 网络传输。如果您打算使用 DNS 名称,这可能会特别有趣,因为您需要对您的 DNS 做一些事情(创建 hostA-secure、hostB-secure 等主机名,或者创建一个始终返回当查询来自“安全”主机时,“安全”IP 地址)以确保您将名称解析为“安全”VPN IP。
OpenVPN 是点对点的。您需要配置 OpenVPN 隧道网格或通过单个主机路由 OpenVPN 流量“集线器和辐射”。IPSEC 完全是点对点的,您可以轻松地使用 IPSEC 和动态密钥配置网状拓扑。使用预共享键控需要更多工作,但您也可以通过这种方式配置网状拓扑。
OpenVPN 是一个需要启动的用户级程序。这不是什么大不了的事,但是 IPSEC 存在于内核空间中,并且在配置后“正常工作”而无需启动任何用户态程序。
我不明白为什么人们认为 IPSEC 很难配置。具有预共享密钥的 IPSEC 在现代发行版上与具有静态密钥的 OpenVPN 一样容易配置(如果不是更多的话——通常您的发行版会自动处理启动/停止它)。使用 PKI 的具有动态密钥的 IPSEC 需要与使用基于证书的身份验证配置 OpenVPN 几乎相同的步骤。
OpenVPN 创建具有第二组 IP 地址的并行网络拓扑的复杂性将是我的杀手锏。我希望我的主机能够使用与他们接收不安全通信的相同 IP 地址进行交谈,“自动”透明地加密彼此之间的连接。
编辑2:
对于海报所描述的内容,我认为 IPSEC 听起来是最好的解决方案(出于我上面描述的原因)。如果发帖人谈论的是与其他操作系统的互操作,而不仅仅是为了保护某些主机之间的通信,我会特别推荐 OpenVPN。
我同意将各种 Linux IPSEC 实现与其他任何实现互操作是困难的(实际上,几乎任何 IPSEC 与几乎任何其他 IPSEC 实现互操作也是如此)。我已经设法让 Cisco PIX 到 OpenSWAN 隧道工作,并且我在来自 Windows 机器的静态密钥隧道方面取得了一些成功。我什至从未接触过任何 Juniper 设备,所以我根本无法与之交谈。
我使用过 OpenSWAN(实际上是 FreeSWAN),我同意这些文档很难。自从 RedHat “选择” KAME 工具来管理 Linux 2.6 内核 IPSEC 堆栈以来,我已经停止关注 OpenSWAN。在过去几年中,我很少需要主机到主机 IPSEC(在 RHEL 或 CentOS 上——我在 Linux 世界中真正使用过的所有这些),KAME 工具都做得很好。我一直在成功使用 RHEL 的“官方”文档和 KAME 项目站点的文档。
对于一个简单的、自我监控的 ssh 隧道,我使用autossh。但是请记住,对于高吞吐量,您可能需要花时间配置完整的 VPN,因为 ssh 在大量流量下表现不佳。