Приблизно під час кожного запиту я отримую таку помилку:
Rule execution error - PCRE limits exceeded (-8): (null).
Після купи гугла, здається, єдині рішення
а) Додайте наступне у свій httpd.conf
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000
b) Додайте до свого php.ini наступне
pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000
в) Використовуйте версію, складену з -disable-pcre-match-limit
опцією.
Я виконую наступне:
ModSecurity for Apache / 2.5.12 ( http://www.modsecurity.org/ ).
Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + стискати 8 з Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8
У моїх правилах ModSec я використовую версію 2.2.3 версії проекту (CRS) ModSecurity Core OWASP ModSecurity, яка є найновішою на цю публікацію.
Мій 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
... так як я не дуже розумію / люблю компілювати.
У когось є якісь інші ідеї?