NGINX 暴力检测隐藏在 NAT 后面的设备。仅阻止特定设备,而不是所有共享同一 IP 的设备

NGINX 暴力检测隐藏在 NAT 后面的设备。仅阻止特定设备,而不是所有共享同一 IP 的设备

我有一个 AWS EC2 Ubuntu 实例,其中 NGINX 服务器配置为在端口 80 上监听 IP 地址 50.0.0.1(示例)。

我在 index.php 中有一个登录页面。我想为该页面配置 nginx 以进行暴力破解检测和预防(主动阻止)。

但是如果客户端节点隐藏在 NAT 后面,如我的架构所示: 建筑学根据我的简单脚本,该脚本会在 5 次尝试失败后阻止 IP 地址,它会阻止 IP 1.2.3.4(请参阅建筑学),因此与攻击者共享 IP 1.2.3.4 的其他合法用户也会被屏蔽。

有什么办法可以只阻止攻击者的请求而不阻止其他合法请求?我想到的一些解决方案是:

  • 阻止 IP-SourcePort 组合而不是仅仅阻止 IP,但攻击者可以随机化每个请求的源端口。
  • 实现 STUN 服务器或 TURN 服务器

实现这一目标的最佳解决方案是什么?

答案1

除非每个攻击请求都有特定的指纹(这不太可能,因为他们想要隐藏自己),否则除了速率限制之外你什么也做不了,这也会影响所有合法客户端。

相关内容