如何仅在检测中启用 ModSecurity 规则?

问题描述 投票:0回答:1

我在办公室使用 ModSecurity,但在检测中仅用于创建日志和监控日志,

但现在有一个规则,我想强制在仅检测中激活。

我要激活的规则就是这个。

SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@rx (?:bzip2|expect|glob|ogg|(?:ph|r)ar|ssh2(?:.(?:s(?:hell|(?:ft|c)p)|exec|tunnel))?|z(?:ip|lib))://" \

我在谷歌上搜索,但没有任何相关内容,仅在检测中激活规则。

Chat GPT 告诉我添加

ctl:ruleEngine=on
但这仍然无法按预期工作

当我尝试卷曲

http//localhost:8080/index.php?phar://malicious
时,它会发出
200 - OK

我想记住,我正在寻找激活规则,但保留仅检测

我要激活的规则:来自 Github CoreRules 的规则,其中包含规则的所有信息

apache mod-security web-application-firewall
1个回答
0
投票

我在 Stack OverFlow 的其他地方找到了这个

您有几个选择:

  1. 使用异常评分和 sql_injection_score 值 OWASP CRS 设置 SQLi 规则。

将模式设置为仅检测。将您的异常评分值设置得非常 high 添加一条新规则,如果 sql_injection_score 高于 a 则阻止 一定数量。这可以通过像这样的额外规则来实现:

 SecRule tx.sql_injection_score "@gt 1” 
     "id:9999,\
     phase:5,\
     ctl:ruleEngine=on \
     block" Setting the ”@gt 1” to an appropriate threshold.

OWASP CRS 也为其他类别设置类似的变量。

  1. 单独加载规则以及转动规则之前和之后的规则 发动机打开和关闭。

在一个阶段内,规则按照指定的顺序执行。你可以用这个 具有如下配置:

SecRuleEngine DetectionOnly Include rules/other_rules_1.conf Include
 rules/other_rules_2.conf SecAction “id:9000, phase:2, ctl:
 ctl:ruleEngine=on” Include rules/sqli_rules.conf SecAction “id:9001,
 phase:2, ctl: ctl:ruleEngine=off” Include rules/other_rules_3.conf
 Include rules/other_rules_4.conf However if a category contains
 several phases then you’ll need to add several SecActions - one for
 each phase used.
  1. 通过更改要包含的操作来激活您想要的规则 打开规则引擎。

将模式设置为仅检测。使用 SecRuleUpdateActionById 添加 ctl:ruleEngine=on 到您想要的规则。如果有就好了 是 SecRuleUpdateActionByTag 或 SecRuleAddActionByTag 但有 不是(尽管过去已经要求过)。这大概是一个 有点脆弱,因为取决于了解特定的规则 ID 并且还 需要检查每个规则的操作或假设它们都是 相同的。说实话,编辑 CRS 文件可能会更好。

如果您只想启用一组规则,这可能是最好的, 而不是一个完整的类别。

来源:如何将 ModSecurity 引擎配置为针对单一攻击类型启用,并针对所有其他攻击类型配置为仅检测?

© www.soinside.com 2019 - 2024. All rights reserved.