【问题标题】:Is it possible to spoof HttpRequest.UserHostAddress (REMOTE_ADDR)?是否可以欺骗 HttpRequest.UserHostAddress (REMOTE_ADDR)?
【发布时间】:2011-05-31 15:41:42
【问题描述】:

作为保护 Web 应用程序的附加措施,我正在考虑实施客户端 IP 白名单。

首选方式似乎是:在路由器上执行此操作。但是,在我的场景中,这是一个重大的管理负担。

我想在网络服务器上的软件中执行此操作。这有什么不安全的原因吗?

【问题讨论】:

    标签: asp.net security iis


    【解决方案1】:

    HttpRequest.UserHostAddress 是从最终用户发送到您的服务器的 http 请求中的源 IP 号检索的。一个http请求被分成若干个ip包,源ip号是每个ip包中的一个字段。网络上的任何人都可以在源字段中使用任何 ip 号制作 ip 数据包并将其发送给您。

    但是,它的实用性受到了一些限制。当你响应一个 http 请求时,响应会发送到请求中的源 ip 号。攻击者将不会收到响应,除非他能够在响应到达接收者的途中截获响应。例如:如果攻击者向您发送带有用户名和密码的登录请求,那么您可能会使用 cookie 进行响应。但是由于 cookie 是发送到伪造的源 ip 的,所以攻击者永远看不到它。

    IP 欺骗在技术上并不难,但由于攻击者不会收到响应,因此它主要用于可以通过单个请求完成的攻击。

    路由器和防火墙也可以保护您免受带有虚假源 IP 的恶意 IP 数据包。大多数防火墙都会阻止来自外部网络的数据包,其源 IP 来自内部网络。

    【讨论】:

      【解决方案2】:

      路由器级别的客户端 IP 白名单是为了将流量排除在网络之外,因为如果主机不是来自正确的邻居,您不希望主机与您的服务器通信。这可以保护服务器免受任何只需要访问网络堆栈的操作系统级别的攻击。

      您实际上所说的是使用 IP 白名单作为服务器上身份验证的另一个因素。它不会帮助您抵御具有正确攻击的黑客,因为未经授权的客户端仍然能够在网络堆栈级别访问您的服务器。

      这两种方法都容易受到 IP 欺骗,而防范这种情况是您的网络团队的责任。在适当安全的网络上,您无需过多担心恶意欺骗。

      因此,从安全角度来看,使用客户端 IP 白名单并没有什么坏处,但最终,您可能会浪费时间来维护 ACL。如果您想控制哪些主机可以连接到您的应用程序以限制您的安全配置文件,那么可以使用防火墙或至少一个路由器访问列表。

      编辑:如果路由和交换更改对您的情况而言过于繁琐,您应该考虑使用操作系统级别的防火墙。


      回应评论:防火墙白名单会更安全,因为它能够防止操作系统级别的攻击。

      如果您不关心操作系统级别的攻击,那么这部分并不重要,最终答案是肯定的,欺骗攻击是可能的,不,在 IIS 或 ASP.NET 中您无能为力.

      所以我仍然会得出结论,这可能是在浪费您的时间以及需要等待被添加到白名单的用户的时间。但从安全角度来看,它可能不会伤害您,并且可能会阻止一些攻击者将您的服务器配置为软目标。

      【讨论】:

      • 在这种情况下,我对操作系统级别的攻击并不感兴趣——正如您所说,它们是网络团队的责任。主要场景是防止随意的未经授权的登录尝试。 (为什么)在这种情况下防火墙白名单更安全吗?谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2015-09-15
      相关资源
      最近更新 更多