कई सर्वरों के लिए SSH का प्रवेश द्वार


12

कई सर्वरों का प्रबंधन करना, 90 से अधिक वर्तमान में 3 devops के माध्यम से Ansible। सभी महान काम कर रहे हैं, हालांकि अभी एक विशाल सुरक्षा समस्या है। प्रत्येक डेवोप सर्वर पर सीधे पहुंच प्राप्त करने के लिए अपनी स्वयं की स्थानीय ssh कुंजी का उपयोग कर रहा है। प्रत्येक डेपॉप एक लैपटॉप का उपयोग करता है, और प्रत्येक लैपटॉप को संभावित रूप से समझौता किया जा सकता है और इस तरह ठेस सर्वर के पूरे नेटवर्क को एक हमले तक खोल सकता है।

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

मेरे सिर के ऊपर से मुझे लगता है कि समाधान एक मशीन से एक सुरंग होगा, प्रवेश द्वार, वांछित ठेस सर्वर तक ... प्रवेश द्वार से गुजरते समय अनुरोध एक नई कुंजी उठाएगा और ठेस तक पहुंच प्राप्त करने के लिए उपयोग करेगा। सर्वर। इसका नतीजा यह होगा कि हम गेटवे तक सिर्फ पहुंच से वंचित रहकर सेकंड के भीतर किसी भी डेपॉप के लिए जल्दी और कुशलता से मार सकते हैं।

यहाँ छवि विवरण दर्ज करें

क्या यह अच्छा तर्क है? किसी को भी वहाँ पहले से ही इस समस्या को दूर करने के लिए एक समाधान देखा है?


1
यह AWX / टॉवर पर जाने का समय है।
माइकल हैम्पटन

मैं SSH कुंजी प्रबंधन और 2FA के लिए क्रिप्टोनाइट हाल ही में कोशिश कर रहा हूं, और यह मेरे लिए बहुत अच्छा काम कर रहा है। उनके समर्थक / उद्यम पैकेज और भी अधिक नियंत्रण देने के लिए लगता है और साथ ही लॉगिन का ऑडिटिंग भी ..
एलेक्स

2
जवाब फ्रीपा है
जैकब इवांस

जवाबों:


22

यह बहुत जटिल है (यदि एक कुंजी एक विशिष्ट ठेस सर्वर तक पहुँच है) की जाँच। जम्प होस्ट के रूप में गेटवे सर्वर का उपयोग करें जो प्रत्येक वैध कुंजी को स्वीकार करता है (लेकिन आसानी से एक विशिष्ट कुंजी के लिए उपयोग को हटा सकता है जो बदले में सभी सर्वरों तक पहुंच को हटाता है) और फिर प्रत्येक संबंधित सर्वर में केवल अनुमत कुंजी जोड़ें। उसके बाद, सुनिश्चित करें कि आप जम्प होस्ट के माध्यम से केवल हर सर्वर के SSH पोर्ट तक पहुँच सकते हैं।

यह मानक दृष्टिकोण है।


2
और भी बेहतर: @Sven क्या कहता है लेकिन जम्प होस्ट में 2FA भी जोड़ें। क्योंकि आप केवल लैपटॉप से ​​सीधे कनेक्ट कर रहे हैं जब आपको मैन्युअल रूप से, सही करने की आवश्यकता है? जम्प होस्ट के अंदर सर्वर से स्वचालित कुछ भी चल रहा है?
आदम

1
यदि आपके पास एक स्थानीय प्रमाणपत्र प्राधिकारी (अधीनस्थ या पृथक) है, तो आप एसएसएच के साथ उन प्रमाणपत्रों का उपयोग कर सकते हैं, जो आपको एक मान्य समझौता प्रमाण पत्र को केंद्रीय रूप से अमान्य करने की अनुमति देते हैं।
रान्डेल

11

इंजीनियरों को अपने लैपटॉप से ​​सीधे ansible नहीं चलना चाहिए, जब तक कि यह एक देव / परीक्षण वातावरण न हो।

इसके बजाय, एक केंद्रीय सर्वर है जो रनबुक को गिट से खींचता है। यह अतिरिक्त नियंत्रण (चार आँखें, कोड समीक्षा) के लिए अनुमति देता है।

आगे पहुँच को प्रतिबंधित करने के लिए एक गढ़ या कूद-मेजबान के साथ इसे मिलाएं।


1
वास्तव में, यह समस्या है कि AWX (या इसके वाणिज्यिक संस्करण टॉवर) हल करती है।
माइकल हैम्पटन

1

नेटफ्लिक्स ने आपके सेटअप को लागू किया और उस स्थिति में मदद करने के लिए कुछ मुफ्त सॉफ्टवेयर जारी किए।

