我开始觉得抓狂了,因为我已经用 20 种不同的方法搜索过这个问题,却一无所获。
我有一个网站,偶尔需要根据 IP 地址屏蔽用户,以防止滥用。使用 IPv4 时,这种方法效果很好,因为用户从其 ISP 获得的整个连接都被屏蔽了。(请注意,我还对 VPN 连接采取了不同的处理方式,以防止他们简单地跳转到 VPN。)
然而,IPv6 对此造成了真正的阻碍,因为每个用户并不是每次都从其 ISP 获得一个 IP。我看到过 IPv6 地址滥用的模式似乎很相似,但我不确定如何确切地判断它们是否来自同一个用户。
我知道每个 ISP 的做法可能略有不同,但在实践中有没有一种足够好的方法可以识别用户?
答案1
最安全的解决方案是自动扩展。例如:
- 从阻止单个地址开始
- 如果你发现 /64 块中超过 X 个地址存在违规,则整个 /64
- 如果你发现 /56 块中超过 Y 个地址存在违规,则整个 /56
- 如果你发现 /48 块中 Z 个以上地址的违规行为,则整个 /48
缺点是你需要多次违规才能完全阻止它们。优点是你可以最准确地阻止它们。你还增加了内部绕过阻止的难度。
还要记住,地址并不总是属于同一个用户。在家里,我的 IPv4 地址由几个用户 (DS-Lite) 共享,并且每天都在变化。IPv6 前缀也会随时间而变化,旧地址随后可以分配给不同的用户。因此,不要过分看重 IP 地址作为标识符的长期可用性。