我有一个由apache fastcgi模块托管的Perl API。它在任何给定时间都会保持10个实例。
我想实施速率限制,以防止恶意脚本攻击它或Dos攻击。
到目前为止,我已经在堆栈的不同点调查了一些选项,但都没有达到预期的效果。
Iptables - 我发现我可以使用防火墙来限制请求,但是一个关键问题是iptables没有多少返回客户端。由于这是一个API,因此它希望返回HTTP状态或自定义结果。
Apache - 我尝试了 mod_evasive ,因为它似乎非常适合我需要的东西。在某种程度上,是的,这个模块非常好,并具有我想要的定制能力。但是在测试中,此模块不足以防止脚本。它只对浏览器发起的请求非常有效。
缓存:: FastMmap - 我在阅读this SO question后尝试了此方法。 在我意识到这对我来说不是一个合适的解决方案之前,我已经摆弄了一段时间。我正在使用FastCGI来保持perl API的实例。我需要在该级别实现FastMmap,因为它与父子进程一起使用。
有没有办法可以在IP基础上限制FastCGI脚本,我可以返回一个合适的错误&速率限制足够快,以防止基于脚本的攻击?