फायरवॉल के पीछे लिनक्स कंप्यूटर के क्लस्टर का प्रबंधन


19

मेरी कंपनी का उत्पाद अनिवार्य रूप से एक लिनक्स बॉक्स (उबंटू) है जो किसी और के नेटवर्क में हमारे सॉफ्टवेयर को चला रहा है। अब तक हमारे पास जंगल में 25 से कम बक्से थे और उन्हें प्रबंधित करने के लिए टीमव्यूअर का उपयोग किया।

अब हम इन बॉक्सों में से 1000 को शिप करने वाले हैं और TeamViewer अब कोई विकल्प नहीं है। मेरा काम इन बॉक्सों तक पहुंचने और उन पर सॉफ्टवेयर को अपडेट करने का एक तरीका है । यह समाधान फायरवॉल और आपके पास क्या है, इस बारे में जानने में सक्षम होना चाहिए।

मैंने माना है:

1. होम सॉल्यूशन सॉल्यूशन (जैसे लिनक्स सेवा) जो क्लाउड में एक सर्वर के लिए एसएसएच रिवर्स सुरंग स्थापित करता है, और क्लाउड में एक और सेवा जो उन पर नज़र रखता है और आपको उनसे कनेक्ट करने देता है।

यह स्पष्ट रूप से श्रम गहन और स्पष्ट रूप से बोल रहा है पहिया को सुदृढ़ करने जैसा लगता है क्योंकि कई अन्य कंपनियां पहले से ही इस समस्या को पार कर चुकी हैं। फिर भी, मुझे यकीन नहीं है कि हम इस पर बहुत अच्छा काम करेंगे।

2. कठपुतली, रसोइया या OpenVPN जैसे उपकरण

मैंने जितना संभव हो उतना पढ़ने की कोशिश की लेकिन मैं मार्केटिंग के माध्यम से पर्याप्त रूप से घुसने के लिए स्पष्ट विकल्प को समझने के लिए नहीं बोल सकता।

हमारे अलावा किसी और को इन बॉक्स से जुड़ने की जरूरत नहीं है। क्या कोई प्रासंगिक अनुभव है जो मुझे कुछ संकेत दे सकता है?


2
"हम जहाज के बारे में नहीं हैं" => " अब हम जहाज के बारे में हैं "?
बॉब

जवाबों:


23

अद्यतन खींचो, धक्का मत करो

जैसा कि आप पैमाने पर हैं, यह आपके सभी उत्पादों के लिए पुश अपडेट करने के लिए अक्षम होने जा रहा है ।

  • आपको हर एक ग्राहक को ट्रैक करना होगा , जिनके पास प्रत्येक अलग फ़ायरवॉल कॉन्फ़िगरेशन हो सकता है।
  • आपको ग्राहक के फ़ायरवॉल के माध्यम से आने वाले कनेक्शन बनाने होंगे, जिसके लिए पोर्ट-फ़ॉरवर्डिंग या इसी तरह के कुछ अन्य तंत्र की आवश्यकता होगी। यह आपके ग्राहकों के लिए सुरक्षा जोखिम है

इसके बजाय, अपने उत्पादों को समय-समय पर अपने अपडेट्स को 'पुल' करें, और फिर आप बढ़ते हुए अतिरिक्त क्षमता सर्वर-साइड जोड़ सकते हैं।

कैसे?

