就在每个请求上,我得到以下错误:
Rule execution error - PCRE limits exceeded (-8): (null).
经过一堆Googlesearch之后,唯一的解决scheme似乎是
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在安装文件中的所有默认规则。 我也设定了限制在1500万和1000万以上,但是没有。
所以结论是:
解决schemea
和b
不工作,我更喜欢不做c
…因为我不太了解/喜欢编译。
任何人有任何其他的想法?
神圣的recursion,蝙蝠侠!
我声称你的mod_security规则有问题。 这种recursion似乎是不必要的,很可能会导致一些严重的负载为您的服务器。 修正规则和/或Apacheconfiguration,不要试图用任意大的数字“修复”这个问题。
密切关注这一点,因为我有完全相同的问题,你的configuration看起来类似于我的。 我是modsecurity的第一个计时器,它不是完全友好!
同意Janne。 目前为止,我的build议只是删除所有核心规则,并逐一重新介绍,以缩小问题的范围。 我现在即将这样做。
你也应该改变你的规则引擎设置
SecRuleEngine DetectionOnly
在解决configuration问题时,这将允许您无需执行即可进行监视 – 您不想在执行规则时仍不确定是否按照自己的要求执行操作。
如果您find解决scheme,请回复您的学习。