几乎每次请求我都会收到以下错误:
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-