Apache2 mod_evasive vs mod_security与OWASP crs在防范DDOS时?

时间:2013-10-28 10:10:26

标签: apache tomcat ddos owasp mod-security

美好的一天,

我在Tomcat前面运行Apache2服务器,我需要在Apache2层上实现DDOS保护机制。我有两个候选人:mod_evasive和mod_security2以及OWASP核心规则集。

已经安装了Mod_security以进行全面保护,但问题是:除了mod_security之外,还需要为DDOS添加mod_evasive(它有什么主要优点)或/ experimental_rules /目录中的OWASP crs规则(modsecurity_crs_11_dos_protection.conf) )提供相同的保护?或者这只是一个偏好问题?这些网站的流量通常不是很高。

马丁

2 个答案:

答案 0 :(得分:4)

将mod_evasive或fail2ban与mod_security并行使用​​会很好。

mod_security已经很少关注,特别是对于DDOS,但mod_evasive或fail2ban可以方便地解决不需要的多个请求来阻塞服务器。

答案 1 :(得分:0)

我知道这是一个老问题,但由于它没有公认的答案,这里是两个工具之间的比较。在线搜索您几乎总能找到安装两者的建议。有人可以随时告诉我我在这里错了,但我认为这是在浪费资源。 在我看来,当前版本的带有 CRS 3.3.1 的 ModSecurity 2.9.3 可以代替运行 mod_evasive。我认为它做得更好,而且更易于配置,尽管两者略有不同。

mod_evasive 默认情况下,当来自同一 Apache 站点的 IP 地址达到 50 次/秒时,将阻止来自该 IP 地址的请求。它还有一个单独的设置来阻止来自 IP 地址对站点上“同一页面”的请求。这默认为 2/秒,这对于大多数站点来说会很低。默认阻塞时间为 10 秒(我认为很低)。当然,所有这些都可以配置。 mod_evasive 和 mod_security 之间的主要区别在于 mod_evasive 在默认情况下还会阻止“同一页面”请求。我还应该提到 mod_evasive 使用 Apache 子进程号来确定请求是否针对 IP 地址进行计数。如果 Apache 产生一个新进程,那么这些请求将不计入一个块。此外,即使在一个块之后,一些请求也可能会漏掉。您需要确保 Apache 具有较高的 MaxRequestsPerChild 值。

安装了核心规则集的

mod_security 在默认情况下无法防御 DOS 攻击。您必须通过取消注释规则 900700 在 crs-setup.conf 文件中专门启用该功能:

SecAction \
 "id:900700,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:'tx.dos_burst_time_slice=60',\
  setvar:'tx.dos_counter_threshold=100',\
  setvar:'tx.dos_block_timeout=600'"

它的作用如下:默认情况下,当客户端在 60 秒内发出 100 个或更多请求时,这将阻止来自特定 IP 地址的请求。因此,例如,如果客户端在 30 秒内发出 100 个请求,它们将被阻止 600 秒。还有其他设置会影响这一点:如果 setvar:tx.paranoia_level=1 则两次突发 100 个请求,每次都需要在 60 秒内发生阻塞。但是,如果您设置 'setvar:tx.paranoia_level=2' 或更高,则只需要一次突发。 ModSecurity 还添加了另一个很好的默认功能:它从请求计数器中排除静态文件。在规则 900260 中,默认扩展名是:setvar:'tx.static_extensions=/.jpg/ /.jpeg/ /.png/ /.gif/ /.js/ /.css/ /.ico/ /.svg/ /.webp/' 这有助于防止在客户端请求静态文件时意外阻塞,因为这些不需要来自服务器的大量资源。这样我们就可以专注于 DOS 攻击,这些攻击实际上可能会降低服务器速度,同时减少误报。

结论

如果想通过特定页面请求轻松控制阻塞,或者您需要快速、轻松地设置 DOS 保护,请启用 mod_evasive。我还要补充一点,配置 mod_evasive 以更新您的 iptables 并在命中时运行脚本可能更容易一些。

如果您想对如何阻止 DOS 攻击以及在阻止期间发生的事情的各个方面进行更多控制,那么您实际上只需要 mod_security。如果您只关心 DOS 攻击,那么 mod_security 可能有点矫枉过正。就 DDoS 攻击而言,我认为这两个工具在默认设置下同样有用,因为它们每个都通过 IP 地址存储哈希表。现在,如果您想为 mod_security 编写特定规则,那么您阻止的方式和内容没有限制,如果您认为需要,您甚至可以重新创建 mod_evasive 的逐页请求功能。