日安,
我在Tomcat前面运行一个Apache2服务器,我需要在Apache2层上实现一个DDOS保护机制。我有两个候选者:具有OWASP核心规则集的mod_evasive和mod_security2。
Mod_security已经被安装用于整体保护,但问题是:除了mod_security之外,是否值得仅仅为了DDOS (它有什么主要优点)或/experimental_ rules /目录(modsecurity_crs_11_dos_protection.conf)中的OWASP crs规则提供相同的保护而添加mod_evasive?或者这只是一个偏好的问题?正常情况下,这些网站的流量不是很高。
马丁
发布于 2015-04-20 16:53:30
最好将mod_evasive或fail2ban与mod_security并行使用。
mod_security已经注意到的事情很少,特别是对于DDOS,但是mod_evasive或fail2ban将很方便地处理不需要的多个请求,从而阻塞服务器。
发布于 2021-02-14 23:31:37
我知道这是一个古老的问题,但由于它没有一个公认的答案,这里是两个工具之间的比较。在网上搜索一下,你几乎总能找到安装这两个软件的建议。有人可以随意告诉我我错了,但我认为这是浪费资源。在我看来,当前版本的带有CRS3.3.1的ModSecurity 2.9.3可以取代运行mod_evasive。我认为它做得更好,更具可配置性,尽管两者略有不同。
默认情况下,mod_evasive将阻止来自同一Apache站点的IP地址的请求,当该IP达到50/秒时。它也有一个单独的设置,用于阻止来自IP地址的对网站上“同一页”的请求。默认值为2/秒,对于大多数站点来说,这将是一个很低的值。默认的阻塞周期是10s (在我看来是最低的)。当然,所有这些都可以配置。mod_evasive和mod_security之间的主要区别在于,默认情况下,mod_evasive还会阻止“同一页面”请求。我还应该提到,mod_evasive使用Apache子进程号来确定请求是否计入IP地址。如果Apache产生一个新进程,那么这些请求将不会计入块。此外,即使在阻塞之后,一些请求也可能会被忽略。您需要确保Apache具有较高的MaxRequestsPerChild值。
默认情况下,安装了核心规则集的mod_security不会防御拒绝服务攻击。您必须通过取消注释规则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个请求的突发,每个突发都在60s内。但是,如果设置为'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的逐页请求功能。
https://stackoverflow.com/questions/19631981
复制相似问题