2013-08-14 6 views
8

मुझे मॉड सुरक्षा के साथ कई समस्याएं हैं। मैं काम पर एक परियोजना के लिए एक सीएमएस लिखने में व्यस्त हूं और एक निश्चित डेटाबेस रिकॉर्ड को संपादित करने के लिए एक पृष्ठ विकसित करते समय मुझे 403 त्रुटियां मिल रही हैं। मेरे डेस्क के खिलाफ मेरे सिर को टक्कर देने के कुछ घंटों के बाद, कोड के बिट्स को समायोजित करने के बाद मैंने अंततः उस स्क्रिप्ट को बदल दिया जिस पर मेरा फॉर्म पोस्ट किया गया था, जिसमें एक सरल echo "test"; शामिल था। यहां तक ​​कि इस साधारण पृष्ठ को सबमिट करना भी 403 त्रुटि उठा रहा था। मैंने अपने फॉर्म के बारे में गड़बड़ कर लिया और मुझे अंत में पता चला कि अगर मैंने डेटा की मात्रा कम कर दी है तो मैं फॉर्म जमा कर रहा था ठीक से (विशेष रूप से मैं टेक्स्टरेरा के भीतर पाठ की मात्रा को कम करता हूं)।मॉड सेक्योरिटी अधिकतम पोस्ट सीमाएं (पीसीआरई सीमा त्रुटियां)

लॉग की जाँच के बाद (हाँ, यह मैंने सोचा नहीं था - आह) मैंने देखा है कि मैं इस तरह के रूप ModSecurity से कई त्रुटियाँ हो रही थी,:

[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"] 

मैं चारों ओर खिलवाड़ किया गया है , गुगलिंग और दिन के लिए नियमों का कोई फायदा नहीं हुआ। एकमात्र चीज जो मैं करने में सक्षम हूं वह इस vhost के लिए ModSecurity बंद कर देता है। यह मेरे द्वारा ठीक है जबकि मैं सीएमएस विकसित कर रहा हूं, लेकिन उत्पादन में यह वास्तव में कुछ नहीं है जो मैं करना चाहता हूं। क्या किसी के पास इस मुद्दे का कारण बनने और इसे हल करने के बारे में कोई विचार है? लॉग नियमित अभिव्यक्ति सीमाओं के साथ कुछ प्रकार के नियमों को इंगित करते हैं, लेकिन मेरी पोस्ट प्राप्त करने वाली स्क्रिप्ट को केवल शब्द परीक्षण को मुद्रित करने के लिए बदलते हुए मैं उनके साथ कुछ भी नहीं कर रहा हूं (हालांकि मैंने SecPcreMatchLimit और SecPcreMatchLimitRecursion के माध्यम से सीमाएं बढ़ाने की कोशिश की है)। ऐसा लगता है कि मैं जिस डेटा को भेज रहा हूं उसके साथ कुछ गड़बड़ है।

+0

मैं एक ही समस्या आ रही है देख सकते हैं और जैसे अभी मैं 2 अपाचे है प्रक्रिया 100% सीपीयू पर चल रही है ... 8 कोर पर, यह एक तरह से बहुत बुरा नहीं है, लेकिन इसका मतलब यह भी है कि कुछ उपयोगकर्ताओं की सेवा नहीं की जा रही है! –

उत्तर

1

कुछ हफ्ते पहले पीसीआरई मॉड्यूल के साथ मुझे एक ही समस्या थी और यह बैकट्रैक_लिमिट से संबंधित था।

मुझे लगता है कि SecPcreMatchLimit और SecPcreMatchLimitRecursion mod_security से संबंधित हैं, लेकिन क्या आपने अपनी php.ini फ़ाइल में या PHP निष्पादन समय के दौरान Pcre मॉड्यूल के मानों को अपनाने का प्रयास किया था?

pcre.backtrack_limit और pcre.recursion_limit

तुम भी यदि समस्या निम्न समारोह के साथ PCRE सीमा से संबंधित है की पुष्टि कर सकते preg_last_error()

आप यहाँ और अधिक देख सकते हैं: http://php.net/manual/en/function.preg-last-error.php

और यहाँ: http://www.php.net/manual/en/pcre.constants.php

मुझे उम्मीद है कि यह मदद करता है।

+0

क्षमा करें, यह कुछ समय हो गया है क्योंकि मैंने इस मुद्दे को पोस्ट किया था। मैंने उन पीसीआरई मानों को php.ini फ़ाइल में सेट किया है जो मुझे लगता है (निश्चित रूप से 'ini_set()' या कुछ भी के साथ निष्पादन के दौरान ऐसा नहीं किया गया)। इसके अलावा .. मैं 'preg_last_error()' को 'सरल' echo "परीक्षण के लिए पृष्ठ के 403s तक भी करने में असमर्थ हूं; ' – Jonathon

+1

मेरी समस्या यह प्रतीत होती है कि ModSecurity कुछ डेटा के लिए संदिग्ध डेटा के साथ व्यवहार कर रहा है पीसीआरई – Jonathon

+2

के साथ वास्तव में कुछ भी करने के बजाय कारण यह जवाब गलत है। यह निश्चित रूप से PHP के साथ कुछ भी नहीं है क्योंकि अपाचे मॉडस सुरक्षा मॉड्यूल चला रहा है। वास्तव में जोनाथन विशेष रूप से कहता है कि यदि वह मॉडसुरिटी बंद कर देता है तो उसका पृष्ठ ठीक काम करता है। –

1

मैंने कई नियमों में पीसीआरई सीमा त्रुटियों को ट्रिगर करने वाली एक बड़ी पोस्ट के साथ एक ही समस्या का समाधान किया है। मुझे लगता है कि मॉड-सिक्योरिटी के लिए गलत है क्योंकि अनुरोध को दुर्भावनापूर्ण रूप से ध्वजांकित करें क्योंकि यह उड़ा है!

मैंने इस पोस्ट में सलाह दी गई 1,500 के डिफ़ॉल्ट से डिफ़ॉल्ट रूप से 500,000 तक की गई दो सेटिंग्स को उठाया है, और यह मेरी समस्या का समाधान करता है।

पीसीआरई मिलान सीमा के लिए डिफ़ॉल्ट मान ModSecurity के साथ बहुत कम हैं। आप आमतौर पर अपने सेट को नुकसान पहुंचाए बिना 500K तक पहुंच सकते हैं। लेकिन आपकी जानकारी के लिए: पीसीआरई मैच सीमा नियमित अभिव्यक्तियों के माध्यम से डीओएस हमले के अवसर को कम करने के लिए है। तो सीमा को बढ़ाकर आप इस संबंध में अपनी भेद्यता बढ़ाते हैं, लेकिन पीसीआरई त्रुटियां सुरक्षा परिप्रेक्ष्य से बहुत खराब हैं।मैं prod आमतौर पर में 500K के साथ चलाएँ:

SecPcreMatchLimit 500000 SecPcreMatchLimitRecursion 500000

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

इसके अलावा https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecPcreMatchLimit

संबंधित मुद्दे