我应该使用虚拟命名主机的Intranet?

我在我们的办公室照顾着内部网,运行Mac OS X Server 10.5.8。 我们有几个应用程序在内部网上运行 – Bugzilla,TWiki,一些自制的应用程序和一些静态页面。 (不要使用OS X协作工具 – 我们在使用TWiki之前就已经使用了)。

有一个主机设置,所有的应用程序运行 – http://intranet/bugzillahttp://intranet/twiki

我刚刚阅读了关于虚拟命名主机的Apache文档中的这一章,我很想去尝试它们。 如果我是对的,我最终会得到像http://bugzilla/http://twiki/http://twiki/ 。 我知道我也必须pipe理DNS区域,以将这些名称添加为别名。

我可以看到的优点是,如果需要的话,可以更容易地将应用程序重新定位到不同的物理主机。 我们有一个为我们的公共网站设置的开发者,所以在那里有一个虚拟的指定主机可以更容易地testing。

另一方面,我也必须pipe理DNS设置,而对于单个主机,只有一个名字可以担心。

这里有什么智慧呢? 这是继续进行的好方法吗?

在我飞跃之前,有没有别的好处和坏处可以分享? 或不。

干杯。

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

以下是我在默认页面上提供的部分文本:

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

为了抵御非常讨厌的目标攻击。 假设有人试图探索我们的系统? 即使对我们中的一些人来说不是特别有可能的,假设可能会有人并养成防御的习惯也是好的做法。

要点是:

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

净结果:如果服务器在给定未知主机名的情况下响应内容,则攻击者可以对任何带有JavaScript的网页做任何事情; 所有他们需要的是网站托pipe和DNS控制,并且有人可以用一个支持JavaScript的浏览器(这是每个主要的浏览器,也是大多数的小型浏览器)来访问他们的网站。

从理论上讲,现在浏览器已经学会了通过仔细应用同源策略来防止这种情况发生。 实际上,浏览器安全漏洞并没有终结,因为每个实现脚本引擎的networking浏览器都会允许这些浏览器端的跨站点脚本(XSS)错误。 因此,经常没有预先警告,前面提到的“一些”浏览器突然变得“多”,甚至“最”。

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

首先,我不认为是你必须担心的select。 如果您后来发现您确定“错误”,则应该不会有太多的麻烦改变结构,并放置一些自动httpredirect。

我自己肯定会去与单独的VirtualHosts。 如果没有别的,因为它提供给我的configuration,日志等额外的选项。

然而,我想这归结于成本效益分析。 你还有多less工作要pipe理DNS? 这个“成本”是否值得VirtualHost给您带来额外的自由? 等式的这一部分很难让外人给你答案。

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

就我个人而言,我会通过虚拟主机分隔东西: http://bugzilla.intranet,http ://twiki.intranet等等。它确实给你提供了将东西更容易地转移到其他主机的选项,但是你可以随时通过在Apache中使用redirect来实现这一点。 虚拟主机还使您能够更紧密地分割目录结构,从而为Web服务器(在Intranet设置中可能不像您所担心的那样)增加一点安全性。

与主站点目录下的简单子目录相比,虚拟主机在testing期间也更容易限制访问。 再次,这可以通过使用简单的.htaccess规则的其他方式来完成,但我更喜欢将事物逻辑上(如果不是物理上)尽可能地分开。

一旦build立起来,VHosts就更容易pipe理,特别是在configuration方面。 你可以调整一个虚拟主机的configuration,而不用担心它影响到你的其他网站。

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

如果你使用SSL(如果你通过webforms通过任何原因发送密码,我当然希望你是),你将需要部署多个SSL证书,每个虚拟主机一个。 但是,如果您使用通配符证书(可以购买或自行生成),则可以将其降至最低。