जेनकिन्स से सुडो का उपयोग करना बुरा है?


11

मैं अपने ऐप्स को अलग-अलग परिवेशों से परिनियोजित करने के लिए पब्लिश ओवर एसएसएच प्लगइन का उपयोग करता हूं Jenkins। कुछ परिनियोजन कार्य वातावरण प्रॉप्स करते हैं और ऐप सर्वर सिस्टम सेवा को रोकना और पुनरारंभ करना पसंद करते हैं। उन आदेशों में से कुछ की आवश्यकता है sudo

मुझे बस उत्सुकता है अगर यह सुदूर प्रकाशन और जेनकींस की नौकरियों के निष्पादन में सूडो की आवश्यकता के लिए एक खराब सुरक्षा अभ्यास हो सकता है। क्या हमें सुडोकू के बिना आवश्यक कार्यों को करने की अनुमति देने के लिए लक्ष्य होस्ट पर सुरक्षा नीति को बदलना चाहिए?

जवाबों:


6

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

  • लेखा परीक्षा। जब आप sudo करते हैं, तो सिस्टम रिकॉर्ड करता है कि किसने sudoed किया और किस कमांड को उन्होंने चलाया। जब आप वापस जाने की जरूरत होती है, तो यह पता लगाने के लिए कि क्या हुआ - दोषपूर्ण कार्य करने के लिए, नापाक गतिविधियों को पकड़ने के लिए या समस्या निवारण उद्देश्यों के लिए (क्या नरक में कल रात 7 बजे से पहले यह सर्वर AWOL चला गया)?

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

  • हार्डनिंग। जड़ को निष्क्रिय करना संभव है। जैसा कि, सभी इरादों और उद्देश्यों के लिए, यह मौजूद नहीं है और यह एकल उपयोगकर्ता मोड में केवल उपयोगी / उपयोगी है - सर्वर के रिबूट की आवश्यकता होती है (और केवल यही कारण है कि यह पासवर्ड पुनर्प्राप्ति के लिए अनुमत है)। sudo suअब काम नहीं करता है। यह रूट के शेल को / bin / nologin पर सेट करके किया जाता है जो कई रूट एस्केलेशन कमजोरियों को रोकने का एक शानदार तरीका है। यह, निश्चित रूप से मानता है कि आप ऊपर दिए गए बुलेट का उपयोग ठीक से कर रहे हैं (और आप अभी भी एक विशिष्ट, व्यवस्थापक उपयोगकर्ता को सभी अनुमतियाँ प्रदान कर सकते हैं, हालांकि यह आपके सुरक्षा रुख को कमजोर कर देगा)।

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

संक्षेप में, सुरक्षा जटिल है, लेकिन एक सुरक्षित वातावरण के निर्माण में sudo एक बेहतरीन उपकरण है और अधिक से अधिक लोगों को इसका पूरा उपयोग करना चाहिए।


7

चाहे आप sudoकिसी ऐसी चीज़ के लिए रिमोट या रिमोट एक्सेस की अनुमति दें, जिसमें SUID rootआपके पास एक समान हमले की सतह हो। मैं sudoश्रृंखला में बना रहूंगा क्योंकि यह आपको आज्ञाओं को आसानी से सीमित करने देता है और लॉगिंग करता है जो महत्वपूर्ण होगा यदि आपको बाद में चीजों को ऑडिट करना होगा। sudoउत्पादन में भी एक लंबा इतिहास है। कुछ और करने से कम इतिहास और अप्रिय आश्चर्य के उच्च परिवर्तन होंगे।

हालांकि आप इसे और अधिक सुरक्षित बनाने के लिए कुछ अन्य चीजें कर सकते हैं:

  • कसना ssh
  • केवल कुछ विशिष्ट उपयोगकर्ताओं के लिए रीनेम कमांड को अनुमति दें, जिसमें जेनकींस के लिए एक भी शामिल है
  • केवल सभी आंतरिक IP या सिर्फ जेनकींस और जंप बॉक्स IP से उन विशिष्ट उपयोगकर्ताओं के लिए लॉगिन की अनुमति दें
  • रिमोट बॉक्स पर स्टोर लॉग्स ताकि वे के साथ mucked नहीं किया जा सकता

वास्तव में, मैंने अभी-अभी अपनी SSH नौकरी को कॉन्फ़िगर किया है और इसे चलाना नहीं चाहता sudo: "sudo: क्षमा करें, आपके पास sudo चलाने के लिए एक
ट्टी

1
आपको विकल्प देने sshकी आवश्यकता हो सकती है -t। या सुडोकू
chicks

जब मैं जेनकिन्स से बुलाया जा रहा हूं तो मैं एसएसएच को एक विकल्प कैसे प्रदान कर सकता हूं?
उभयलिंगी

मैं इस बारे में निश्चित नहीं हूं। क्या आपने sudoलिंक को प्रदर्शित करने के लिए ट्विक करने की कोशिश की ?
लड़कियों को

1
मैं दूरस्थ होस्ट पर sudoers बदलते (SSH लक्ष्य) tty (बाहर टिप्पणी की आवश्यकता नहीं करने के लिए द्वारा जेनकींस से sudo सक्षम करने में कामयाब रहे Defaults requiretty)
amphibient
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.