php

2008-10-06 3 views
8

के साथ साझा सर्वर स्थापित करने के लिए आप क्या सलाह देते हैं सुरक्षा/प्रदर्शन बिंदु दृश्य से php के साथ साझा सर्वर स्थापित करने के लिए आप क्या सलाह देते हैं?php

  • अपाचे mod_php (कैसे आपको लगता है कि सुरक्षित हो? सेफ_मोड के रूप में यह PHP6 में नहीं होगा अलावा अन्य)
  • अपाचे सीजीआई + suexec
  • Lighttpd और प्रति उपयोगकर्ता FastCGI अंडे

LE: मुझे पहले से बनाए गए नियंत्रण कक्ष का उपयोग करने में कोई दिलचस्पी नहीं है क्योंकि मैं अपना खुद का लिखने की कोशिश कर रहा हूं इसलिए मैं जानना चाहता हूं कि इसे स्वयं स्थापित करने का सबसे अच्छा तरीका क्या है। मैं लाइटटैड का उपयोग करने में सोच रहा था और प्रत्येक होस्टेड उपयोगकर्ता के लिए fccgi प्रक्रिया को अपने क्रेडेंशियल के तहत चलाने के लिए एक fastcgi spawn (lighttpd विकी पर इसके लिए एक ट्यूटोरियल है)। यह कुछ हद तक सुरक्षित होगा लेकिन क्या यह प्रदर्शन को प्रभावित करेगा (प्रत्येक fcgi के लिए आवश्यक उपयोगकर्ताओं/स्मृति की बहुत सारी) इतनी अधिक है कि यह व्यवहार्य समाधान नहीं है?

उत्तर

11

व्यक्तिगत रूप से, जबकि Lighttpd ठीक है, मैं अगर तुम अंत एक हल्के वेबसर्वर + FastCGI समाधान के साथ जा रहा Nginx + FastCGI के साथ जाना होगा। मैंने बेंचमार्क चलाए हैं और सभी कोड पढ़े हैं, और Nginx लोड के तहत तेजी से/अधिक स्थिर परिमाण का क्रम है - यह बहुत अच्छा है।

लेकिन, यह नहीं है कि आपने जो पूछा है। अनिवार्य रूप से, मैं कहूंगा कि आपके द्वारा सूचीबद्ध तीन विकल्पों में सुरक्षा/स्केलेबिलिटी बनाम स्पीड ट्रेडऑफ का स्पेक्ट्रम है, और आपको केवल यह तय करने की आवश्यकता है कि आप कहां बनना चाहते हैं।यदि आप अविश्वसनीय उपयोगकर्ताओं के साथ एक साझा होस्टिंग प्रदाता हैं जो ईश्वर-जानता है- क्या PHP ऐप्स आप सुरक्षा के प्रति अधिक दुबला होंगे, अगर यह अधिक विश्वसनीय उपयोगकर्ताओं के बीच साझा किया जाता है तो आप प्रदर्शन की ओर झुक सकते हैं। यहां मेरे विचार हैं:

CGI + suexec: यह साझा होस्टिंग वातावरण में उपयोगकर्ताओं/साइटों की संख्या के संदर्भ में आपके लिए सबसे सुरक्षित, और सबसे कुशल/स्केल करने योग्य है। प्रक्रियाएं उत्पन्न होती हैं और मेमोरी केवल अनुरोध के रूप में उपयोग की जाती है। बेशक, सीजीआई-स्पॉन्गिंग व्यक्तिगत स्क्रिप्ट के निष्पादन समय के लिए सबसे धीमी गति से बनाता है। कितना धीमा? खैर आपको बेंचमार्क करना होगा, लेकिन आम तौर पर यदि लोग लंबे समय से चल रहे ऐप्स चला रहे हैं (यानी वर्डप्रेस की तरह कुछ जो 0.25-0.5 सेकंड लेता है तो बस अपनी libs लोड करने और प्रत्येक अनुरोध पर आरंभ करने के लिए), तो CGI-spawning पेनल्टी सुंदर दिखने लगती है संदर्भ में नगण्य।

