8

再会,

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

Mod_security 已经安装用于整体保护,但问题是:除了 mod_security 是否值得为 DDOS 添加 mod_evasive(它是否有任何主要优势)或 /experimental_rules/ 目录中的 OWASP crs 规则(modsecurity_crs_11_dos_protection.conf)提供一样的保护?还是只是偏好问题?这些网站通常不是很高的流量。

马丁

4

2 回答 2

5

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

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

于 2015-04-20T08:53:30.057 回答
1

我知道这是一个老问题,但由于它没有公认的答案,这里是两个工具之间的比较。在线搜索您几乎总能找到安装两者的建议。有人可以随时告诉我我错了,但我认为这是对资源的浪费。在我看来,带有 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 产生一个新进程,那么这些请求将不计入一个块。此外,即使在阻塞之后,某些请求也可能会通过。MaxRequestsPerChild

默认情况下,安装了核心规则集的mod_security不能防止 DOS 攻击。crs-setup.conf您必须通过取消注释规则 900700在文件中专门启用该功能:

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 的逐页请求功能。

于 2021-02-14T15:31:37.460 回答