如何禁用特定目录中的特定 mod_security 规则?

How to disable a specific mod_security rule in a specific directory?

我想禁用这条规则:

[file "/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "159"] [id "981173"] [rev "2"] [msg "Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded"] [data "Matched Data: - found within ARGS:customize_changeset_uuid: a507417f-75f3-434e-ac8c-90b21b3b164d"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"]

为目录

/var/www/romanpastu/wp-admin

异常应该去哪里?在我的 .htaccess 中?或虚拟主机文件?

因为似乎没有任何效果。

我正在使用 apache2

我已经尝试在我的 virtualhost 文件中添加以下内容。但是,它仍然无法正常工作

<LocationMatch "/wp-admin/update.php">
    <IfModule security2_module>
        SecRuleRemoveById 981173
    </IfModule>
</LocationMatch>
<LocationMatch "/wp-admin/customize.php">
    <IfModule security2_module>
        SecRuleRemoveById 981173
    </IfModule>
</LocationMatch>

在您的配置中定义规则后应该添加。因此,如果您正在定义您的虚拟主机(包括删除上述规则),然后稍后在您的配置中加载您的 ModSecurity 规则,那么这将不起作用 - 它需要相反。

此外,除非 ModSecurity 是使用 --enable-htaccess-config 设置编译的(默认情况下不是),否则您无法更改 htaccess 文件中的 ModSecurity 规则。

此外,在 LocationMatch 中放置规则可能会导致问题。而且 wp-admin 正是您想要使用 ModSecuritg 来保护的那种页面,因此请仔细考虑您是否真的想关闭这些规则。另请参阅我对这个问题的回答以获取更多信息:.

所以我建议使用以下方法来仅针对导致您出现问题的参数关闭此规则:

 SecRuleUpdateTargetById 981173 !ARGS:'customize_changeset_uuid'

请注意,如果任何其他参数导致问题,您可能需要添加类似的例外。