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