विंडोज़ - एक विंडोज़ सेवा के लिए स्थानीय सेवा और / या नेटवर्क सेवा खाते का उपयोग करें


18

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

मेरा मानना ​​है कि ऊपर वाला अच्छा है। मेरा प्रश्न यह है कि जिस फ़ोल्डर के लिए मैं पढ़ रहा हूं और लिख रहा हूं, क्या मुझे पूर्ण नियंत्रण पहुंच के साथ "नेटवर्क सेवा" भूमिका सेट करने की आवश्यकता है? मैं सोच रहा था कि मेरी सेवा किसी अन्य सर्वर से डेटाबेस कनेक्टिविटी का उपयोग करती है, अगर मुझे "नेटवर्क सेवा" खाता सेटअप की आवश्यकता होगी।

मुझे गलतफहमी हो सकती है कि "नेटवर्क सेवा" खाता क्या करता है।

जवाबों:


18

NT AUTHORITY\NetworkServiceखाता केवल जरूरत है जब आप एक डोमेन अन्य कंप्यूटरों कि अभिगम नियंत्रण के लिए अपने मशीन की साख की जरूरत है साथ संवाद कर रहे है। यह सरल इंटरनेट / नेटवर्क के उपयोग के लिए आवश्यक नहीं है। यह केवल सक्रिय निर्देशिका डोमेन में विशिष्ट उद्देश्यों के लिए आवश्यक है।

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

आप इसे NT AUTORITY\LocalSystemखाते का उपयोग करके भी चला सकते हैं , जिसकी आपके सिस्टम में असीमित पहुंच है, लेकिन मुझे लगता है कि आप LocalServiceइसे प्रदान की गई सुरक्षा के लिए खाते का उपयोग करना चाहते थे ।


1
एक फ़ोल्डर (और सब-फ़ोल्डर्स) पर लोकल सेवा खाते को पूर्ण नियंत्रण देने से अन्य सेवाओं की सुरक्षा कैसे कम होगी?
संपर्कमाट

1
@ user19185 यह प्रति सुरक्षा उनकी कमी नहीं करता है , लेकिन यह हमले की प्रोफाइल बढ़ाता है। यदि एक सेवा के रूप LocalServiceमें समझौता किया जाता है, तो आपके लिए खोली गई किसी भी चीज तक पहुंच होगी LocalService, जबकि आमतौर पर इसका उपयोग कुछ भी नहीं होगा। यह 70 के दशक से मानक कंप्यूटर सुरक्षा संचालन प्रक्रिया है
पैच

1
बस यह बताना चाहते हैं कि नियमित प्रशासक खातों की तुलना LocalSystemमें अधिक अधिकार और विशेषाधिकार हैं।
स्टीन Steस्मूल

@ सीन ulसिमुल: सुधार के लिए धन्यवाद! मैंने इसे दर्शाने के लिए अपना उत्तर अपडेट किया।
पैच

2

पिछला उत्तर सीधे प्रश्नों को संबोधित करने के लिए प्रकट नहीं हुआ था, इसलिए मैंने सोचा कि मैं इसे जोड़ूंगा।

  1. मेरी योजना डिफ़ॉल्ट "स्थानीय सेवा" खाते के रूप में सेवा चलाने की है। मैं उस फ़ोल्डर पर "स्थानीय सेवा" खाते के लिए स्पष्ट रूप से "पूर्ण नियंत्रण" विशेषाधिकारों को सेट करने जा रहा हूं, जिसे मैं पढ़ रहा हूं और उससे लिख रहा हूं। मेरा मानना ​​है कि उपरोक्त एक अच्छी योजना है।

व्यक्तिगत रूप से, मैं इस योजना के साथ एक बड़ा मुद्दा नहीं देखता हूं। BUILTINs के साथ, इस विकल्प के बीच है:

  1. LOCALSYSTEM के रूप में चल रहा है - इसलिए यदि इस सेवा से समझौता किया जाता है, तो हमलावर के पास सब कुछ है , और तुरंत।
  2. LOCALSERVICE के रूप में चल रहा है - इसलिए यदि यह सेवा, या इस खाते के अंतर्गत चलने वाली कई अन्य सेवाओं में से कोई समझौता है, तो हमलावर के पास एक अतिरिक्त निर्देशिका तक पहुंच है। *

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