जैसा कि आपने सुझाया था, यह समस्या पहले ही हल हो चुकी है। यहाँ कई दृष्टिकोण हैं जिनके बारे में मैं सोच सकता हूँ।

  • एप्ट का उपयोग करना : कस्टम पीपीए और स्रोतों की सूची के साथ अंतर्निहित एप्ट प्रणाली का उपयोग करें। मैं पीपीए कैसे सेटअप करूं?
    • Con: जब तक आप लॉन्चपैड जैसी सार्वजनिक होस्टिंग सेवा का उपयोग नहीं करते हैं, तब तक अपना उपयुक्त PPA + पैकेजिंग सिस्टम स्थापित करना दिल के बेहोश होने के लिए नहीं है।
  • ssh का उपयोग करना : प्रत्येक उत्पाद के लिए SSH सार्वजनिक कुंजी उत्पन्न करें, और फिर उस डिवाइस की कुंजी को अपने अपडेट सर्वर में जोड़ें। उसके बाद, बस आपके सॉफ्टवेयर rsync/ scpफाइलों की आवश्यकता है।
    • Con: आपके द्वारा भेजे गए प्रत्येक उत्पाद के लिए सभी सार्वजनिक कुंजियों को ट्रैक (और बैकअप!) करना है।
    • प्रो : एक कच्चे डाउनलोड की तुलना में अधिक सुरक्षित है, क्योंकि केवल उन डिवाइस जो अपडेट तक पहुंच सकते हैं, वे सार्वजनिक कुंजी स्थापित होंगे।
  • कच्ची डाउनलोड + हस्ताक्षर जाँच :

    • कहीं हस्ताक्षरित अद्यतन फ़ाइल पोस्ट करें (Amazon S3, FTP सर्वर, आदि)
    • आपका उत्पाद समय-समय पर अद्यतन फ़ाइल के लिए जाँच करता है, और फिर हस्ताक्षर को डाउनलोड / सत्यापित करता है।
    • Con : इस बात पर निर्भर करता है कि आप इसे कैसे तैनात करते हैं, फाइलें सार्वजनिक रूप से सुलभ हो सकती हैं (जो आपके उत्पाद को रिवर्स इंजीनियर और हैक करने में आसान बना सकती हैं)
  • ansible : सिस्टम कॉन्फ़िगरेशन को प्रबंधित करने के लिए Ansible एक बढ़िया उपकरण है। यह कठपुतली / रसोइये के दायरे में है, लेकिन एजेंट रहित है (अजगर का उपयोग करता है) और इसे बेकार माना जाता है। यदि आपके सॉफ़्टवेयर को परिनियोजित करने के लिए जटिल बैश स्क्रिप्ट की आवश्यकता होती है, तो मैं आपके अपडेट को करने के लिए इसे कम जटिल बनाने के लिए इस तरह से एक उपकरण का उपयोग करूँगा।

बेशक, ऐसा करने के अन्य तरीके हैं .. लेकिन यह मुझे एक महत्वपूर्ण बिंदु पर लाता है।

अपने अपडेट पर हस्ताक्षर / सत्यापन करें!

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

इसका एक अच्छा तरीका यह है कि आप अपनी अपडेट फाइलों पर हस्ताक्षर करें। आपको एक प्रमाणपत्र बनाए रखना होगा (या किसी को ऐसा करने के लिए भुगतान करना होगा), लेकिन इससे पहले कि आप उन्हें छेड़छाड़ किए गए अपडेट को अस्वीकार कर सकें, आप अपने प्रत्येक डिवाइस पर अपने फिंगरप्रिंट को स्थापित करने में सक्षम होंगे।

शारीरिक सुरक्षा

बेशक, अगर किसी के पास ग्राहक की तैनाती के लिए भौतिक पहुंच है, तो वे आसानी से सर्वर पर कब्जा कर सकते हैं। लेकिन कम से कम वे अन्य तैनाती पर हमला नहीं कर सकते! भौतिक सुरक्षा आपके ग्राहक की ज़िम्मेदारी है।

यदि आप एक पल के लिए कल्पना करते हैं कि अगर आप अपडेट के लिए एक बड़े OpenVPN नेटवर्क का उपयोग करते हैं तो क्या होगा ... वे तब वीपीएन पर हर उदाहरण पर हमला करने के लिए समझौता किए गए सर्वर का उपयोग कर सकते हैं

सुरक्षा

आप जो कुछ भी करते हैं, शुरुआत से ही सुरक्षा का निर्माण किया जाना चाहिए । यहाँ कोनों को न काटें - यदि आप ऐसा करते हैं तो आपको अंत में पछतावा होगा।

पूरी तरह से इस अद्यतन प्रणाली को सुरक्षित करना इस पद के दायरे से बाहर है, और मैं दृढ़ता से एक सलाहकार को काम पर रखने की सलाह देता हूं यदि आप या आपकी टीम का कोई व्यक्ति इस क्षेत्र में जानकार नहीं है। यह हर पैसे के लायक है।


