我在办公室使用 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
我想记住,我正在寻找激活规则,但保留仅检测
我在 Stack OverFlow 的其他地方找到了这个
您有几个选择:
- 使用异常评分和 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 也为其他类别设置类似的变量。
- 单独加载规则以及转动规则之前和之后的规则 发动机打开和关闭。
在一个阶段内,规则按照指定的顺序执行。你可以用这个 具有如下配置:
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.
- 通过更改要包含的操作来激活您想要的规则 打开规则引擎。
将模式设置为仅检测。使用 SecRuleUpdateActionById 添加 ctl:ruleEngine=on 到您想要的规则。如果有就好了 是 SecRuleUpdateActionByTag 或 SecRuleAddActionByTag 但有 不是(尽管过去已经要求过)。这大概是一个 有点脆弱,因为取决于了解特定的规则 ID 并且还 需要检查每个规则的操作或假设它们都是 相同的。说实话,编辑 CRS 文件可能会更好。
如果您只想启用一组规则,这可能是最好的, 而不是一个完整的类别。