我应该为内部网使用虚拟命名主机吗?

我应该为内部网使用虚拟命名主机吗?

我负责管理我们办公室的内联网,运行的是 Mac OS X Server 10.5.8。我们在内联网上运行了几个应用程序 - Bugzilla、TWiki、一些自制应用程序和一些静态页面。(不要使用 OS X 协作工具 - 我们在 TWiki 推出之前就使用了它们。)

设置了一个主机,所有应用程序都在该主机下运行 - http://intranet/bugzilla,,http://intranet/twiki等等。

我刚刚阅读了 Apache 文档中有关虚拟命名主机的章节,我很想尝试一下。如果我是对的,我最终会得到像 、 等这样的 URL http://bugzilla/http://twiki/我知道我还必须管理 DNS 区域才能将这些名称添加为别名。

我能看到的优势是,如果需要,可以更轻松地将应用程序迁移到不同的物理主机。我们确实为我们的公共网站设置了一个开发环境,因此在那里拥有一个虚拟命名主机可以更轻松地进行测试。

不利的一面是,我还必须管理 DNS 设置,而对于单个主机来说,只需要担心一个名称。

大家认为这有什么道理?这是个好办法吗?

在我做出决定之前,还有其他优点和缺点有人愿意分享吗?或者没有。

干杯。

答案1

对于包含敏感数据的内部网,您不仅要启用虚拟命名主机,还要确保默认站点指向一个虚拟站点,该虚拟站点指示联系谁来报告错误配置。

这是我在默认页面上显示的部分文本:

为什么会发生这种情况,而不是让我看到默认站点?

防御一种非常恶劣的针对性攻击。假设有人试图侵入我们的系统?即使对于我们中的某些人来说可能性不大,但假设可能有人存在并养成防御习惯也是一种很好的做法。

关键点如下:

获得允许使用您注册的任何域名的 Web 托管很容易。这适用于所有人,包括攻击者。DNS 托管可通过点击界面获得。任何值得担心的攻击者都会花费最少的时间来至少了解主机名到 IP 地址的映射。JavaScript 很常见。框架也很常见。浏览器中的 XSS 错误也是如此。攻击者使用框架。顶部框架从 www.evil.example.net 加载。其中一个子框架从 victim.evil.example.net 加载。对于某些浏览器,父框架将能够使用 JavaScript 来控制子框架,因为它们都在同一个域中,对吗?好吧,那又怎样?攻击者控制 evil.example.net 的 DNS,因此他们可以让“受害者”指向他们想要的任何 IP 地址。包括我们的一个 IP 地址,即使是 RFC 1918 空间中的地址。

最终结果:如果服务器在给定未知主机名时响应内容,则攻击者可以使用 JavaScript 对任何网页进行任何操作;他们所需要的只是网络托管和 DNS 控制,并引导某人使用启用了 JavaScript 的支持框架的浏览器访问他们的网站(每个主流浏览器以及大多数小浏览器也是如此)。

理论上,如今的浏览器已经学会了通过谨慎应用同源策略来防止这种情况。实际上,对于每个实现脚本引擎的网络浏览器来说,浏览器安全漏洞源源不断,这些漏洞允许这些浏览器端跨站点脚本 (XSS) 错误。因此,之前提到的“一些”浏览器经常会在没有事先警告的情况下突然变成“许多”甚至“大多数”。

由于整个攻击可以在保存要保护的内容的 Web 服务器上被消除,而不必担心每个客户端浏览器的补丁状态或未公开披露的错误,并且修复通常简单且轻松,因此所有 Web 服务器最好小心,只响应他们明确知道的主机名。这种理想情况可能并不总是可行的,但对于典型的 Web 服务器来说却是可行的。

答案2

首先,我认为你不必太担心这个选择。如果你后来发现你的决定是“错误的”,那么改变结构并设置一些自动 http 重定向应该不会太麻烦。

就我个人而言,我肯定会选择单独的 VirtualHosts。至少,因为它在配置、日志等方面为我提供了额外的选项。

不过,我想这还是要进行成本效益分析。管理 DNS 需要您做多少工作?VirtualHost 给您带来的额外自由是否值得您付出这些“成本”?外行很难给您答案。

答案3

我认为这通常是一个美学问题。

就我个人而言,我会根据虚拟主机来划分事物:http://bugzilla.intranethttp://twiki.intranet等等。它确实为您提供了以后更轻松地将内容重新定位到其他主机的选项,但您始终可以在事后通过使用 Apache 中的重定向来实现这一点。虚拟主机还允许您更紧密地划分目录结构,这增加了小的提高 Web 服务器的安全性(在内部网设置中,这对您来说可能不是什么大问题)。

在测试期间,与主站点目录下的简单子目录相比,虚拟主机也更容易限制访问。同样,可以使用简单的 .htaccess 规则以另一种方式完成此操作,但我更喜欢尽可能多地在逻辑上(如果不是物理上)分开。

答案4

一旦设置完成,VHost 绝对更易于管理,尤其是在配置方面。您可以调整一个 vhost 的配置,而不必担心它会影响其他网站。

如果你设立了一个通配符 DNS 条目,例如 *.intranet,您不必担心维护多个 DNS 名称。

如果您使用 SSL(如果您出于任何原因通过 Web 表单传输密码,我当然希望您这样做),您将需要部署多个 SSL 证书,每个虚拟主机一个。但是,如果您使用通配符证书,则可以将这种情况降到最低,您可以购买或自行生成通配符证书。

相关内容