4

我有一个托管多个不同站点的网络服务器。有些供外部客户使用,有些仅供内部使用。对于内部站点,我有一个 .htaccess 文件,它拒绝所有 IP 地址,但允许任何以 10.25.xx 开头的 IP 地址

IndexIgnore *
deny from all
allow from 10.25.

这意味着只有我们本地网络的 PC 才能访问服务器。即使客户的计算机上的本地 IP 地址为 10.25.xx,我的网络服务器也应该只能看到他们的公共 IP,对吗?

我没有将文件上传到此目录的表单,因此它们不应覆盖 .htaccess 文件。

我的问题是:攻击者有什么办法可以绕过这些安全方法?如果是这样,我可以采取哪些预防措施来确保不会发生这种情况?

4

3 回答 3

5

我认为 Sébastien Renauld 的回答表明,IP 黑/白列表对于保护您的网站并不完美。您的应用程序应该已经足够安全,可用于公共可访问的部署。无论如何,IP 限制确实有助于限制应用程序上的攻击向量。

请记住,IP 欺骗在技术上是可行的,但很难执行。

从网络外部,黑客必须至少绕过以下障碍。

  • 任何删除错误 IP 数据包的 ISP 逻辑(也就是具有与发送方 IP 不同的 IP 地址。)
  • 您身边丢弃这些数据包的任何防火墙/网关/路由器。通常内部和外部网络是分开的,并且数据包不容易在这些网络之间路由。
  • HTTP 使用 TCP 协议,其中包括作为连接设置一部分的三向握手。这意味着发送者也需要确认连接。简而言之:此连接设置使用任意数字来同步服务器和客户端通信。黑客需要猜测这个数字,并在正确的时刻发送。

攻击者需要绕过的障碍比我刚才总结的要多得多,比如阻止本地合法客户端不干扰攻击。(想一想对被欺骗的服务器 IP 地址的响应会去哪里,以及被冒充的客户端会做什么。)

欺骗 IP 地址的更简单方法是从网络本身内部进行。好吧,如果这已经成为可能,那么您可能还有其他一些事情要先研究 :)

我希望您会看到,如今黑客执行这种攻击实际上是不可行的。安全性是所需努力和攻击者获得的满意度之间的平衡。

因此,我会说 IP 白名单,在 Sébastien Renauld 建议的本地网络绑定旁边,是一种足够好的安全实践。您仍然需要假设攻击者可以访问您的内部网络,因此还应该检查您的网站和服务器本身的安全性。

于 2013-05-31T12:51:37.767 回答
4

您问题的底线是:永远不要依赖 IP 的价值

为了演示和说明这一点,本文解释了 IP 地址实际上是如何附加到数据包的。实际上,它只是源的字节列表和目标的字节列表。任何人都可以有效地修改这些(顺便说一下,这是 NAT 所做的事情,否则 NAT 遍历将不起作用)。这意味着,如果它们可以被修改,它们就可以被欺骗。

有一些方法可以部分地避免这种情况,但所有方法都依赖于启发式方法。例如,最简单的规则是,如果一个数据包来自您的 WAN 接口但声称来自192.168.0.1,那么您就知道发生了什么事。市场上的一些安全设备正是这样做的:它们过滤掉他们认为可疑的东西。

在您的情况下,有一种方法可以避免这一切。我假设您使用的是 Apache。如果你是,而不是将你绑定VirtualHost到所有接口(在 Apache 中是默认的:)*:80,将它绑定到特定的本地接口(10.0.0.0:80或等效接口)。这将迫使 Apache 仅侦听该接口上的 ping,如果运行 unix/linux,该接口与其他接口隔离并保证是不同的。这使您可以有效地拥有一个仅限 LAN 的网站。

于 2013-05-29T21:47:21.007 回答
1

是的,有。IP欺骗是可能的。请记住,每个人都可以更改他发送的数据包的元数据。

除了我担心的完全不同的身份验证方法外,几乎没有任何预防方法可以帮助您。您无法仅通过 .htaccess 黑名单((或者更确切地说是白名单,在您的情况下)来实现有效的安全性。但是,入口过滤是必须的。

于 2013-05-29T21:40:59.537 回答