2013-08-14 74 views
8

Tôi đã gặp phải rất nhiều vấn đề với Mod Security. Tôi đang bận viết một CMS cho một dự án tại nơi làm việc và trong khi đang phát triển một trang để chỉnh sửa một bản ghi cơ sở dữ liệu nào đó, tôi vẫn nhận được 403 lỗi. Sau nhiều giờ đập đầu vào bàn của tôi, điều chỉnh các bit của mã Tôi cuối cùng chỉ thay đổi kịch bản mà hình thức của tôi đã được đăng, để chứa một đơn giản echo "test";. Ngay cả việc gửi trang đơn giản này cũng đã gây ra lỗi 403. Tôi rối tung với hình thức của tôi và cuối cùng tôi thấy rằng nếu tôi giảm số lượng dữ liệu tôi đã gửi mẫu đơn gửi tốt (Đặc biệt tôi làm giảm số lượng văn bản trong một textarea).Hạn chế tối đa của ModSecurity (lỗi giới hạn PCRE)

Sau khi kiểm tra các bản ghi (Yep, điều này không phải là điều đầu tiên tôi làm - tiếng thở dài) Tôi nhận thấy rằng tôi đã nhận được rất nhiều lỗi từ ModSecurity, chẳng hạn như:

[Mon Aug 12 16:34:45 2013] [error] [client XX.XXX.XXX.XXX] ModSecurity: Failed to access DBM file "/etc/httpd/logs//global": Permission denied [hostname "XXXXXXX.XXX"] [uri "/admin/index.php"] [unique_id "UgkAlW1shFcAAHTMK80AAAAF"] 
[Mon Aug 12 16:34:45 2013] [error] [client XX.XXX.XXX.XXX] ModSecurity: Failed to access DBM file "/etc/httpd/logs//ip": Permission denied [hostname "XXXXXXX.XXX"] [uri "/admin/index.php"] [unique_id "UgkAlW1shFcAAHTMK80AAAAF"] 
[Mon Aug 12 17:11:33 2013] [error] [client XX.XXX.XXX.XXX] ModSecurity: Rule execution error - PCRE limits exceeded (-8): (null). [hostname "XXXXXXX.XXX"] [uri "/admin/index.php"] [unique_id "UgkJNW1shFcAAHXUMHkAAAAH"] 
[Mon Aug 12 17:11:33 2013] [error] [client XX.XXX.XXX.XXX] ModSecurity: Access denied with code 403 (phase 2). Match of "streq 0" against "TX:MSC_PCRE_LIMITS_EXCEEDED" required. [file "/etc/httpd/conf.d/mod_security.conf"] [line "93"] [msg "ModSecurity internal error flagged: TX:MSC_PCRE_LIMITS_EXCEEDED"] [hostname "XXXXXXX.XXX"] [uri "/admin/index.php"] [unique_id "UgkJNW1shFcAAHXUMHkAAAAH"] 

Tôi đã rối tung xung quanh , Googling và thay đổi các quy tắc cho ngày không có kết quả. Điều duy nhất tôi dường như có thể làm là tắt ModSecurity cho vhost này. Điều này là tốt của tôi trong khi tôi đang phát triển CMS, nhưng trong sản xuất này không thực sự là một cái gì đó tôi muốn làm. Có ai có bất kỳ ý tưởng về những gì đang gây ra vấn đề này và làm thế nào để sắp xếp nó? Các bản ghi dường như chỉ ra một số quy tắc liên quan đến giới hạn biểu thức chính quy, nhưng kể từ khi thay đổi bài viết của tôi để chỉ in ra bài kiểm tra từ tôi không làm bất cứ điều gì với họ (Mặc dù tôi đã thử giới hạn qua SecPcreMatchLimitSecPcreMatchLimitRecursion). Có vẻ như có điều gì đó sai trái với lượng dữ liệu tôi gửi qua.

+0

Tôi đang gặp vấn đề tương tự và như ngay bây giờ tôi có 2 Apache quá trình chạy ở 100% CPU ... Trên một lõi 8, nó không phải là quá xấu trong một cách, nhưng nó cũng có nghĩa là một số người dùng không được phục vụ! –

Trả lời

1

Tôi đã gặp sự cố tương tự với mô-đun PCRE cách đây vài tuần và nó có liên quan đến backtrack_limits.

Tôi giả sử SecPcreMatchLimitSecPcreMatchLimitRecursion có liên quan đến mod_security, nhưng bạn đã thử tăng giá trị cho mô-đun pcre trong tệp php.ini của bạn hoặc trong thời gian thực thi PHP?

pcre.backtrack_limitpcre.recursion_limit

Bạn cũng có thể khẳng định nếu vấn đề có liên quan đến giới hạn PCRE với hàm sau preg_last_error()

Bạn có thể xem chi tiết ở đây: http://php.net/manual/en/function.preg-last-error.php

và ở đây: http://www.php.net/manual/en/pcre.constants.php

Tôi hy vọng điều này sẽ giúp.

+0

Xin lỗi, đã lâu rồi tôi mới đăng sự cố này. Tôi đặt các giá trị PCRE đó trong tệp php.ini mà tôi nghĩ (Chắc chắn không làm điều đó trong khi thực hiện với 'ini_set()' hoặc bất kỳ thứ gì). Ngoài ra .. Tôi thậm chí không thể làm «preg_last_error()' kể từ trang thậm chí 403s cho một thử nghiệm 'echo 'đơn giản"; ' – Jonathon

+1

Vấn đề của tôi dường như là ModSecurity đang xử lý dữ liệu mà tôi gửi thông qua khả nghi cho một số lý do thay vì thực sự có liên quan đến PCRE – Jonathon

+2

Một nửa câu trả lời này là sai. Nó dứt khoát không liên quan gì tới PHP vì Apache đang chạy mô-đun ModSecurity. Trên thực tế Jonathon đặc biệt nói rằng nếu anh ta tắt ModSecurity trang của mình hoạt động tốt. –

1

Tôi vừa giải quyết một vấn đề tương tự, với một bài đăng lớn kích hoạt lỗi giới hạn PCRE trong nhiều quy tắc. Tôi cảm thấy đó là sai lầm cho an ninh mod để sau đó gắn cờ yêu cầu là độc hại chỉ vì nó bị nổ tung!

Tôi đã nêu hai cài đặt bạn đã đề cập từ mặc định là 500.000 từ mặc định là 1.500 như được đề xuất trong bài đăng này và nó đã giải quyết được sự cố của tôi.

Giá trị mặc định cho giới hạn đối sánh PCRE rất, rất thấp với ModSecurity. Bạn có thể nhận được 500K thường mà không làm hại bộ của bạn. Nhưng cho thông tin của bạn: Giới hạn đối sánh PCRE có nghĩa là giảm bớt cơ hội cho một cuộc tấn công DoS thông qua Biểu thức chính quy. Vì vậy, bằng cách tăng giới hạn bạn nâng cao tính dễ bị tổn thương của mình trong vấn đề này, nhưng các lỗi PCRE thì tệ hơn nhiều so với quan điểm bảo mật.Tôi chạy với 500K trong sản thường:

SecPcreMatchLimit 500000 SecPcreMatchLimitRecursion 500000

https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/656

Xem thêm https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecPcreMatchLimit

Các vấn đề liên quan