mod_security - PCRE-Grenzwerte überschritten

11

Fast bei jeder Anfrage erhalte ich folgende Fehlermeldung:

Rule execution error - PCRE limits exceeded (-8): (null).

Nach einigem googeln scheinen die einzigen Lösungen zu sein

a) Fügen Sie Folgendes in Ihre httpd.conf ein

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b) Fügen Sie Ihrer php.ini Folgendes hinzu

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) Verwenden Sie eine Version, die mit -disable-pcre-match-limitOption kompiliert wurde .


Ich führe folgendes aus:

ModSecurity für Apache / 2.5.12 ( http://www.modsecurity.org/ ).

Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + Squeeze8 mit Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8

Für meine ModSec-Regeln verwende ich die OWASP ModSecurity Core Rule Set Project-Version (CRS) Version 2.2.3, die zum Zeitpunkt dieser Veröffentlichung die neueste ist.

Meine httpd.conf besteht im Wesentlichen aus:

<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>

Davon in meinem modsecurity.d Verzeichnis nur alle Standardregeln, die CRS in seiner Installationsdatei hat. Ich habe auch die PCR-Grenzwerte auf 150000000 und 100000000000 und mehr festgelegt, aber nicht verfügbar.

Also abschließend:

Lösungen aund bfunktionieren nicht, und ich ziehe es vor, es nicht zu tun c... da ich das Kompilieren nicht wirklich verstehe / mag.

Hat jemand andere Ideen?

ParoX
quelle
Ich habe dies auch mit den neuesten Kernregeln und dem Quellcode von mod_security, den ich gerade heruntergeladen habe. Ich erhalte diese Fehler für eine Rails-App, nicht für PHP.
Dogweather

Antworten:

7

Heilige Rekursion, Batman!

Ich behaupte, Sie haben etwas mit Ihren mod_security-Regeln falsch gemacht. Diese Art der Rekursion scheint unnötig zu sein und wird höchstwahrscheinlich eine ernsthafte Belastung für Ihren Server verursachen. Korrigieren Sie die Regeln und / oder die Apache-Konfiguration und versuchen Sie nicht, dieses Problem mit beliebig großen Zahlen zu "beheben".

Janne Pikkarainen
quelle
3

Beobachten Sie dies genau, da ich genau das gleiche Problem habe und Ihre Konfiguration meiner ähnlich sieht. Ich bin ein Anfänger in Sachen Modsecurity, es ist nicht gerade noob-freundlich!

Stimmen Sie mit Janne überein. Bisher habe ich nur den Rat, alle Kernregeln zu entfernen und sie 1 zu 1 erneut einzuführen, um das Problem einzugrenzen. Ich mache das jetzt gleich.

Außerdem sollten Sie Ihre Regelengine-Einstellung auf ändern

SecRuleEngine DetectionOnly

Während Sie Konfigurationsprobleme bearbeiten, können Sie auf diese Weise überwachen, ohne sie durchzusetzen. Sie möchten die Regeln nicht durchsetzen, solange Sie noch nicht sicher sind, ob sie das tun, was Sie wollen.

Bitte senden Sie Ihre Erkenntnisse zurück, wenn Sie eine Lösung finden.

Paul Fernihough
quelle
0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Das muss in einigen * nix-Versionen in den Konfigurationsdateien von mod_security gefunden und geändert werden.

Egils
quelle