为什么我应该在一个会话中允许网站上的多个IP地址?


18

希望我的问题与本网站的范围相符。

我正在开发CMS。目前,我登录的用户已锁定到该会话的IP地址。不幸的是,我的用户群中有一小部分经常在两个或多个IP地址之间跳转。他们中的大多数人可能使用负载平衡器。从技术上讲,没有必要将用户会话锁定到一个IP地址。我没想到客户端会在我的网站上为单个页面请求在多个IP地址之间切换。

我现在想知道,让我的客户不断在页面请求的IP地址之间跳转会有什么风险(例如,xxx.xxx.xxx.xxx请求CSS文件,而yyy.yyy.yyy请求JavaScript文件。 yyy)?我通常应该允许还是禁止?


39
您甚至不需要负载平衡器来切换IP。在地铁上用手机连接时,火车行驶时每隔几分钟可能会获得一个不同的IP,然后当目的地切换到WiFi时,您又会获得一个不同的IP。
whatsisname

13
也适用于在不同位置之间移动的笔记本电脑(例如,首页>工作>星巴克)。另外:IPv6随机地址(IPv6 SLAAC隐私扩展)。
marcelm

从直觉上讲,我希望客户跳到不同的源Ips上,而不仅仅是“偶然地”引起问题。
汤姆·H

1
如果 您正在开发将安装在您所控制的网络中的Web应用程序,或者您已知道您可能会出于安全考虑决定这样做,因为您可能会说“在这种情况下,由于用户必须从他们的WS访问它,并且之间没有负载平衡器或其他东西可能会改变他们的IP” ...在这种情况下,您甚至可以跟踪用户IP,因为他们的WS总是拥有相同的IP(或可能每隔几个月才更改一次)
Bakuriu

1
@TomH不,绝大多数Web应用程序都不关心您的IP地址,它们将通过新的TCP连接在HTTP请求中接受相同的cookie。只有痴呆且设计不当的废话才能将会话锁定到IP或连接。
纳文

Answers:


35

我的用户群的一小部分不断在两个或多个IP地址之间跳转。

原因

假设您的用户没有主动使用匿名服务来隐藏其真实IP地址...:

我看到的大多数公司示例都是由较大的公司和某些ISP使用代理服务器群集造成的,每个代理服务器具有不同的外部IP地址,并且用户请求在该群集上实现负载平衡。

您可能会看到Dual Stack用户同时通过IPv4和IPv6发出请求,并在两个协议RFC 8305之间切换以获取后续请求。

另一种情况是当我处于Wi-Fi接入点的极限范围,而我的设备在Wi-Fi和蜂窝数据之间“随机”切换时。

解决方案

在第一种情况下,您可能仅通过考虑前三个八位位组就无法在会话中保持此类IP地址“安全性”,因为通常这样的代理服务器群集都在一个小的子网中,并且具有相邻的IP地址。

在第二种和第三种情况下,您甚至将看到来自完全不相关的提供商的完全不同的客户端IP地址。

不要将您的会话绑定到特定的IP地址,这可能会破坏用户体验,而不是提供实际的改进的安全性。


27
正是由于这些原因,没有人将会话与IP地址联系在一起。
迈克尔·汉普顿

33
从来没有将会话绑定到IP地址,80年代结束了!我的ISP为电话提供了完整的/ 64网络,浏览器在其中疯狂地跳来跳去。
bjoster

6
除此之外,多路径TCP也越来越普遍。
CanPoyrazoğlu

3
如果要为技术用户制作CMS,则可以在登录页面上放置“仅将此会话限制为您的ip(xxx.yyy.zzz.iii)”复选框
Ferrybig

6
@bjoster,这是因为IPv6隐私扩展,它会不断切换地址,因此网站无法仅靠您的ip来跟踪您(这不是IPv4的问题,因为多个人位于同一地址后面)
Ferrybig

9

我现在想知道,让我的客户不断在页面请求的IP地址之间跳转会有什么风险(例如,xxx.xxx.xxx.xxx请求CSS文件,而yyy.yyy.yyy请求JavaScript文件。 yyy)?我通常应该允许还是禁止?

主要风险是恶意用户劫持了会话。如果可以锁定一个或一小部分IP地址,则可以阻止来自完全不同IP地址的用户劫持会话。

问题是某些用户合法地这样做。无论他们使用的是负载平衡代理还是处于两个无线访问点(或其他任何访问点)的边缘,他们都使用多个IP地址。因此,您几乎必须允许这些用户使用它。很难说出哪些用户需要多个IP地址,除非他们从多个IP地址请求。

减少这种影响的一种方法是使用HTTPS。然后,恶意参与者必须具有一种方法来破坏安全层以及会话cookie。在不安全的连接上,恶意参与者可能只是使用网络检查来破坏会话cookie。但是,通过HTTPS,同一恶意行为者需要访问对话的一端。而且,如果恶意行为者具有此功能,则不必使用其他IP。

TL; DR:通常应该允许同一用户来自不同IP地址的请求。发生这种情况有正当的理由。而是使用HTTPS来防止此类攻击。


4

允许我的客户不断在页面请求的IP地址之间跳转的风险是什么?

从安全角度来看-零风险。

现在,从实际的角度来看。这意味着您不能将某些类型的算法用于安全性或DoS保护。

限制用户请求的一种简单方法是按IP地址进行跟踪。由于不需要与应用程序服务器进行交互,因此可以使用较低级别的服务来执行此操作。像Apache的mod_evasive这样的软件可以做到这一点。您仍然可以使用这些技术,但是用户更改IP地址将降低其有效性。再说一次,用户仍然会切换IP地址,因此这些技术从未真正有效。

一个相关但不同的用例是限制失败的登录尝试。这是为了防止暴力破解密码。但是同样,如果用户更改IP地址,您将无能为力。一个非常认真的黑客甚至不会使用自己的计算机。他只是在僵尸网络上花了一些时间(或使用自己以前感染的僵尸网络)并通过其他10,000人的PC(IP地址)连接到您的服务。由于它是预先登录的,因此与限制用户的IP地址并没有真正的关系,但要记住这一点。


1

用户跳至新IP地址的原因有多种。

  1. IPv6隐私扩展,如今许多IPv6客户端将在局域网的/ 64内跳来跳去。
  2. 负载均衡的代理,客户端请求被路由到具有单独IP的多个代理之一。
  3. 在NAT池中,边界nat配置有多个IP地址,并从池任意分配IP /端口组合到客户端TCP连接。
  4. 用户在当今电话常见的不同网络或网络的各个部分之间移动。
  5. 双栈用户可能会在IPv4和IPv6之间跳动。

我现在想知道,让我的客户不断为页面请求在IP之间切换会带来什么风险?

将客户端sessoins锁定到IP的优势在于,它使会话窃取攻击变得更加困难。如果攻击者拥有一种机制,可以让他们窃取客户端cookie,但不允许他们从客户端IP地址建立与服务器的连接,则IP锁定将阻止它们窃取会话。

不利的一面是,正如您所说,这会导致某些用户的会话中断,而这些用户无缘无故地认为自己的会话无效。

如今,大多数站点似乎都认为破损胜过这种锁定的好处。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.