问题:某些个人的 ISP 有时无法解析我的 LAMP 安装上的虚拟主机之一。Ubuntu 10.04 LTS,Apache 2。我正在寻找可以通过 IP 实现的黑客攻击。
背景:这台机器上有多个虚拟主机:
default.example.com subdomain1.example.com subdomain2.example.com subdomain3.example.com 问题域.example.com
它们实际上位于:
var/www/default.example.com var/www/subdomain1.example.com var/www/subdomain2.example.com var/www/subdomain3.example.com var/www/problemdomain.example.com
偶尔,一些 ISP 的用户无法访问其中一个域名,今天是
问题域.example.com
但是这些用户可以通过 IP 地址路由到服务器并接收默认的服务器根登录页面:
123.123.123.123
这将把他们带到“default.example.com”
注意:我希望他们到达的目录位于当前目录之上,并且目录遍历已关闭。
想法1: 如果他们可以获取服务器的 IP,并且我创建了一个登录目录 (default.example.com/foo),我能否以某种方式将他们重定向到服务器上的另一个文件夹,从而将他们带到正确的位置?我该怎么做?* 请记住,DNS 不起作用,所以我认为 301 重定向不起作用,因为它只会告诉他们的浏览器查找他们无法解析的“problemdomain.example.com”。
普通话重述: 有没有办法告诉 apache“嘿,如果有人在主服务器的默认网页登陆页面上请求目录‘foo’:
123.123.123.123/foo
然后将它们带到服务器上的另一个虚拟主机
problemdomain.example.com/foo
或者,有没有类似使用的方法:
123.123.123.123:虚拟主机名
还是其他“强制”措施?对于我来说,要求遇到问题的最终用户在其系统上添加主机条目是不现实的。只是这样,对于那些确实有问题的罕见情况,我可以说一些比“只需在另一个网络连接上尝试一台计算机”更有帮助的话。
非常感谢您的帮助。
答案1
既是也不是。您的第一个普通话示例很简单 - 您可以使用 URL 重写。第二个普通话示例可能不可行,但无论如何也没有必要。
但是,这取决于每次都是同一个域是问题域 - 如果这是真的,最简单的解决方法是将“问题”域放在列表的首位。如果 Apache 没有获取主机信息,则默认为该 IP 列出的第一个域。如果问题域不同,您只能获取更多 IP 地址并在每个 IP 上放置一个域(这违背了基于名称的虚拟主机的目的),将责任重新放在客户端连接上(您说过您想避免这种情况),或者拥有一个“默认”域,其中只有一个简单的登录页面,其中包含指向特定页面的链接,这些页面可以通过名称或 URL 重写进行区分。哪一个会给您带来最少的长期麻烦?
答案2
我认为你无法自动完成你想做的事情。当客户端想要连接到主机时,它会将 problemdomain.example.com 解析为 IP 地址。它会联系 IP 地址上的服务器。作为对话的一部分,它会传递一个 Host 标头
Host: problemdomain.example.com
服务器使用 Host 标头来决定如何将请求路由到相关的虚拟主机。
在您的情况下,对解析器的请求失败,因此客户端不知道主机要联系服务器,所以它无法联系,呃,就是这样。