几乎在每个请求上我都会遇到以下错误:
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
...因为我不太了解/喜欢编译。
还有其他想法吗?