कुछ अनुप्रयोगों के लिए एक समूह और उपयोगकर्ता बनाने की सिफारिश क्यों की जाती है?


12

अधिकांश समय, स्रोत से एक प्रोग्राम स्थापित करते समय एक नया उपयोगकर्ता और एक नया समूह बनाने और /usr/local/<myapp>हाल ही में बनाए गए उपयोगकर्ता और समूह के स्वामित्व को देने की सिफारिश की जाती है ।

  • ऐसी प्रथा को अच्छी प्रथा क्यों माना जाता है?

  • इसमें क्या सुधार होता है?

उदाहरण: MySQL डेटाबेस सर्वर के लिए mysql उपयोगकर्ता / mysql समूह।

जवाबों:


11

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

डेमन एक समर्पित उपयोगकर्ता के रूप में चलता है ताकि यदि यह दुर्व्यवहार करे (एक बग के कारण, संभवतः एक हमलावर द्वारा ट्रिगर किया गया) तो जो नुकसान हो सकता है वह सीमित है: केवल डेमन की डेटा फाइलें प्रभावित होती हैं (जब तक कि हमलावर एक स्थानीय रूट छेद खोजने में कामयाब न हो। , जो हो सकता है)। उदाहरण के लिए, डेटाबेस डेमन mysqldएक समर्पित उपयोगकर्ता और समूह के रूप में चलता है mysql:mysqlऔर डेटाबेस ( /var/lib/mysql/*) से संबंधित डेटा फाइलें mysql:mysql

ध्यान दें कि डेमन एग्जीक्यूटेबल और अन्य स्टैटिक डेटा और कॉन्फ़िगरेशन फाइलें जो उपयोग की जाती हैं, लेकिन डेमन द्वारा संशोधित नहीं की जानी चाहिए, समर्पित उपयोगकर्ता से संबंधित नहीं होनी चाहिए; उन्हें root:rootअधिकांश प्रोग्राम और कॉन्फ़िगरेशन फ़ाइलों की तरह स्वामित्व में होना चाहिए । इस mysqldप्रक्रिया का कोई व्यवसाय ओवरराइटिंग नहीं है /usr/sbin/mysqldया /etc/mysql/my.cnfइसलिए, ये फ़ाइलें mysqlउपयोगकर्ता से संबंधित नहीं होनी चाहिए या mysqlउपयोगकर्ता या mysqlसमूह द्वारा लिखने योग्य नहीं होनी चाहिए । यदि कुछ फ़ाइलों को केवल डेमॉन और व्यवस्थापक द्वारा पठनीय होना चाहिए, तो उन्हें उपयोगकर्ता रूट और समर्पित समूह द्वारा स्वामित्व में होना चाहिए, और मोड 0640 ( rw-r-----) होना चाहिए।

निष्पादकों की एक विशेष श्रेणी जो स्वामित्व में नहीं हो सकती है root:root, वे प्रोग्राम हैं जो एक उपयोगकर्ता द्वारा लागू किए जाते हैं लेकिन अतिरिक्त विशेषाधिकारों के साथ चलाने की आवश्यकता होती है। ये निष्पादनयोग्य होना चाहिए setuid रूट अगर वे रूट के रूप में चलाने के लिए (कम से कम आंशिक रूप से) की जरूरत है; तब निष्पादन योग्य में मोड 4755 ( rwsr-xr-x) होना चाहिए । यदि कार्यक्रम को अतिरिक्त विशेषाधिकारों की आवश्यकता है, लेकिन जड़ के रूप में नहीं है, तो कार्यक्रम को सेटिग्ड बनाया जाना चाहिए, ताकि अतिरिक्त विशेषाधिकार एक समूह के माध्यम से आए न कि उपयोगकर्ता के माध्यम से। निष्पादन योग्य तब मोड 2755 ( rwxr-sr-x) है। कारण दोतरफा हैं:

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

3

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


1

यह एक अच्छा अभ्यास माना जाता है इसका कारण सिस्टम के अन्य उपयोगकर्ताओं को विशेष एप्लिकेशन के लिए डेटा और कॉन्फ़िगरेशन फ़ाइलों को ओवरराइड करने से रोकना है।

एक उदाहरण के रूप में mysql/ mysqlmysql डेटाबेस फ़ाइलों के लिए भंडारण के मालिक होने के नाते किसी को भी डेटाबेस को भ्रष्ट करने से एप्लिकेशन एपीआई का उपयोग नहीं करने से रोकता है। इसके अलावा उपयोगकर्ता के पास mysqlआमतौर पर एक वास्तविक शेल नहीं होता है इसलिए कोई भी उस उपयोगकर्ता के रूप में लॉगिन नहीं कर सकता है।


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

@ गिल्स वे रूट के स्वामित्व में हो सकते हैं और वितरण के माध्यम से स्थापित अधिकांश एप्लिकेशन हैं, लेकिन उन्हें होने की आवश्यकता नहीं है और उन्हें होना आवश्यक नहीं है। तथ्य की बात के रूप में Ubuntu पर /usr/bin/atस्वामित्व हैdaemon/daemon
कार्लसन

1
atएक डेमॉन नहीं है। यह सेट्युइड है daemonताकि यह atdनिजी फाइलों के माध्यम से डेमन के साथ संवाद कर सके ।
गिल्स एसओ- बुराई को रोकना '

1

एक नए स्थापित डेमॉन के लिए एक नया समूह / उपयोगकर्ता बनाने से सुरक्षा में सुधार होता है। जब सर्वर प्रक्रिया को ऐसे उपयोगकर्ता के तहत चलाया जाता है तो यह उस उपयोगकर्ता के एक्सेस अधिकारों तक ही सीमित रहता है। तुलना में: जब इसे रूट के रूप में चलाया जाता है तो यह सब कुछ कर सकता है।

यदि आपका डेमॉन गलत तरीके से कॉन्फ़िगर किया गया है और / या इसमें सुरक्षा संबंधी बग है, तो यह अंतर महत्वपूर्ण है।

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

अपने स्वयं के विशेष उपयोगकर्ता के तहत एक डेमॉन चलाना सिर्फ एक सुरक्षा तकनीक है, अन्य में किसी प्रकार का 'क्रोटिंग' या अनिवार्य एक्सेस कंट्रोल (मैक) सिस्टम (जैसे SELinux) का उपयोग करना शामिल है।


1

यह एक सुरक्षा विचार है। यह उस क्षति को सीमित करता है जो किसी व्यक्ति द्वारा किया जा सकता है जो डेमॉन अनुप्रयोग में टूट जाता है। उपयोगकर्ता अनुप्रयोग आमतौर पर इस तरह के एक मानक उपयोगकर्ता के स्वामित्व में हैं root

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

यदि वे सभी अलग-अलग खाते हैं, जैसा कि अनुशंसित है, केवल समझौता किए गए आवेदन के सुलभ होने की संभावना है। हालांकि अन्य के सार्वजनिक कॉन्फ़िगरेशन विवरण पढ़े जा सकते हैं, यह संभावना नहीं है कि परिवर्तन किए जा सकते हैं।

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

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


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

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