下面是以下内容
visitor --> Cloudflare proxy --> Front --> Back ^^^^^^ -->iptables(fail2ban)-->nginx-->
我想要做的是通过401拒绝追踪bruteforcing IP,并禁止这个IP做任何后续的请求。
FE BE | | .. | | | POST /oauth/token | |-------------------->| | 401 (access denied) | |<--------------------| .. | | | |
但是,FE上唯一的入站地址是cloudflare的IP,而不是访问者的IP。 因此,我不能通过iptable禁止传入的IP。
我只看到两种方式:
其中一个可行的是? 如果不是,可以select吗?
由于TCP会话在Cloudflare的服务器上被终止,这意味着你不能直接或通过iptables来禁止你的客户,除非你要用iptables来禁止searchstring的麻烦,例如: iptables rule to block all web请求到domain.com 。
即使在这种情况下,来自客户端的一些请求也会从云端caching,毕竟这是使用CDN的原因之一,所以您甚至不会看到请求。
你可以做的是基于X-Forwarded-For内容在nginx上进行匹配,并对其应用速率限制,更多详细信息请查看这个答案:
nginx速率限制与X-Forwarded-For头