एक गैर-रूट उपयोगकर्ता खाते के तहत डेमॉन चलाना एक अच्छा अभ्यास है?


13

मैंने एक एप्लिकेशन विकसित किया है जो नेटवर्क समय को बदलने के लिए, मेरे दो कंप्यूटरों को सिंक करने के लिए NTP का उपयोग करता है। यह चलता है root, क्योंकि केवल बाद वाले को लिनक्स पर समय और तारीख बदलने की अनुमति है (मुझे लगता है)।

अब, मैं इसे एक उपयोगकर्ता के रूप में चलाना चाहता हूं। लेकिन, मुझे समय का उपयोग करने की आवश्यकता है।

  • एक गैर-रूट उपयोगकर्ता खाते के तहत डेमॉन चलाना एक अच्छा अभ्यास है?
  • क्या मैं अपने आवेदन को इस तरह की क्षमता दूंगा CAP_SYS_TIME?
  • क्या यह सुरक्षा भेद्यता का परिचय नहीं देता है?
  • क्या कोई बेहतर तरीका है?

आम तौर पर एनटीपी डेमन को ntpउपयोगकर्ता खाते (कम से कम लिनक्स सिस्टम) के रूप में चलना चाहिए, इसलिए आपको यह परिवर्तन करने की आवश्यकता नहीं होनी चाहिए। आपने एनटीपी पैकेज क्या स्थापित किया है?

6
एक गैर-रूट खाते के तहत डेमॉन चलाने को "ड्रॉपिंग रूट विशेषाधिकार" कहा जाता है और आमतौर पर अच्छी प्रथा है क्योंकि यह डेमन में सुरक्षा कमजोरियों के संभावित नुकसान को सीमित करता है।

1
" विशेषाधिकार पृथक्करण " के लिए विकिपीडिया देखें ।
Kusalananda

मैंने स्रोतों से NTP संकलित किया है। मेरे पास NTP समूह नहीं है
An1212223

@xhaltar आप NTP समूह और उपयोगकर्ता बना सकते हैं। सेवा (उपयोगकर्ता, समूह, आदि) कैसे शुरू की जाती है यह कॉन्फ़िगर करने के लिए आप या तो सेवा init स्क्रिप्ट बना सकते हैं / संपादित कर सकते हैं, या तो एक systemd इकाई बना सकते हैं / कॉन्फ़िगर कर सकते हैं।
Pl4nk

जवाबों:


15

एक गैर-रूट उपयोगकर्ता खाते के तहत डेमॉन चलाना एक अच्छा अभ्यास है?

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

क्या मैं "Cap_SYS_TIME" जैसी "क्षमता" दे सकता हूं?

यह एक अच्छा विचार है क्योंकि आप सेतु के उपयोग से बचते हैं , और अनुमतियों को इस बहुत विशिष्ट क्षमता तक सीमित करते हैं।

क्या मैं ऐसा करने के लिए एक और तरीका इस्तेमाल करूंगा ताकि "अच्छा अभ्यास" माना जाए?

उदाहरण के लिए, आप सुरक्षा बढ़ा सकते हैं:

  • सेवा को बिना खोल के अनपेक्षित उपयोगकर्ता के रूप में चलाएं।
  • घर निर्देशिका में उपयोगकर्ता को लॉक करने के लिए चेरोट का उपयोग करें

NB: यदि आप रूट कर रहे हैं और लिनक्स पर चल रहे हैं तो चेरोट कोई सुरक्षा प्रदान नहीं करता है। रूट उपयोगकर्ता चेरोट में एक डायरेक्टरी बना सकता है, चेरोट की रूट डायरेक्टरी को खोल सकता है, नई डायरेक्टरी को चेरोट कर सकता है, वास्तविक रूट तक वापस अपना रास्ता चुन सकता है, और फिर असली रूट पर चेरोट कर सकता है। BSD इसे डायरेक्ट्री fd के चेरोट में लेने से रोक देता है।
केविन

@ केविन यदि आप जड़ हैं, तो आप चेरोट के बाहर प्रक्रियाएं भी कर सकते हैं, और इसे दरकिनार करने के कई अन्य तरीके हैं। एक मात्र चेरोट जड़ नहीं रख सकता है।
गिल्स एसओ- बुराई को रोकना '

//, emp.jar.st वास्तव में सुरक्षा कारणों से अपने लिए एक उपयोगकर्ता बनाता है। बहुत अच्छा अभ्यास।
नाथन बसानी

रुको, अगर मैं USER हूं, तो क्या मैं USER को एक विशिष्ट निर्देशिका में बंद कर सकता हूं? जैसे कि "/ ऑप्ट" (उदाहरण के लिए)?
बेनामी

@xhaltar USERकिसी निर्देशिका द्वारा चलने वाली प्रक्रिया को लॉक करने के लिए , आप इसका उपयोग करते हैं chroot(इसे रूट उपयोगकर्ता के रूप में चलाते हैं)। हालाँकि, आपको पहले एक जेल (निर्देशिका) बनाना और शुरू करना होगा । संक्षेप में, आपको पुस्तकालयों और बायनेरिज़ को अपनी प्रक्रिया को इस जेल में रखना होगा, फिर कॉल करें chroot <path/to/jail> <command>। आपके द्वारा आवश्यक कुछ उदाहरणों के साथ एक अच्छा ट्यूटोरियल यहां
Pl4nk

13
  • क्या मैं ऐसा करने के लिए एक और तरीका इस्तेमाल करूंगा ताकि "अच्छा अभ्यास" माना जाए?

जब तक आपके पास मजबूत, अकाट्य कारण नहीं हैं, अन्यथा, आपको बस एनटीपी पैकेज का उपयोग करना चाहिए जो आपके जीएनयू / लिनक्स वितरण के साथ आता है। मानक NTP डेमन को परिपक्व होने में कई साल लग गए हैं और यह आपके नेटवर्क की घड़ी या जीपीएस घड़ी के साथ सिंक करने के लिए आपके सिस्टम की घड़ी को धीमा या तेज़ करने जैसी परिष्कृत विशेषताओं के साथ आता है। यह घड़ियों sync'ing तो यह सबसे अधिक संभावना के लिए अनुरूप किया गया है है उस उद्देश्य के लिए सबसे अच्छा उपकरण के आसपास।

ntpdअभी भी बनाए रखा है, हालिया अपडेट (इस पोस्ट को लिखने के रूप में) को देखते हुए। यदि आपको अधिक सुविधाओं की आवश्यकता है तो मैं आपको सीधे डेवलपर्स से संपर्क करने का सुझाव दूंगा, विश्वास करें कि उनके बारे में क्या कहना है।


5

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

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