FastCGI: यहां मुद्दा यह है (और यह फर्क नहीं पड़ता अगर अपने वेब सर्वर अपाचे, Lighttpd या Nginx है), पता लगाना है, क्योंकि प्रत्येक प्रक्रिया स्मृति के बराबर खाती कितने FCGI बच्चे आप प्रत्येक उपयोगकर्ता चल छोड़ने प्रक्रियाओं PHP दुभाषिया का आकार (लिनक्स में यह सब निश्चित रूप से वायर्ड नहीं है, लेकिन मैं digress)। और, mod_php के विपरीत, इन प्रक्रियाओं को उपयोगकर्ताओं के बीच साझा नहीं किया जाता है, इसलिए आपको प्रति उपयोगकर्ता को सीमित करना होगा। मिसाल के तौर पर, ड्रीमहोस्ट अपने ग्राहकों के लिए 3 पर कैप्स करता है - अब, एक ऐसे ग्राहक के लिए जो एक वेबसाइट चला रहा है जो 2-5 से अधिक पृष्ठों के विस्फोटों को एक सेकंड में फट जाता है, यह वास्तव में बहुत बुरा है क्योंकि उन अनुरोधों को बस ढेर कर दिया गया है और साइट लटकती है। अब, मैं एक हल्के वेब सर्वर के साथ FastCGI तरह जब मैं एक समर्पित सर्वर/क्लस्टर पर क्षुधा चल रहा हूँ, जब मैं FCGI बच्चों की एप्लिकेशन सैकड़ों दे सकते हैं (बेशक वेबसर्वर privs के साथ सभी, ए ला अपाचे/prefork + mod_php) । लेकिन, मुझे नहीं लगता कि यह साझा होस्टिंग के लिए समझ में आता है जहां आपको प्रति उपयोगकर्ता एफसीजीआई बच्चों को आवंटित/कैप करना होता है।

अपाचे + mod_php: वेबसर्वर निजी के साथ चल रहे सब कुछ के बाद से कम सुरक्षित, लेकिन लाइव PHP प्रक्रियाओं का आपका पूल साझा किया जाता है, इसलिए यह प्रदर्शन अंत में सबसे अच्छा है। एक डेवलपर के दृष्टिकोण से, मैं php_safe मोड बर्दाश्त नहीं कर सकते, और एक सिस्टम प्रशासक के नजरिए से यह वास्तव में केवल सुरक्षा का भ्रम है (यह बेवकूफ उपयोगकर्ताओं के खिलाफ कम कर लेकिन एक वास्तविक हमले से रक्षा नहीं करता है) तो मैं वास्तव में नहीं बल्कि अगर सीजीआई होता मेरी अन्य विकल्प में saf_mode शामिल करना है।

ड्रीमहोस्ट एक हाइब्रिड का प्रकार करता है, तो वे डिफ़ॉल्ट रूप से अपाचे सीजीआई + सुएक्सैक करते हैं, लेकिन एफसीजीआई करने के लिए परिष्कृत चुने गए अपने अधिक उपयोगकर्ताओं का (छोटा) प्रतिशत, यदि वे चाहते हैं, तो टोपी और स्वयं के स्मृति उपयोग की निगरानी। यह डिफ़ॉल्ट रूप से एफसीजीआई को सक्षम करने के लिए मेमोरी संसाधनों का एक टन बचाता है।

