mod_security - Batas PCRE terlampaui

11

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


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.ddirektori 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 adan btidak berfungsi, dan saya lebih suka tidak melakukan c... karena saya tidak benar-benar mengerti / suka mengkompilasi.

Adakah yang punya ide lain?

Parox
sumber
Saya memiliki ini juga menggunakan aturan inti terbaru dan kode sumber mod_security yang baru saja saya unduh. Saya mendapatkan kesalahan ini untuk aplikasi Rails, bukan PHP.
Dogweather

Jawaban:

7

Rekursi suci, Batman!

Saya mengklaim Anda memiliki sesuatu yang salah dengan aturan mod_security Anda. Rekursi semacam itu tampaknya tidak perlu dan kemungkinan besar akan menyebabkan beberapa beban serius untuk server Anda. Perbaiki aturan dan / atau konfigurasi Apache, dan jangan mencoba untuk "memperbaiki" masalah ini dengan jumlah besar yang sewenang-wenang.

Janne Pikkarainen
sumber
4

Menonton ini erat karena saya memiliki masalah yang sama persis dan konfigurasi Anda terlihat mirip dengan milik saya. Saya pengatur waktu pertama untuk modsecurity, ini tidak ramah sama sekali!

Setuju dengan Janne. Hanya saran yang saya miliki sejauh ini adalah menghapus semua aturan inti dan memperkenalkannya kembali 1 per 1 untuk mulai mempersempit masalah. Saya akan melakukannya sekarang.

Anda juga harus mengubah pengaturan mesin aturan Anda ke

SecRuleEngine DetectionOnly

saat bekerja melalui masalah konfigurasi, ini akan memungkinkan Anda untuk memantau tanpa menegakkan - Anda tidak ingin menegakkan aturan sementara Anda masih tidak yakin bahwa mereka melakukan apa yang Anda inginkan.

Silakan posting kembali dengan pembelajaran Anda jika Anda menemukan solusi.

Paul Fernihough
sumber
0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Harus ditemukan dan diubah dalam file konfigurasi mod_security pada beberapa * nix versi.

Egils
sumber