modsecurity:阻止一分钟内访问 404 页面超过 10 次的 IP 地址

modsecurity:阻止一分钟内访问 404 页面超过 10 次的 IP 地址

我们正在使用 mod_security,目前遇到了一些机器人的问题。

我想阻止在一分钟内访问 404 页面超过 10 次的 IP 地址。

如何做到这一点?如何轮询 404 返回代码?


如何计算第 3 阶段中的错误 404 返回代码?


RESPONSE_STATUS 可能无法在嵌入模式下按预期工作,因为 Apache 有时会以不同的方式处理某些请求,并且不会调用 ModSecurity(所有其他模块)。

我怎样才能每次都确定地获得 RESPONSE_STATUS?第 5 阶段?

答案1

Mod_security 应该已经附带了一些脚本,由 OWASP 项目提供,用于阻止机器人。你检查过它们了吗?你必须启用 modsecurity_crs_35_bad_robots.conf。你可以从 OWASP 项目网站下载该文件:

https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

您也可以在那里找到说明。

来自自述文件:

== base_rules/modsecurity_crs_35_bad_robots.conf ==  Detection of Malicious Robots
    - Unique request attributes: User-Agent header, URL, Headers
    - RBL Check of IP addresses
    - Detection of security scanners
    - Blocking can confuse security testing software (WAFW00f)

答案2

对核心规则集的提示很好,但你应该使用的实际规则是

modsecurity_crs_11_brute_force.conf

此规则特别适用于您的情况:保护特定 URL 不被暴力破解,并封锁发起暴力攻击的 IP。您可以在设置文件中配置此规则

modsecurity_crs_10_setup.conf

tx.brute_force_protected_urls在此安装文件中修改规则中的变量900014您想要保护的 URL 如下:

SecAction \
  "id:'900014', \
  phase:1, \
  t:none, \
  setvar:'tx.brute_force_protected_urls=#/error/404.html#, #/error/403.html#', \
  setvar:'tx.brute_force_burst_time_slice=60', \
  setvar:'tx.brute_force_counter_threshold=2', \
  setvar:'tx.brute_force_block_timeout=300', \
  nolog, \
  pass"

变量tx.brute_force_burst_time_slice指定必须超过一定阈值的时间(以秒为单位)。正如我理解你的问题一样,使用 60。变量tx.brute_force_block_timeout定义暴力破解者 IP 被封禁的时间。变量tx.brute_force_counter_threshold有点棘手。它定义了在被阻止之前您可以访问 URL 的频率。它不是确切的数字,但使用值 2 或 3,您应该会为阻止 10 次请求规则获得相当不错的结果。

相关内容