mod_security — 超出 PCRE 限制

mod_security — 超出 PCRE 限制

几乎每次请求我都会收到以下错误:

Rule execution error - PCRE limits exceeded (-8): (null).

经过大量的谷歌搜索,唯一的解决方案似乎是

a) 在 httpd.conf 中添加以下内容

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b)将以下内容添加到您的 php.ini

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) 使用带选项编译的版本-disable-pcre-match-limit


我正在运行以下命令:

Apache/2.5.12 的 ModSecurity (http://www.modsecurity.org/)。

Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze8 带 Suhosin-Patch mod_ssl/2.2.16 OpenSSL/0.9.8

对于 ModSec 我的规则,我使用的是 OWASP ModSecurity 核心规则集项目版本 (CRS) 2.2.3,这是截至本文发布时的最新版本。

我的 httpd.conf 主要包括:

<IfModule security2_module>
    SecUploadDir /var/asl/data/suspicious
    SecDataDir /var/asl/data/msa
    SecTmpDir /tmp
    SecAuditLogStorageDir /var/asl/data/audit

    Include modsecurity.d/modsecurity_crs_10_config.conf
    Include modsecurity.d/activated_rules/*.conf

    SecRuleEngine On

    # Debug log
    SecDebugLog /var/log/apache2/modsec_debug.log
    SecDebugLogLevel 3

    # Serial audit log
    SecAuditEngine RelevantOnly
    SecAuditLogRelevantStatus ^5
    SecAuditLogParts ABIFHZ
    SecAuditLogType Serial
    SecAuditLog /var/log/apache2/modsec_audit.log

    SecPcreMatchLimit 150000
    SecPcreMatchLimitRecursion 150000

</IfModule>


<IfModule mod_php5.c>
    php_admin_flag pcre.backtrack_limit 10000000
    php_admin_flag pcre.recursion_limit 10000000
</IfModule>

其中我的modsecurity.d目录中只有 CRS 安装文件中的所有默认规则。我还将 pcre 限制设置为 150000000 和 100000000000 及以上,但不可用。

结论是:

解决方案a并且b不起作用,而且我非常不愿意这样做c......因为我真的不理解/喜欢编译。

有人还有其他想法吗?

答案1

神圣的递归,蝙蝠侠!

我认为您的 mod_security 规则存在问题。这种递归似乎没有必要,而且很可能会给您的服务器造成严重负载。请修复规则和/或 Apache 配置,不要尝试使用任意大的数字来“修复”此问题。

答案2

密切关注此事,因为我遇到了完全相同的问题,而且您的配置与我的类似。我是第一次使用 modsecurity,它对新手不太友好!

同意 Janne 的观点。目前我唯一的建议是删除所有核心规则,然后逐一重新引入它们,以开始缩小问题范围。我现在就要这么做了。

您还应该将规则引擎设置更改为

SecRuleEngine DetectionOnly

在解决配置问题时,这将允许您在不执行的情况下进行监控 - 您不想在仍不确定规则是否按照您的意愿执行时强制执行规则。

如果您找到解决方案,请回复您的学习成果。

答案3

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

必须在某些 *nix 版本的 mod_security 配置文件中找到并更改。

答案4

Atomicorp(销售内置 modsecurity 的安全产品)建议在“现代系统”上使用 250000。 https://support.atomicorp.com/hc/en-us/articles/360000188468-Rule-execution-error-PCRE-limits-exceeded-8-null-

相关内容