复杂的服务器/路由器/防火墙问题

复杂的服务器/路由器/防火墙问题

我认为这是一个相当高级的问题,希望有经验的人能帮助我。深呼吸,开始吧:

我们是一个小型但正在成长的网站,希望添加另一台服务器,因此我们将有两台服务器:一台 Web 应用程序服务器和一台数据库服务器。

我们还希望获得硬件防火墙。

全部都是标准的东西。

我们的服务器由一家托管公司托管在其设施之一。我们没有自己的机箱,而是从一家拥有机箱的公司租用机架。当我们获得防火墙和额外的服务器时,我们会再租用几个机架。

我想,这很简单。

现在变得有点复杂:我们需要直接访问两台服务器(即远程桌面访问、SQL 服务器访问、FTP 访问等)。

我们网站只有一个 IP 地址,虽然我们的连接在到达服务器之前要经过路由器,但我们无法访问它。如果我尝试导航到我们的默认网关,则什么也得不到。

在我们当前的配置中添加防火墙的最佳方法是什么?我们希望能够从 eBay 上以低价购买 Firebox X1000 之类的东西,并接收对 www.ourdomain.com 的请求并将其转发到服务器 A(例如 192.168.0.10),以及对 server.ourdomain.com 的请求并将其转发到服务器 B(例如 192.168.0.11)。

这有什么意义吗?我们是不是走错了方向?这样的企业级防火墙真的存在吗?(顺便说一句:2,000 个并发会话是我们目前在网站上看到的最大并发会话数,但显然如果能再增加一些就更好了。)

感谢您的帮助,我完全困惑了,Watchguard 和 Juniper 的员工虽然非常乐于助人,但似乎无法让我放心。


更新:谢谢佐尔达什杰斯帕·莫滕森感谢您以最直接、最实用的方式回答了我的问题。我现在对整个过程有了更多的了解(显然,ah/w 防火墙没有简单的方法可以完成我想要的工作 - 而且现在我对层有了更多的了解,我最初的请求实际上没有任何意义 - 哦)。

最终,我们决定使用第三台服务器作为防火墙,而不是专用的硬件防火墙。这样做的主要原因是,对我们来说,这样做成本要低得多,而且工作内容完全相同。我们已经计划使用第三台服务器来收集我们自己的分析数据,我们预计这项工作会很轻松(它们在客户端触发,然后记录在 SQL 中),因此,将其移至配置的“前端”并将其用作防火墙是合理的。

我们可能还会在其上配置 VPN,以便我们可以通过这种方式管理 Web 应用服务器和 DB 服务器,而不是直接连接到它们。

这意味着我们不需要购买 ah/w 防火墙或租用额外的机架单元。

建议和我们的解决方案之间的唯一区别是,我们将使用 Windows Server 2008,因为 a) 我了解它,并且 b) 我们可以通过我们的 BizSpark 包免费获得它。

再次感谢!

PS - 有人能对这个新防火墙/VPN/(轻量级)SQL 服务器的规格有什么建议吗?(对我来说,快速的处理器和足够的 RAM 似乎很有意义……但我知道什么呢?:)

答案1

当然,这很有意义,而且使用基于 Linux 的防火墙很容易实现。只需设置 Linux 机器,其中一个接口具有公共地址,另一个接口具有私有地址。

然后设置反向代理,例如乌贼。Squid 或者任何您选择的反向代理都可以根据主机头将 http 请求转发到内部系统。

您可以使用 VPN 连接到 Linux 防火墙,以访问大多数其他服务。我认为将 SQL 服务器直接连接到互联网不是一个好主意。如果您必须访问某些服务,您还可以使用 NAT 将您选择的某些端口转发到内部系统上的端口。

答案2

欢迎来到本网站,Django R. :-)

您正在明智地进行事实调查,但显然 IP 网络不是您的主要技能 - 也许聘请附近的顾问是个好主意?这不是很难的事情,但根据您的数据中心 (DC) 要求,解决方案可以采取不同的方向......

我们没有自己的箱子,[...]当我们有防火墙和额外的服务器时,我们会租几个架子。

嗯,这是哪种模式——您自己的硬件托管,还是托管服务(DC 提供硬件和部分或全部系统管理)?如果是托管服务,那么让 DC 以他们通常的方式处理这个问题,这样您的解决方案对 DC 技术人员来说就很“熟悉”。

在我们当前配置中添加防火墙的最佳方法是什么?

一种常见的方法是:

  • 为防火墙外部接口和 DC 路由器创建一个 /30 公共 IP 子网(还有其他方法,这很大程度上取决于 DC 的偏好)。
  • 为您的 Web 服务器提供一个小型的(尽可能大)公共 IP 网络(可能是具有大约 5 个可用 IP 的 /29 子网)。
  • 采用专业的防火墙(Cisco,Juniper,Checkpoint,有很多成熟的产品)来作为网络之间的路由和防火墙,并且为受防火墙保护的网络的远程管理访问提供VPN。
  • 数据库服务器和其他支持服务器位于网络服务器后面的私有 IP 网络和 VLAN 上。
  • 防火墙后面的 KVM-over-IP 或远程管理网关用于远程管理(如果您在私有 IP 范围和 VLAN 上没有任何服务器,则不太重要)。
  • 防火墙后面的可切换 PDU(电源板)用于硬重置崩溃的服务器。

