mod_security - обмеження PCRE перевищено


11

Приблизно під час кожного запиту я отримую таку помилку:

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... так як я не дуже розумію / люблю компілювати.

У когось є якісь інші ідеї?


У мене це також, використовуючи останні основні правила та вихідний код mod_security, який я щойно завантажив. Я отримую ці помилки для програми Rails, а не для PHP.
Dogweather

Відповіді:


7

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

Я стверджую, що у вас є неправильні правила вашої mod_security. Такий тип рекурсії видається непотрібним і, швидше за все, спричинить серйозне навантаження на ваш сервер. Виправте правила та / або конфігурацію Apache, і не намагайтеся "виправити" цю проблему з довільно великими числами.


4

Уважно спостерігаючи за тим, як у мене точно така ж проблема, і ваш конфігурація схожа на мою. Я перший таймер для забезпечення безпеки, це не зовсім noob дружній!

Погодьтеся з Жанною. Єдиною порадою, яку я маю поки що, є видалити всі основні правила та повторно ввести їх 1 на 1, щоб почати звужувати проблему. Я збираюся це зробити зараз.

Також слід змінити налаштування двигуна правила на

SecRuleEngine DetectionOnly

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

Якщо ви знайдете рішення, будь ласка, відправте повідомлення зі своїми знаннями.


0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.