Hampir setiap permintaan saya mendapatkan kesalahan berikut:
Rule execution error - PCRE limits exceeded (-8): (null).
Setelah banyak googling, satu-satunya solusi tampaknya
a) Tambahkan yang berikut ini di httpd.conf Anda
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000
b) Tambahkan yang berikut ini ke php.ini Anda
pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000
c) Gunakan versi yang dikompilasi dengan -disable-pcre-match-limit
opsi.
Saya menjalankan yang berikut ini:
ModSecurity untuk Apache / 2.5.12 ( http://www.modsecurity.org/ ).
Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + squeeze8 dengan Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8
Untuk ModSec aturan saya, saya menggunakan OWASP ModSecurity Core Rule Set versi Project (CRS) versi 2.2.3 yang merupakan yang terbaru pada postingan ini.
Httpd.conf saya pada dasarnya terdiri dari:
<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>
Yang ada di dalam modsecurity.d
direktori saya hanyalah semua aturan standar yang dimiliki CRS dalam file instal mereka. Saya juga telah menetapkan batas pcre ke 150000000 dan 100000000000 dan banyak lagi, tetapi tidak tersedia.
Jadi kesimpulannya:
solusi a
dan b
tidak berfungsi, dan saya lebih suka tidak melakukan c
... karena saya tidak benar-benar mengerti / suka mengkompilasi.
Adakah yang punya ide lain?