所以我发现服务器试图强制执行我的 API,所以我想阻止它们......但是我的具体情况使得使用互联网上常见的解决方案变得困难。
1) 我不想只是限制速率,如果任何 IP 尝试使用 API 进行身份验证并在约 6 小时内失败超过 X 次,我想阻止他们。再也没有答案了。甚至没有 429 条回复
2)我正在使用cloudflare,因此我需要使用CF IP标头
3)我无法基于 iptables 或类似解决方案阻止流量,因为与我的服务器通信的唯一 IP 是 cloudflare IP
4)如果身份验证失败,API 会生成 nginx 错误,2: no such file or directory
如果这有助于解决某些问题
鉴于我的情况,有哪些可能的解决方案?
答案1
您可以做几件事,通过开发用于监控滥用行为的 Cloudflare Worker,您可以在攻击进入您的网络之前将任务外包给 Cloudflare:https://workers.cloudflare.com/
如果您想在您的终端上保持监控,您应该使用 nginx Real IP 模块来确保您的日志中有正确的 IP,Cloudflare 在此处有说明:https://support.cloudflare.com/hc/en-us/articles/200170786-Restoring-original-visitor-IPs-Logging-visitor-IP-addresses-with-mod-cloudflare-
一旦您的访问日志中包含了用户的真实 IP,您就可以使用 fail2ban 等程序在 Cloudflare 端设置禁令(使用他们的 API)或者使用 Deny 指令在 nginx 中维护阻止列表。