在.htaccess中阻止IP地址有多安全?

时间:2013-05-29 21:36:36

标签: apache security .htaccess

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

IndexIgnore *
deny from all
allow from 10.25.

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

我没有将文件上传到此目录的表单,因此他们无法覆盖.htaccess文件。

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

还有许多障碍比我刚刚总结的需要被攻击者绕过的障碍,比如阻止本地合法客户端不干扰攻击。 (想想服务器的欺骗性IP地址的响应将去哪里,以及模拟客户端将做什么。)

欺骗IP地址的更简单方法是在网络内部进行欺骗。好吧,如果已经可以做到这一点,你可能还需要先了解一些事情:)

我希望你会发现黑客现在几乎不可能进行这种攻击。安全性是所需努力与攻击者获得的满意度之间的平衡。

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

答案 1 :(得分:4)

您问题的最后一行是:不要, EVER ,依赖于知识产权的价值

为了演示和说明这一点,this document在此解释了IP地址实际上如何附加到数据包。实际上,它只是源的字节列表,以及目标的字节列表。任何人都可以有效地修改它们(顺便说一句,除其他事项外,这是NAT的作用,否则NAT遍历将不起作用)。这意味着,如果它们可以被修改,它们就会被欺骗。

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

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

答案 2 :(得分:1)

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

除了我认为完全不同的身份验证方法之外,几乎没有任何预防方法可以帮助你。您无法通过.htaccess黑名单(或者说在您的情况下为白名单)实现有效的安全性。但是Ingress filtering是必须的。

相关问题