MySQL से सुरक्षित रूप से कनेक्ट करना - MySQL का SSL बनाम Stunnel बनाम SSH टनलिंग


15

हमारे पास एक PHP एप्लिकेशन है जो एक MySQL सर्वर से जुड़ता है, और हम वेब और एप्लिकेशन सर्वर और डेटाबेस के बीच कनेक्शन सुरक्षित करना चाहते हैं।

चरम समय पर, वेब सर्वर डेटाबेस में कई सैकड़ों समवर्ती कनेक्शन बनाते हैं, और बहुत सारे छोटे रीड और लेखन करते हैं। मुझे पता है कि यह इष्टतम नहीं है, और इसके समानांतर डेटाबेस कनेक्शन की संख्या को कम करने पर काम कर रहा हूं।

वर्तमान में चालू किए गए डेटाबेस के लिए हमारे पास लगातार कनेक्शन नहीं है, और यद्यपि हम भविष्य में इरादा रखते हैं मैं इसे स्वतंत्र रूप से लागू करना चाहता हूं।

हार्डवेयर वार - वेब सर्वर के रूप में MySQL सर्वर काफी चंकी (16 कोर) है। वे समर्पित सर्वर हैं।

मेरा सवाल तब डेटाबेस सर्वर से कनेक्शन को सुरक्षित और एन्क्रिप्ट करने का सबसे अच्छा तरीका है।

अब तक के मेरे शोध ने सुझाव दिया है कि मुख्य प्रदर्शन ओवरहेड एसएसएल कनेक्शन स्थापित करने के साथ है - एक बार एसएसएल कनेक्ट होने के बाद थोड़ा प्रदर्शन जुर्माना होता है। और यहां मेरे पास कनेक्शन हासिल करने के प्रत्येक तरीके के बारे में है:

  1. MySQL SSL प्रमाणपत्र - सामान्य एसएसएल की तरह ही काम करता है। अनधिकृत कनेक्शन को रोकने के लिए क्लाइंट प्रमाणपत्र का उपयोग कर सकते हैं। हमारे मौजूदा सेटअप के साथ कोई लगातार कनेक्शन नहीं। अभी भी MySQL को फ़ायरवॉल पर एक खुले पोर्ट पर सुनना पड़ता है।
  2. stunnel। Ssl टनल को पोर्ट करने के लिए एक पोर्ट सेट करें। MySQL को फिर से कॉन्फ़िगर करने की आवश्यकता नहीं है। दुर्भावनापूर्ण MySQL कनेक्शन प्रयासों को रोकने के लिए सामान्य MySQL श्रवण बंदरगाह को बंद कर सकते हैं। लगातार कनेक्शन का समर्थन नहीं करता है। अज्ञात प्रदर्शन हिट।
  3. SSH टनलिंग। क्लाइंट और सर्वर के बीच एक SSH सुरंग बनाएं। MySQL को फिर से कॉन्फ़िगर करने की आवश्यकता नहीं है। दुर्भावनापूर्ण MySQL कनेक्शन प्रयासों को रोकने के लिए सामान्य MySQL श्रवण बंदरगाह को बंद कर सकते हैं। लगातार कनेक्शन का समर्थन करता है, लेकिन ये कभी-कभी बाहर निकल जाते हैं। अज्ञात प्रदर्शन हिट।

यह उतना ही है जितना कि मैं पाने में सक्षम हूं। मुझे बेंचमार्क की सीमाओं के बारे में पता है - उन्हें चलाने के मेरे अनुभव में वास्तविक दुनिया के यातायात का अनुकरण करना बहुत मुश्किल है। मैं उम्मीद कर रहा था कि किसी ने MySQL हासिल करने के अपने अनुभवों के आधार पर कुछ सलाह दी थी?

धन्यवाद


आपके पास किस तरह का सर्वर / नेटवर्क आर्किटेक्चर है? आप किस तरह के परिदृश्य को रोकने की कोशिश कर रहे हैं? यदि आपके सभी सर्वर-टू-सर्वर संचार एक अलग स्विच / वीएलएएन पर हैं, तो आपको एंटी-स्निफिंग सुरक्षा की आवश्यकता नहीं हो सकती है। प्रदर्शन के लिए, openssl speedसाइपर को चलाएं और चुनें जो आपकी सुरक्षा की आवश्यकताओं को पूरा करता है।
मार्सिन

@ मार्सिन - खुलने की गति टिप के लिए धन्यवाद। जिन परिदृश्यों को मैं रोकने की कोशिश कर रहा हूं, वे mysql से अनधिकृत कनेक्शन हैं और सर्वर के बीच संचार को एन्क्रिप्ट करने के लिए हैं। किसी भी आगे की मदद से आप तीन दृष्टिकोणों की तुलना करने के लिए आभार प्राप्त करेंगे।
14

1
3) ड्रॉपआउट प्रभाव को कम करने के लिए ऑटोसह का उपयोग करें । यह डिस्कनेक्ट होने की स्थिति में स्वचालित रूप से पुन: कनेक्ट हो जाएगा। यहाँ बहुत सारी स्थितियों में काम करता है।
अंसी_लुमेन

जवाबों:


5

मैं ssh-tunnel के साथ जाऊँगा और autosshइसके बजाय इसे करूँगा ssh। प्रदर्शन के बारे में मैं कहूंगा, कि SSH प्रोटोकॉल अत्यधिक अनुकूलन योग्य है और जरूरत पड़ने पर आप अपने कनेक्शन को ठीक कर सकते हैं।

लेकिन मैं कनेक्शन स्थापित होने के बाद ध्यान देने योग्य ओवरहेड की उम्मीद नहीं करूंगा।


3

इस लेख (MySQL Performance Blog) के मानदंड को देखकर , आपको वास्तव में MySQL की मूल SSL क्षमता से बचना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.