2
I प्रबंधन ")।
रिचवेल 13

यदि आप Ansible का उपयोग करने के मार्ग पर जाते हैं, तो आप इसे 'लोकलहोस्ट' पर चलाने के लिए लिख सकते हैं, और इसे प्रबंधित होने वाली किसी भी मशीन के लिए SSH एक्सेस की आवश्यकता नहीं होगी। इसे एक क्रोनजॉब होने के लिए कॉन्फ़िगर करें, और आप सुनहरे हैं।
BobTuckerman

1
BTW: यदि आप अपना स्वयं का पैकेज सर्वर चलाना चाहते हैं, fpmऔर aptlyदो बेहतरीन उपकरण हैं जो आपके स्वयं के पैकेज बनाने और होस्ट करने में बहुत आसान बनाते हैं। अभी हाल ही में इस प्रक्रिया से गुज़रा, और यह बहुत अच्छा था।
बॉबटुकरमैन

10

क्या आपको वास्तव में उन्हें एक्सेस करने की आवश्यकता है?

या सिर्फ उन्हें अपडेट करें? क्योंकि आप उन्हें स्वयं अपडेट कर सकते हैं, इसी तरह यह कैसे अपडेट किया जाता है कि यह स्वयं अप्राप्य है।

अगर आपको लॉगिन करना है

क्यों नहीं एक OpenSSH डेमॉन पोर्ट अग्रेषण के माध्यम से सुन रहा है? प्रत्येक ग्राहक के पास सुरक्षा के लिए एक अलग कुंजी हो सकती है और केवल तभी जुड़ा होगा जब जरूरत होगी।

अपने ग्राहकों के लिए

आपको यह ध्यान रखने की आवश्यकता है कि ग्राहक क्या स्वीकार करने को तैयार है। वे अपने नेटवर्क के लिए किसी भी दूरस्थ पहुँच के साथ सहज नहीं हो सकते हैं, या केवल विशिष्ट तकनीकों / कॉन्फ़िगरेशन के साथ सहज हो सकते हैं।


4
इस। कम-से-कम 1000 अलग-अलग ग्राहक आवश्यकताओं के साथ, कुछ आपके कार्यालयों में स्थायी रूप से ओपनवीएनपी कनेक्शन नहीं चाहेंगे। आदर्श रूप से आप उन्हें खुद को अपडेट करने की कोशिश करेंगे यदि / जब वे एक नए संस्करण का पता लगाते हैं / उपलब्ध हैं (एक एडब्ल्यूएस एस 3 बाल्टी में एक फ़ाइल से, कहते हैं। यही हम करते हैं।
सिरेक्स

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

हमारे पास S3 के अपडेट नहीं हैं, लेकिन हमारे पास एक टेक्स्ट फ़ाइल है, जो यह बताती है कि नवीनतम संस्करण क्या है - एप्लिकेशन द्वारा 'अपडेट उपलब्ध' बैनर संदेशों को प्रदान करने के लिए उपयोग किया जाता है। ग्राहक तब (हमारे मामले में मैन्युअल रूप से) नवीनतम संस्करण को डाउनलोड कर सकते हैं, हमारे मामले में एक सेवा से जिसे भ्रूण कहा जाता है।
सेरेक्स

9

मैं कठपुतली या नमक जैसे ऑर्केस्ट्रेशन टूल का सुझाव देता हूं ।

नमक एक संदेश कतार है और अपने उपकरण से मास्टर सर्वर पर लगातार आउटबाउंड कनेक्शन बना सकता है। आप इसका उपयोग उपकरणों पर मनमानी कमांड चलाने के लिए कर सकते हैं ... जैसे apt-get

दूसरा विकल्प पपेट है, जहां आपके पास अभी भी एक मास्टर सर्वर है और ग्राहक अपने स्थानों से आउटबाउंड कनेक्शन बनाते हैं।

मैं इन दोनों साधनों का उपयोग एक समान उद्देश्य के लिए करता हूं जहां मेरे पास फ़ायरवॉल का प्रशासनिक नियंत्रण नहीं हो सकता है।

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