mod_security - เกินขีด จำกัด PCRE


11

ในทุกคำขอฉันได้รับข้อผิดพลาดต่อไปนี้:

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

หลังจากผ่าน Google Googling โซลูชั่นเพียงอย่างเดียวดูเหมือนจะเป็น

a) เพิ่มสิ่งต่อไปนี้ใน httpd.conf ของคุณ

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b) เพิ่มสิ่งต่อไปนี้ใน php.ini ของคุณ

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) ใช้เวอร์ชันที่คอมไพล์ด้วย-disable-pcre-match-limitตัวเลือก


ฉันกำลังทำงานต่อไปนี้:

ModSecurity สำหรับ Apache / 2.5.12 ( http://www.modsecurity.org/ )

Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + squeeze8 พร้อม Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8

สำหรับ ModSec กฎของฉันฉันใช้ OWASP ModSecurity Core กฎชุดโครงการรุ่น (CRS) รุ่น 2.2.3 ซึ่งเป็นรุ่นใหม่ล่าสุดของการโพสต์นี้

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

ดูอย่างใกล้ชิดเพราะฉันมีปัญหาเดียวกันและกำหนดค่าของคุณดูเหมือนกับของฉัน ฉันเป็นตัวจับเวลาตัวแรกในการปรับแต่งความปลอดภัยมันไม่ได้เป็นมิตรอย่างแน่นอน!

เห็นด้วยกับ Janne คำแนะนำเดียวที่ฉันมีคือการลบกฎหลักทั้งหมดและแนะนำพวกเขาใหม่ 1 ต่อ 1 เพื่อเริ่มลดปัญหาให้แคบลง ฉันกำลังจะทำตอนนี้

นอกจากนี้คุณควรเปลี่ยนการตั้งค่าเครื่องมือกฎของคุณเป็น

SecRuleEngine DetectionOnly

ขณะทำงานกับปัญหาการกำหนดค่าสิ่งนี้จะช่วยให้คุณตรวจสอบโดยไม่บังคับใช้ - คุณไม่ต้องการบังคับใช้กฎในขณะที่คุณยังไม่แน่ใจว่าพวกเขากำลังทำสิ่งที่คุณต้องการ

โปรดโพสต์กลับด้วยการเรียนรู้ของคุณหากคุณพบวิธีการแก้ปัญหา


0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

ต้องพบและเปลี่ยนแปลงในไฟล์ปรับแต่ง mod_security ในบางเวอร์ชัน * nix

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.