mod_security - превышены пределы PCRE

Примерно при каждом запросе я получаю следующую ошибку:

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 я использую версию 2.2.3 Проекта базового набора правил OWASP ModSecurity (CRS), которая является самой новой на момент публикации.

Мой 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... как я не очень понимаю / не люблю компилирование.

У кого-нибудь есть другие идеи?

4 ответа

Святая рекурсия, Бэтмен!

Я утверждаю, что у вас что-то не так с вашими правилами mod_security. Такой вид рекурсии кажется ненужным и, скорее всего, вызовет серьезную нагрузку на ваш сервер. Исправьте правила и / или конфигурацию Apache, и не пытайтесь "исправить" эту проблему с произвольно большими числами.

Наблюдая за этим внимательно, у меня точно такая же проблема, и ваш конфиг выглядит похожим на мой. Я первый таймер модбезопасности, он не совсем дружелюбен к новичкам!

Согласна с Янне. Единственный совет, который у меня есть, - удалить все основные правила и заново ввести их 1 к 1, чтобы начать сужать проблему. Я собираюсь сделать это сейчас.

Также вам следует изменить настройку вашего механизма правил на

SecRuleEngine DetectionOnly

во время работы с проблемами конфигурации это позволит вам осуществлять мониторинг без принудительного применения - вы не хотите применять правила, пока не уверены, что они делают то, что вам нужно.

Пожалуйста, оставьте сообщение с вашими знаниями, если вы найдете решение.

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Должно быть найдено и изменено в конфигурационных файлах mod_security в некоторых *nix версиях.

Atomicorp (продает продукт безопасности со встроенным modsecurity) рекомендует 250 000 для «современных систем». https://support.atomicorp.com/hc/en-us/articles/360000188468-Rule-execution-error-PCRE-limits-exceeded-8-null-

Другие вопросы по тегам