这样,您的面向 Internet 的服务器就有了公共 IP 地址,这简化了故障排除,允许轻松进行远程监控,总的来说很不错。而您的数据库服务器没有公共 IP 地址,这增加了一个间接层,即有助于深度安全。

Firebox X1000 在 eBay 上便宜购买,并接收对 www.ourdomain.com 的请求并将其转发到服务器 A(例如 192.168.0.10),以及对 server.ourdomain.com 的请求并将其转发到服务器 B(例如 192.168.0.11)。

不容易。您的防火墙在第 3 层工作;它无法访问 HTTP(第 7 层),因此它不知道“www.”和“server.”主机名。您只能对 IP 地址和端口号进行静态 NAT。您可以为防火墙的外部接口分配多个 IP 地址,或使用不同的端口号,但在我看来,这是一个麻烦的解决方案。

此外,如果您的 Web 服务器位于内部 IP 上,那么您将始终看到防火墙作为请求的原始 IP,即 Web 服务器日志的意义较小。

你可以预先使用负载均衡器(第 7 层设备),并让其根据 HTTP 服务器名称引导流量。在这种情况下,原始 IP 地址作为 X-FORWARDED-FOR HTTP 标头添加到 HTTP 请求中,如果您的 Web 服务器和 Web 应用程序需要原始 IP,则需要查找此标头。一台 Linux 服务器,带有内置软件防火墙,以及一台 HTTP 服务器,例如nginx 是一个优秀且廉价的解决方案。但是问问你自己,你是否有先前的经验来快速设置这样的服务器,并保持良好的维护......

答案3

棘手的是确定托管公司的拓扑约束以及其他性能要求,即您的站点拥有哪种带宽?您是否可能需要千兆吞吐量?

您实际上谈论的是将专用服务器的 IP 更改为无法路由到的私有范围(分别为 192.168.0.10 和 11),然后使用另一个具有多个执行端口转发的公共 IP 地址的共置服务器来前置它们。因此,服务器 A 和 B 将通过 192.x 子网在其本地交换机上进行通信,并且所有入站互联网流量都将穿过路由器/防火墙 C。您将分别从路由器 C 到 A 和 B 进行 NAT,并且您的网站将正常解析为 C 上的其中一个 IP 地址。这是一个基本设置,Firebox 可能可以做到,尽管我认为您最好使用基于 Linux 的服务器来进行路由或使用像 Vyatta 这样的打包解决方案。

关键是要与您的托管服务商核实,因为他们可能不允许这样做,如果他们不允许,那么您的选择可能仅限于基于主机的防火墙或其他相对不安全的解决方案。您的托管服务提供商可能还为想要处理自己的路由和防火墙的人提供不同的设置,值得与他们核实。

答案4

您没有提到您想要什么样的防火墙行为。您也没有提到您在服务器上获得了什么样的流量。所以,首先要做的事情是……

  1. 您提到了网站。这意味着端口 80 上有流量。您使用 SSL 吗?那么端口 443 上也有流量。邮件呢?服务器上的用户呢(我真的非常希望不是)?

那么,除了网站之外,服务器上还有哪些与网络相关的“事情”?谁需要访问服务器,以及访问的目的是什么?(例如,您是否需要 FTP 访问、Telnet 访问、SSH 访问……?)

  1. 一旦您列出了需要通过防火墙的东西,那么您就需要决定想要什么样的防火墙行为。

您是否只需要端口限制?例如,如果您只使用端口 80/443 和 SSH(端口 22)(无 telnet,无 FTP),那么您可以阻止除这些端口之外的所有端口的访问。添加电子邮件,您需要打开更多端口。

您想要状态数据包检查吗?如果您只是对上述 3 个端口进行防火墙保护,并且没有邮件服务器,那么您可能不需要。但是 - 如果您的服务器(哎呀!)或邮件服务器上有用户,那么您的防火墙“问题”就会大得多,包括白名单、黑名单、状态数据包检查、病毒检查程序等。

如果您只想在除关键的 3 个端口 (80/443/22) 之外的所有端口上进行端口阻塞,那么一台运行 OpenBSD(在我看来,比任何 Linux 机器都安全得多)并运行 PF 的服务器可能就足够了。将 Web 服务器置于其自己的“不可路由”静态 IP 上,并让 OpenBSD 机器的 PF 根据需要路由流量。简单、便宜且简单。

如果您需要具有状态包检查、电子邮件和垃圾邮件过滤等功能的“功能齐全的”防火墙,那么我建议您投资购买 SonicWall 的更强大的产品。

干杯,

-R

相关内容