我们正在使用mod_security,目前我们有一些机器人的问题。
我想在一分钟内阻止访问404个页面的IP地址超过10次。
如何才能做到这一点? 我怎样才能轮询404返回码?
如何计算阶段3中的错误404返回码?
RESPONSE_STATUS在embedded模式下可能无法按预期工作,因为Apache有时会以不同的方式处理某些请求,而不会调用ModSecurity(所有其他模块)。
我怎样才能得到RESPONSE_STATUS每一次肯定? 阶段5?
Mod_security应该已经有一些由OWASP项目提供的脚本,这些脚本阻塞了机器人。 你检查出来了吗? 您必须启用modsecurity_crs_35_bad_robots.conf。 您可以从OWASP项目站点下载该文件:
https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
说明也可以在那里find。
从自述文件:
== 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)
核心规则集的提示是好的,但你应该使用的实际规则是
modsecurity_crs_11_brute_force.conf
这个规则特别针对你的情况: 保护某些URL不被强制,并阻止启动这个powershell攻击的IP 。 您可以在安装文件中configuration此规则
modsecurity_crs_10_setup.conf
在这个设置文件中,修改规则900014中的variablestx.brute_force_protected_urls , 并使用要保护的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"
variablestx.brute_force_burst_time_slice指定必须超过某个阈值的时间量(以秒为单位) 。 根据我的理解您的问题,请使用60.variablestx.brute_force_block_timeout定义了brute forcer的IP被阻止的时间 。 variablestx.brute_force_counter_threshold有点棘手。 它定义了您在被阻止之前可以多久访问一次url。 这不是确切的数字,但值2或3,你应该得到一个相当不错的结果为10后请求规则。