mod_security-超出PCRE限制


11

几乎在每个请求上我都会遇到以下错误:

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/)。

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

对于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...因为我不太了解/喜欢编译。

还有其他想法吗?


我也使用刚刚下载的最新核心规则和mod_security源代码来进行此操作。我在Rails应用程序而不是PHP中遇到这些错误。
Dogweather

Answers:


7

神圣的递归,蝙蝠侠!

我声称您的mod_security规则有问题。这种递归似乎是不必要的,并且很可能会给您的服务器造成一定的负担。修正规则和/或Apache配置,不要试图用任意大的数字“修正”此问题。


4

密切关注此问题,因为我遇到的问题完全相同,而且您的配置与我的相似。我是modsecurity的初学者,它并不友好。

同意珍妮。到目前为止,我唯一的建议就是删除所有核心规则,然后以1到1的方式重新引入这些规则,以缩小问题的范围。我现在要这样做。

另外,您应该将规则引擎设置更改为

SecRuleEngine DetectionOnly

在解决配置问题时,这将使您无需强制执行即可进行监视-您不想强制执行规则,但仍不确定它们是否在执行所需的操作。

如果找到解决方案,请回传您的经验。


0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.