हालांकि फिर से, कम से कम विशेषाधिकार सिद्धांत, आपको केवल तभी सेट करना चाहिए Full Controlजब Modifyवास्तव में पर्याप्त नहीं हो।

2. मेरा सवाल है, उस फ़ोल्डर के लिए जिसे मैं पढ़ रहा हूं और लिख रहा हूं, क्या मुझे पूर्ण नियंत्रण पहुंच के साथ "नेटवर्क सेवा" भूमिका सेट करने की आवश्यकता है? मैं सोच रहा था कि मेरी सेवा किसी अन्य सर्वर से डेटाबेस कनेक्टिविटी का उपयोग करती है, अगर मुझे "नेटवर्क सेवा" खाता सेटअप की आवश्यकता होगी।

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

3. मैं गलत समझ सकता हूं कि "नेटवर्क सेवा" खाता क्या करता है।

LocalService / NetworkService स्थानीय कंप्यूटर पर लगभग समान खाते हैं। मुख्य रूप से अंतर यह है कि वे नेटवर्क पर क्या कर सकते हैं। NS कुछ नेटवर्क संसाधनों तक पहुँच प्राप्त कर सकता है क्योंकि यह नेटवर्क पर वास्तविक (कंप्यूटर) खाते के रूप में दिखाई देता है। लेकिन LS ANONYMOUS के रूप में दिखाई देगा, इसलिए इसे नेटवर्क पर ज्यादातर सब कुछ से इनकार किया जाएगा।

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

* विस्टा से, सेवा अलगाव के कारण , एक समझौता किया गया LocalService प्रक्रिया आसानी से दूसरे पर हमला नहीं कर सकती है। प्रत्येक LocalService / NetworkService सेवा प्रक्रिया / आवृत्ति को Windows 2003 के विपरीत, अपना स्वयं का अनूठा लॉगऑन सत्र SID (अद्वितीय स्वामी) मिलता है। लेकिन मुझे यकीन नहीं है कि यह सही है और पूरी तरह से फ़ाइलों और संसाधनों पर DACL भेद्यता को कम करता है। इस संदर्भ में प्रतिबंधित SID और लिखने-प्रतिबंधित टोकन का उल्लेख किया गया है।


2

अन्य उत्तर पुष्टि करते हैं कि आप स्थानीय सेवा का उपयोग करने के बारे में क्या कहते हैं। सारांशित करने के लिए, स्थानीय सेवा आपकी सेवा के साथ उपयोग करने के लिए अनुशंसित खाता है, जब तक कि आपको नेटवर्क सेवा की अतिरिक्त सक्रिय निर्देशिका SSPI सुविधाओं की आवश्यकता न हो।

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

समाधान के बजाय अपने फ़ोल्डर को अपनी विशिष्ट सेवा SID का उपयोग करके ACL करना है। केवल आपकी स्वयं की सेवा प्रक्रिया में आपकी सेवा SID इससे संबद्ध है, इसलिए यह आपके संसाधन को और भी अधिक लॉक कर देता है। आप सेवा SID का उपयोग करके देख सकते हैं sc showsid <service name>। सेवा नाम सेवा नाम से उत्पन्न होता है, इसलिए यह सभी मशीनों पर समान होगा।

अपनी सेवा द्वारा सेवा SID उपयोग को सक्षम करने के लिए, सेट करने के ChangeServiceConfig2लिए SERVICE_SID_INFOसंरचना के साथ उपयोग करें SERVICE_SID_TYPE_UNRESTRICTED। आप SERVICE_SID_TYPE_RESTRICTEDएक और भी अधिक प्रतिबंधित SID प्राप्त करने के लिए सेट कर सकते हैं जो केवल आपकी सेवा SID के साथ स्पष्ट रूप से अनुमत संसाधनों तक लिखने की अनुमति देता है।

इस लिंक में सेवा SID और प्रतिबंधित सेवा SID के उच्च-स्तरीय वर्णन हैं: https://docs.microsoft.com/en-us/prepret-versions/windows/it-pro/windows-server-2008-R2.and 2008 / hh125927 (v = ws.10)

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