【问题标题】:Default phase in modsecurity rules?modsecurity规则中的默认阶段?
【发布时间】:2021-04-29 11:26:44
【问题描述】:

我在 CentOS 机器上的 apache 2.4 服务器上运行 modsecurity2(启用 WHM)。要将 msnbot 列入白名单,我的托管服务提供商要求我添加以下规则

SecRule REMOTE_HOST "@endsWith .search.msn.com" "allow,nolog,id:5000003,msg:'msn bot'"

没有明确提及phase。 (modsecurity 分 5 个阶段处理规则)。当没有提到阶段时,默认阶段是什么?

【问题讨论】:

    标签: syntax firewall mod-security


    【解决方案1】:

    没有“默认”阶段。如果您忘记添加此操作,则不会评估该规则。

    我看到 mod_security2 会在规则中插入一个 phase:2 操作,如果没有给出阶段。

    【讨论】:

    • 但是当我将 nolog 更改为 log 时,请求正在被记录......
    • 啊,真的很抱歉,我上面的回答是错误的。正如我所见,它在 mod_security2 的第 2 阶段进行了评估,但在 libmodsecurity3 的第 1 阶段进行了评估。也许我们可以将其称为“默认”...您可以使用此检查阶段:grep -n "\(Starting phase\|5000003\)" /path/to/modsec_debug.log。在此命令的输出中,您可以看到“修改后的”规则:引擎附加了一个隐含的phase:2Rule 7f18e894eaf0: SecRule "REMOTE_HOST" "@endsWith .search.msn.com" "phase:2,auditlog,allow,log,id:5000003,msg:'msn bot'"。再次抱歉。
    • 没问题:)。非常感谢。除了帮助我找到答案之外,您还解释了您用于查找隐含阶段的步骤(调试日志上的 grep)这也将有助于我将来详细分析 modsecurity 的功能。
    • 请你帮我解决一个问题。如果我想在第 1 阶段而不是第 2 阶段执行规则 "SecRule REMOTE_HOST "@endsWith .search.msn.com" "allow,nolog,id:5000003,msg:'msn bot'",则提到“阶段 1 " 在规则的 ACTIONS 部分就足够了?还是基于 REMOTE_HOST 的规则只能在阶段 2 中执行?
    • 我认为显式总是比隐式好:)。您应该将phase:1 放到操作列表中,这样就足够了。通常,当使用的变量可用时,值得努力将规则置于较低的阶段。 REMOTE_HOST 在phase:1,这是一个不错的选择。
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2015-04-23
    • 2020-11-01
    相关资源
    最近更新 更多