Практически при каждом запросе я получаю следующую ошибку:
Rule execution error - PCRE limits exceeded (-8): (null).
После кучи поиска в Google единственные решения кажутся
а) Добавьте следующее в свой httpd.conf
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000
б) Добавьте следующее в свой php.ini
pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000
c) Используйте версию, которая была скомпилирована с -disable-pcre-match-limit
вариант.
Я использую следующее:
ModSecurity для Apache / 2.5.12 (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 Core Rule Set Project (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. Такая рекурсия кажется ненужной и, скорее всего, вызовет серьезную нагрузку на ваш сервер. Исправьте правила и / или конфигурацию Apache, и не пытайтесь «исправить» эту проблему с произвольно большими числами.
Наблюдая за этим внимательно, у меня точно такая же проблема, и ваша конфигурация похожа на мою. Я впервые использую modsecurity, это не совсем удобно для новичков!
Согласитесь с Янне. Единственный совет, который у меня есть до сих пор, - это удалить все основные правила и заново ввести их один за другим, чтобы начать сужать проблему. Я собираюсь сделать это сейчас.
Также вам следует изменить настройку механизма правил на
SecRuleEngine DetectionOnly
при работе с проблемами конфигурации это позволит вам осуществлять мониторинг без принудительного применения - вы не хотите применять правила, пока вы все еще не уверены, что они делают то, что вы хотите.
Пожалуйста, поделитесь своими знаниями, если найдете решение.
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000
Необходимо найти и изменить в файлах конфигурации mod_security в некоторых версиях * nix.