apache mod_evasive 与 mpm_prefork 设置一起工作

apache mod_evasive 与 mpm_prefork 设置一起工作

我尝试找到有关此问题的所有信息,并且了解当服务器处于 mpm_prefork 模式(而不是工作模式)时 mod_evasive 不工作的问题。

不过,我可以通过降低

StartServers
MinSpareServers
MaxSpareServers

在配置文件中。所以我的问题是:如果我配置mpm_prefork.conf

StartServers 1
MinSpareServers 0
MaxSpareServers 0
MaxRequestWorkers 150
MaxConnectionsPerChild 0

这基本上等同于一个实例正在运行(就像‘worker’一样),在这种情况下 mod_evasive 仍会运行,就好像服务器作为‘worker’运行一样?

这样的设置是否存在任何潜在问题?(例如许多合法请求未被处理等)?还有其他选项可以满足我的基本要求吗(mod_security 是否有用?)

我知道这不是减轻攻击的最佳方法,但我只是在寻找针对自定义爬虫的基本安全性,这些爬虫偶尔会使我的服务器每秒超载数十个请求。

答案1

看起来 mod_evasive 使用的计数器未在进程之间共享。因此每次 mpm_prefork 产生新进程时,计数器都会回到 0。

使 mod_evasive 与 mpm_prefork 协同工作的一种方法是:

  • StartServers = MaxRequestWorkers = MaxSpareServers(因此所有进程都在启动时创建,不会创建或终止任何新进程)
  • MaxConnectionsPerChild 0(因此进程不会被回收。然而,如果发生内存泄漏,这可能会很危险,所以您应该使用一个较大的值而不是 0)
  • 将 DOSPageCount 和 DOSSiteCount 除以服务器进程数

这仅基于我在自己的服务器上观察到的行为,应该仔细测试。

相关内容