mod_security - Limiti PCRE superati


11

Quasi ogni volta che ricevo il seguente errore:

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

Dopo un po 'di ricerche su google le uniche soluzioni sembrano essere

a) Aggiungi quanto segue nel tuo httpd.conf

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b) Aggiungi quanto segue al tuo php.ini

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) Utilizzare una versione compilata con l' -disable-pcre-match-limitopzione.


Sto eseguendo il seguente:

ModSecurity per Apache / 2.5.12 ( http://www.modsecurity.org/ ).

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

Per ModSec le mie regole, sto usando OWASP ModSecurity Core Rule Set Project versione (CRS) versione 2.2.3 che è la più recente al momento della pubblicazione.

Il mio httpd.conf è costituito essenzialmente da:

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

Di cui all'interno della mia modsecurity.ddirectory ci sono solo tutte le regole predefinite che CRS ha nel loro file di installazione. Ho anche impostato i limiti di PCRE su 150000000 e 100000000000 e oltre, ma non disponibili.

Quindi in conclusione:

soluzioni ae bnon funzionano, e preferisco di gran lunga non farlo c... poiché non capisco davvero / mi piace compilare.

Qualcuno ha altre idee?


Ho anche questo usando le ultime regole di base e il codice sorgente mod_security che ho appena scaricato. Ricevo questi errori per un'app Rails, non per PHP.
Dogweather,

Risposte:


7

Santa ricorsione, Batman!

Presumo che tu abbia qualcosa di sbagliato nelle tue regole mod_security. Questo tipo di ricorsione sembra non essere necessario e molto probabilmente causerà un carico serio per il tuo server. Correggi le regole e / o la configurazione di Apache e non provare a "risolvere" questo problema con numeri arbitrariamente grandi.


4

Osservandolo da vicino poiché ho esattamente lo stesso problema e la tua configurazione è simile alla mia. Sono il primo timer a modsecurity, non è esattamente adatto a nessuno!

D'accordo con Janne. L'unico consiglio che ho finora è quello di rimuovere tutte le regole di base e reintrodurle 1 per 1 per iniziare a ridurre il problema. Sto per farlo adesso.

Inoltre, è necessario modificare le impostazioni del motore delle regole in

SecRuleEngine DetectionOnly

mentre si risolvono i problemi di configurazione, questo ti consentirà di monitorare senza applicare - non vuoi applicare le regole mentre non sei ancora sicuro che stiano facendo quello che vuoi.

Ti preghiamo di postare indietro con i tuoi apprendimenti se trovi una soluzione.


0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Deve essere trovato e modificato nei file di configurazione mod_security su alcune versioni * nix.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.