इस वीडियो को देखें https://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-access या https://speakerdeck.com/rlewis/how-netflix-gives पर यह प्रस्तुति मूल बिंदु के साथ इसके सभी इंजीनियर-एसश-एक्सेस-टू-इंस्टेंस-रनिंग-इन-प्रोडक्शन :

हम अपने SSH गढ़ वास्तुकला की समीक्षा करेंगे, जो इसके मूल में इंजीनियरों को प्रमाणित करने के लिए SSO का उपयोग करता है, और फिर उदाहरण के लिए गढ़ के SSH प्रमाणीकरण के लिए लघु जीवित प्रमाणपत्र के साथ प्रति उपयोगकर्ता क्रेडेंशियल्स जारी करता है। ये अल्पकालिक साख जोखिम से जुड़े जोखिम को कम करते हैं। हम कवर करेंगे कि यह दृष्टिकोण हमें ऑडिट की अनुमति देता है और एक्सेस देने से पहले इंजीनियरों को धीमा करने के बजाय, इस तथ्य के बाद स्वचालित रूप से सतर्क करने की अनुमति देता है।

उनका सॉफ्टवेयर यहां उपलब्ध है: https://github.com/Netflix/bless

यदि आप उनके संपूर्ण समाधान को लागू नहीं करते हैं, तो भी कुछ दिलचस्प रास्ते:

  • वे बस कुंजियों के बजाय SSH प्रमाणपत्र का उपयोग करते हैं; आप प्रमाण पत्र में कहीं अधिक मेटा-डेटा डाल सकते हैं, इसलिए प्रति आवश्यकताओं के लिए बहुत सारी बाधाओं को सक्षम करने और सरल ऑडिट की अनुमति भी देता है
  • बहुत कम अवधि (जैसे 5 मिनट) प्रमाणपत्र वैधता का उपयोग करना (एसएसएच सत्र प्रमाणपत्र समाप्त होने के बाद भी खुले रहना)
  • 2FA का उपयोग करना भी स्क्रिप्टिंग को मुश्किल बनाता है और डेवलपर्स को अन्य समाधान खोजने के लिए मजबूर करता है
  • विशिष्ट बुनियादी ढांचा, उनके बुनियादी ढांचे के बाहर और ठीक से क्लाउड द्वारा पेश किए गए सुरक्षा तंत्र के माध्यम से सुरक्षित किया जाता है जहां यह चलता है, गतिशील रूप से प्रमाण पत्र पैदा करता है ताकि प्रत्येक डेवलपर किसी भी मेजबान तक पहुंच सके

1

OneIdentity (ex-Balabit) SPS इस परिदृश्य में आपके लिए आवश्यक सटीक चीज़ है। इस उपकरण के साथ आप मूल रूप से किसी भी मशीन पर उपयोगकर्ता पहचान का प्रबंधन कर सकते हैं, उपयोगकर्ता के व्यवहार को ट्रैक कर सकते हैं, मॉनिटर और अलर्ट कर सकते हैं, और उपयोगकर्ताओं को बाद की समीक्षाओं के लिए जो कुछ भी कर सकते हैं उसे अनुक्रमणित करेंगे।


0

मेरा सुझाव उपयोगकर्ता मशीनों से SSH की पहुंच को समाप्त करना है।

इसके बजाय आपको चाहिए

  1. Git में होस्ट प्लेबुक।
  2. "एक्सेस सर्वर" को जेनकिन्स सर्वर में बदल दें।
  3. केवल देवियों के उपयोगकर्ताओं तक जेनकींस पहुंच की आवश्यकता है।
  4. HTTP के माध्यम से नौकरियों के निर्माण को लेकर जेनकींस पर अनस्यूटेबल नाटकों का प्रदर्शन।
  5. एक अतिरिक्त सुरक्षा उपाय के रूप में, यदि आवश्यक हो तो जेनकिंस सीएलआई को अक्षम करें।

नमूना निष्पादन मॉडल,

  1. जेनकिंस Ansible प्लगइन: https://wiki.jenkins.io/display/JENKINS/Ansible+Plugin

या

  1. क्लासिक शेल -एक्सट्यूट प्रकार की नौकरी। अपने चेक चरणों को मैन्युअल रूप से जोड़ें, जिसमें गिट चेकआउट शामिल है।

यदि आप सर्वर संसाधनों के साथ सीमित हैं, तो वही जेनकिंस सर्वर Git (scm-manager) को भी होस्ट कर सकता है, हालाँकि डेवलपर मशीन में से एक के संक्रमित होने पर अतिरिक्त सुरक्षा जोखिम होता है। आप इसे इंटरनेट से जेनकिंस सर्वर को डिस्कनेक्ट करके और स्थानीय रूप से विश्वसनीय निर्भरता को हल करके इसे कम करने में सक्षम हो सकते हैं।

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