mod_security - Vượt quá giới hạn PCRE


11

Chỉ cần về mỗi yêu cầu tôi nhận được lỗi sau:

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

Sau một loạt các googling, các giải pháp duy nhất dường như là

a) Thêm phần sau vào httpd.conf của bạn

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b) Thêm phần sau vào php.ini của bạn

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) Sử dụng một phiên bản được biên dịch với -disable-pcre-match-limittùy chọn.


Tôi đang chạy như sau:

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

Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + bóp 8 với Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8

Đối với ModSec các quy tắc của tôi, tôi đang sử dụng phiên bản Dự án Bộ quy tắc lõi (CRS) của OWASP ModSecurity phiên bản 2.2.3, phiên bản mới nhất kể từ bài đăng này.

Httpd.conf của tôi bao gồm chủ yếu:

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

Trong đó trong modsecurity.dthư mục của tôi chỉ có tất cả các quy tắc mặc định CRS có trong tệp cài đặt của họ. Tôi cũng đã đặt giới hạn pcre thành 150000000 và 100000000000 trở lên, nhưng không có sẵn.

Vì vậy, trong kết luận:

các giải pháp abkhông hiệu quả, và tôi không muốn làm gì cả c... vì tôi không thực sự hiểu / thích biên dịch.

Bất cứ ai có ý tưởng nào khác?


Tôi cũng có điều này bằng cách sử dụng các quy tắc cốt lõi mới nhất và mã nguồn mod_security mà tôi vừa tải xuống. Tôi đang gặp những lỗi này cho ứng dụng Rails, không phải PHP.
Dogweather

Câu trả lời:


7

Đệ quy thánh, Batman!

Tôi khẳng định bạn có điều gì đó không đúng với quy tắc mod_security của bạn. Loại đệ quy đó dường như là không cần thiết và rất có thể sẽ gây ra một số tải nghiêm trọng cho máy chủ của bạn. Khắc phục các quy tắc và / hoặc cấu hình Apache và không cố gắng "khắc phục" sự cố này với số lượng lớn tùy ý.


4

Theo dõi kỹ điều này vì tôi có cùng một vấn đề và cấu hình của bạn trông giống như của tôi. Tôi là người hẹn giờ đầu tiên để bảo mật, nó không thực sự thân thiện!

Đồng ý với Janne. Lời khuyên duy nhất tôi có cho đến nay là loại bỏ tất cả các quy tắc cốt lõi và giới thiệu lại từng bước một để bắt đầu thu hẹp vấn đề. Tôi sắp làm điều đó bây giờ.

Ngoài ra, bạn nên thay đổi cài đặt công cụ quy tắc của mình thành

SecRuleEngine DetectionOnly

trong khi xử lý các sự cố cấu hình, điều này sẽ cho phép bạn giám sát mà không thực thi - bạn không muốn thực thi các quy tắc trong khi bạn vẫn không chắc chắn rằng họ đang làm những gì bạn muốn.

Xin vui lòng gửi lại với các bài học của bạn nếu bạn tìm thấy một giải pháp.


0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Phải được tìm thấy và thay đổi trong các tệp cấu hình mod_security trên một số phiên bản * nix.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.