चुरोट में नाम (बाइंड) चलाना सुरक्षा के लिए इतना महत्वपूर्ण क्यों है? या शायद यह नहीं है?


12

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

क्या जेल के बिना इसे स्थापित करना वास्तव में हानिकारक है (अधिक फिर किसी अन्य सेवा या सॉफ़्टवेयर)। प्रणालियों में चुरोट के बिना चलने में बहुत सारी सफलताएँ होती हैं और मुझे लगता है कि उनमें से कोई भी समझौता बहुत खतरनाक है, लेकिन जो नाम दिया गया है वह और अधिक खतरनाक है, तो बिना चुरोट के अन्य सॉफ्टवेयर चल रहा है?


1
प्रश्न में जोड़ने के लिए: यह आधुनिक मशीनों के आधुनिक उपयोग से कैसे प्रभावित होता है? किसी भी मामूली आकार की तैनाती के लिए प्रत्येक कार्य के लिए वीएम समर्पित करने की संभावना बढ़ रही है, इसलिए इसके पास कोई अन्य डेटा / एप्लिकेशन नहीं है। वहाँ अभी भी chrooting में एक वास्तविक लाभ है?
gregmac

3
चिरोट जेल नहीं है। बीएसडी पर एक जेल कुछ विशिष्ट है। यदि आप समतुल्य चाहते हैं तो आपको LXC
Zoredache

जवाबों:


14

जैसा कि @Some Guy ने उल्लेख किया है कि आपको इस बारे में ऐतिहासिक परिप्रेक्ष्य में सोचना होगा।

ऐतिहासिक परिप्रेक्ष्य यह था कि एक एकल ऑपरेटिंग सिस्टम के तहत हार्डवेयर का एक टुकड़ा एक दर्जन या विभिन्न सेवाओं का था। यदि एक सेवा से समझौता किया गया था, तो उस हार्डवेयर पर सब कुछ समझौता किया गया था।

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

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

बाइंड के पहले के संस्करण विशेषाधिकार नहीं छोड़ते थे। यूनिक्स पर, केवल रूट खाता 1024 से नीचे के पोर्ट खोल सकता है, और बिंद के रूप में हम सभी जानते हैं कि udp / 53, और tcp / 53 पर सुनना होगा। चूंकि बिंद जड़ के रूप में शुरू होता है, और विशेषाधिकारों को नहीं छोड़ता है, इसलिए इसका मतलब है कि पूरी प्रणाली से समझौता किया जा सकता है। इन दिनों लगभग कोई भी सॉफ़्टवेयर अपनी सॉकेट खोलना शुरू कर देगा और किसी भी अन्य सामान को करेगा जिसमें रूट विशेषाधिकारों की आवश्यकता होगी, फिर वे उस उपयोगकर्ता को बदल देंगे जिसे वे गैर-विशेषाधिकार प्राप्त खाते के रूप में चला रहे हैं। एक बार विशेषाधिकारों को छोड़ दिए जाने के बाद समझौता किए जाने का प्रभाव मेजबान प्रणाली के लिए बहुत कम है।


10

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

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

उपर्युक्त स्थिति कुछ हद तक SomeGuy उल्लेखों के रूप में संभावना नहीं है, इन दिनों BIND की कुछ कमजोरियां हैं और वे ज्यादातर दूरस्थ निष्पादन के बजाय DoS प्रकार के परिदृश्यों तक सीमित हैं। उस ने कहा, चेरोट में दौड़ना कुछ OS पर डिफ़ॉल्ट कॉन्फ़िगरेशन है, इसलिए कभी-कभी थोड़ी-बहुत वृद्धि हुई सुरक्षा को बनाए रखने के लिए आपकी ओर से कोई प्रयास करने की संभावना नहीं है।


5

प्रस्तावना

मैं इंटरनेट पर सभी लोगों को गलत धारणाओं को दोहराते हुए सुनता रहता हूं .. इस प्रकार, मैं कुछ स्पष्टीकरण देने का प्रयास करूंगा

