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

Posted

技术标签:

【中文标题】在防御 DDOS 时,Apache2 mod_evasive vs mod_security 与 OWASP crs?【英文标题】:Apache2 mod_evasive vs mod_security with OWASP crs when protecting against DDOS? 【发布时间】:2013-11-07 01:25:11 【问题描述】:

早安,

我在 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 ) 提供同样的保护?还是只是偏好问题?这些网站的流量通常不是很高。

马丁

【问题讨论】:

【参考方案1】:

最好将 mod_evasive 或 fail2ban 与 mod_security 并行使用。

mod_security 已经处理了一些事情,尤其是对于 DDOS,但是 mod_evasive 或 fail2ban 将派上用场,以解决不需要的多个请求以阻塞服务器。

【讨论】:

【参考方案2】:

我知道这是一个老问题,但由于它没有公认的答案,这里是两个工具之间的比较。在线搜索您几乎总能找到安装两者的建议。有人可以随时告诉我我错了,但我认为这是对资源的浪费。 在我看来,带有 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 的逐页请求功能。

【讨论】:

以上是关于在防御 DDOS 时,Apache2 mod_evasive vs mod_security 与 OWASP crs?的主要内容,如果未能解决你的问题,请参考以下文章

Linux下防御/减轻DDOS攻击 DDoS deflate

DDoS攻击与防御

DDoS攻击与防御

DDoS攻击都有哪些防御方法?怎么做好防御工作?

如何有效防御DDOS攻击?

DDOS攻击网站能不能被防御呢