यदि आप मानक वाणिज्यिक साझा होस्टिंग के बारे में बात कर रहे हैं तो एक और मुद्दा यह है कि, अपाचे पूरी तरह से फीचर्ड है, इसमें कुछ भी के लिए मॉड्यूल हैं (जिसमें mod_security जैसी चीज़ें शामिल हैं), और आपके उपयोगकर्ता इसे पसंद करेंगे क्योंकि उनके सभी। इनको कॉन्फ़िगरेशन आदि काम करेंगे - आप कुछ और के साथ समर्थन सिर दर्द में चलाने के लिए जब वे Drupal या वर्डप्रेस या जो कुछ भी स्थापित करने के लिए जाना (एक बहुत कोई समस्या नहीं रह अगर हम आंतरिक उपयोगकर्ताओं बात कर रहे हैं) होगा।

निजी तौर पर मैं सिर्फ यह आसान शुरू करने के लिए रखने और सीजीआई + सबसे अच्छा सुरक्षा और scaleability के लिए suexec के साथ जा रहा सिफारिश करेंगे। अपने उपयोगकर्ताओं FCGI या mod_php चाहते हैं और आप सुझाव/उन लोगों के साथ संचार के लिए खुला एक अच्छा चैनल है, तो वे इसके लिए पूछना होगा, लेकिन इनमें से कोई भी उनके लिए केवल सीमांत प्रदर्शन में सुधार के साथ आप के लिए एक बहुत बड़ा सिरदर्द है, इसलिए मेरी सुझाव शुरुआत में उनमें से कोई भी नहीं करना होगा, लेकिन अगर वे इसके लिए झगड़ा करते हैं तो उत्तरदायी रहें।

मैं मानक अपाचे + सीजीआई + सुएक्सैक की बजाय लाइटटैड + एफसीजीआई जैसे कुछ "रोचक" करने की इच्छा से सहानुभूति व्यक्त करता हूं, लेकिन मैं गहराई से मैं वास्तव में इसकी अनुशंसा नहीं कर सकता।

यदि आप एकाधिक सर्वर चला रहे हैं, तो आप दूसरों पर बिजली उपयोगकर्ताओं के लिए कुछ और कुछ और पर CGI डाल सकते हैं। और phpbb के पुराने-गधे संस्करणों जैसी चीजों के लिए सभी www dirs cron grep होना सुनिश्चित करें!

0

मैं लगभग एक वर्ष के लिए InterWorx का उपयोग कर रहा हूं और बहुत प्रभावित हूं। यह सुरक्षा के लिए आपकी स्क्रिप्ट को chroots के साथ एक LAMP सर्वर बनाए रखता है।

मैंने Ensim का भी उपयोग किया है, लेकिन इसे मित्रवत, तेज़ के रूप में नहीं मिला है और इसमें कई सुविधाएं नहीं हैं। इसके अलावा यह बहुत अधिक खर्च करता है।

2

मैं PHP + FastCGI और सुरक्षा के संबंध में Suhosin

1

सलाह देते हैं, this blog post की जाँच करें।

एक साझा होस्टिंग सर्वर की सुरक्षा की चुनौती दोनों बाहर से और अंदर से हमले से वेबसाइट सुरक्षित करने के लिए कैसे है। PHP में सहायता करने के लिए अंतर्निहित सुविधाएं हैं, लेकिन अंत में यह समस्या का समाधान करने के लिए गलत जगह है।

मैं पहले से ही समाधान है कि काम की एक संख्या के बारे में लिखा गया है, लेकिन एक ही विकल्प मैं देखो करने के लिए समय और समय कहा गया है फिर से पीएचपी + FastCGI उपयोग कर रहा है पर। विश्वास है कि FastCGI का उपयोग कर अपाचे के suexec या mod_suphp के प्रदर्शन के मुद्दों पर काबू पाने, क्योंकि FastCGI प्रक्रियाओं पेज विचारों के बीच जारी रहती है।

लेकिन इससे पहले कि हम प्रदर्शन देख सकते हैं, पहले सवाल यह है: कैसे वास्तव में कर हम मिल PHP और FastCGI पहली जगह में एक वेब सर्वर पर विभिन्न उपयोगकर्ताओं के रूप में चल रहा है?

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