सबसे पहले; कितनी आकस्मिक खोजें हुई हैं, जो कि बस .. कारण और प्रभाव के कारण समाप्त हो गई हैं, जो अपने इच्छित उद्देश्य के अलावा किसी और चीज के लिए इस्तेमाल की जा रही हैं ?

क्या था, और क्या है, चारोट जेल

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

चेरोट का प्रभावी ढंग से उपयोग किया गया है , और कई कार्यक्रमों और पुस्तकालयों (यानी ओपनएसएसएचडी, अपाचे 2 + mod_security2 / mod_chroot, dovecot, sendmail, openVPN, pam_chroot, और बहुत अधिक ) के लिए सीधे कोड बेस में है । यह मानते हुए कि इन सभी मुख्यधारा के अनुप्रयोगों ने दोषपूर्ण सुरक्षा समाधानों को लागू किया है, सिर्फ सच नहीं है

चुरोट सिस्टम वर्चुअलाइजेशन फाइल करने के लिए एक समाधान है: कुछ कम नहीं, कुछ ज्यादा नहीं। धारणा है कि आप आसानी से एक चौराहे से बाहर तोड़ सकते हैं यह भी सच नहीं है ... जब तक आप चेरोट जेल के अंदर चलने वाली प्रक्रियाओं के दिशानिर्देशों का पालन करते हैं।

अपने चिरोट जेल को सुरक्षित करने के लिए कुछ कदम

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

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

प्रत्येक व्यवस्थापक के पास समर्पित सर्वर पर या संपूर्ण सिस्टम वर्चुअलाइजेशन के तहत सभी आवश्यक कर्नेल मापदंडों को सुरक्षित करने के लिए आवश्यक ज्ञान का स्तर नहीं है। इसका मतलब यह है कि OpenVZ को तैनात करने का अर्थ है कि आपके ग्राहकों के पास अपने अनुप्रयोगों को तैनात करने से पहले प्रयास करने और कवर करने और सुरक्षित करने के लिए बहुत कम हमले की सतह होगी। एक अच्छा मेजबान इन मापदंडों को हासिल करने के लिए एक अच्छा काम करेगा, और यह बदले में, यह न केवल हर किसी के लिए नोड पर, या डेटा-सेंटर में, बल्कि एक पूरे के रूप में इंटरनेट के लिए बेहतर है ...

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

यदि ऐसा होता है, तो इसका परिणाम आम तौर पर खराब अद्यतन, शून्य दिन के शोषण या मुहावरेदार मानवीय त्रुटि के रूप में होता है

चुरोट का उपयोग अभी भी क्यों किया जाता है, पूर्ण प्रणाली वर्चुअलाइजेशन के विपरीत

इस परिदृश्य पर विचार करें: आप एक वर्चुअल प्राइवेट सर्वर चला रहे हैं, जिसमें होस्ट नोड OpenVZ चल रहा है। आप बस कुछ भी नहीं चला सकते हैं जो कर्नेल स्तर पर काम करता है। इसका अर्थ यह भी है कि आप अलग-अलग प्रक्रियाओं के लिए ऑपरेटिंग सिस्टम वर्चुअलाइजेशन का उपयोग नहीं कर सकते हैं, और अतिरिक्त सुरक्षा प्रदान कर सकते हैं। इस प्रकार, आप इस उद्देश्य के लिए चुरोट का उपयोग करना चाहिए

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

एक और परिदृश्य पर विचार करें: आपके पास एक आभासी वातावरण में चलने वाला अपाचे है। आप प्रत्येक उपयोगकर्ता को अलग करना चाहते हैं। एपाचे (mod_chroot, mod_security, आदि) पर चेरोट ऐड के माध्यम से एक वर्चुअलाइज्ड फाइल सिस्टम प्रदान करना अंतिम उपयोगकर्ताओं के बीच अत्यंत गोपनीयता सुनिश्चित करने के लिए सबसे अच्छा विकल्प होगा। यह भी खुफिया जानकारी को रोकने में मदद करता है, और सुरक्षा की एक और परत प्रदान करता है।

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

आपके सवाल के जवाब में

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

यह भी ... यह स्वचालित रूप से इस एप्लिकेशन को चेरोट करने के लिए अधिक समझ में आता है, इसलिए नहीं, क्योंकि हर किसी के पास पूर्ण सिस्टम / ऑपरेटिंग सिस्टम स्तर वर्चुअलाइजेशन तक पहुंच नहीं है। बदले में, और सिद्धांत रूप में, CentOS उपयोगकर्ता आधार को सुरक्षा प्रदान करने में मदद करता है:

ऑपरेटिंग सिस्टम प्रदाता बस यह मानकर नहीं चलते हैं कि हर एक समान सिस्टम चला रहा है। इस तरह, वे बड़े पैमाने पर सुरक्षा की एक अतिरिक्त परत प्रदान करने में मदद कर सकते हैं ...

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


चेरोट बिंदु रिक्त के मूल डेवलपर ने कहा कि उन्होंने सुरक्षा उपयोग के लिए चेरोट का इरादा कभी नहीं किया। के रूप में प्रमुख अनुप्रयोग डेवलपर्स दोषपूर्ण सुरक्षा को लागू करने के लिए ... एआरएम, इंटेल, और एएमडी सभी ने हाल ही में अपने हार्डवेयर में एक सुरक्षा दोष की खोज की जो पेंटियम युग के सभी रास्ते वापस जा रहे हैं। SSLv2, SSLv3, TLSv1, और TLS1.1 सभी में TLSv1.1 के बावजूद महत्वपूर्ण सुरक्षा खामियां हैं। अभी भी OpenSSHd, Apache, Dovecot, OpenVPN के लिए एक उद्योग मानक है ... बहुत अधिक हर किसी ने उल्लेख किया है। और वे सभी अभी भी SSL संपीड़न का उपयोग करने के लिए डिफ़ॉल्ट हैं जो नवीनतम TLSv1.2 और TLSv1.3 मानकों को भी कमजोर कर देता है।
क्लिफ आर्मस्ट्रांग

डेवलपर्स (सफल वाले, कम से कम) अंततः सुविधा और सुरक्षा के बीच संतुलन रखते हैं ... और वे अक्सर सुरक्षा पर सुविधा का पक्ष लेते हैं। ये एप्लिकेशन "सुरक्षा" के लिए चेरोट का समर्थन करते हैं क्योंकि उनके उपयोगकर्ता इसकी मांग करते हैं। उनके उपयोगकर्ता सामान्य गलत धारणा के कारण यह मांग करते हैं कि यह सार्थक सुरक्षा प्रदान करता है। लेकिन, जनता / प्राधिकरण के तर्क के लिए आपकी अपील के बावजूद, यह प्रत्यक्ष रूप से सच नहीं है।
क्लिफ आर्मस्ट्रांग

3

यह आंशिक रूप से ऐतिहासिक कारणों के कारण है, जब बिंद के पुराने संस्करणों में गंभीर, लगातार सुरक्षा कमजोरियां थीं। मैंने वास्तव में इस विषय पर तारीख तक नहीं रखी है, लेकिन मैं चाहता हूं कि यह खराब ओल के दिनों से बहुत सुधरे।

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

इसलिए, जैसा कि अक्सर सुरक्षा मामलों में अंगूठे का नियम होता है: सॉरी की तुलना में बेहतर सुरक्षित, विशेष रूप से क्रोट-इंग के प्रयास के रूप में यह अपेक्षाकृत कम है।


आप इसके बहुत सुधार को सही कर रहे हैं। असल में, बाइंड 8 एक बुरा सपना था; बाइंड 9 नहीं है। उदाहरण के लिए, यदि आप NVD को खोजते हैं, तो मुझे कोई दूरस्थ कोड निष्पादन बग सूचीबद्ध नहीं है, कम से कम 2010 से (जहां तक ​​खोज वापस गई): web.nvd.nist.gov/view/vuln/… ... DoS बग के बहुत सारे, और कुछ जानकारी प्रकटीकरण बग (जैसे, आंतरिक क्षेत्रों का खुलासा करना)।
derobert
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.