IIS में NTLM के बजाय Kerberos का उपयोग क्यों करें?


40

यह कुछ ऐसा है जिसे मैं वास्तव में कभी भी उत्तर देने में सक्षम नहीं हूं जैसा कि मुझे पसंद है: NTLM के बजाय IIS में Kerberos प्रमाणीकरण का उपयोग करने का वास्तविक लाभ क्या है?

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

जवाबों:


66

केवल Windows के दृष्टिकोण से:

NTLM

  • बाहरी (गैर-डोमेन) और आंतरिक क्लाइंट दोनों के साथ काम करता है
  • IIS बॉक्स पर डोमेन खाते और स्थानीय उपयोगकर्ता खाते दोनों के साथ काम करता है
    • डोमेन खातों का उपयोग करते हुए, केवल सर्वर को डोमेन नियंत्रक (डीसी) से सीधे संपर्क की आवश्यकता होती है
    • स्थानीय खातों का उपयोग करते हुए, आपको कहीं भी कनेक्टिविटी की आवश्यकता नहीं है :)
    • क्रेडेंशियल का उपयोग करने के लिए आपको उपयोगकर्ता के रूप में लॉग ऑन करने की आवश्यकता नहीं है
    • एक तरफ : यह है कि असामान्य बात नहीं है के लिए एक डीसी NTLM अनुरोध की मात्रा के साथ एक व्यस्त NTLM सर्वर (आईआईएस, एक्सचेंज, TMG / ईसा, आदि) से अभिभूत हो (कम करने के लिए: MaxConcurrentAPI, AuthPersistSingleRequest(गलत) ।, तेजी से डीसी) ( स्व प्रासंगिक बोनस ।)
  • केवल IIS सर्वर के लिए क्लाइंट कनेक्टिविटी की आवश्यकता होती है (साइट पोर्ट पर, और कुछ नहीं। यानी सब कुछ HTTP (या HTTPS) पर होता है।)
  • HTTP कीप-अलाइव s का समर्थन करने वाले किसी भी प्रॉक्सी को ट्रेस कर सकते हैं
    • आप दूसरों के आसपास काम करने के लिए टीएलएस / एसएसएल का उपयोग करने में सक्षम हो सकते हैं
  • छोटे पैकेट के साथ, प्रमाणित करने के लिए कई राउंड-ट्रिप की आवश्यकता होती है
    • (लॉग पैटर्न 401.2, 401.1, 200 उपयोगकर्ता नाम के साथ है)
  • उन परिदृश्यों में उपयोग नहीं किया जा सकता जहां डबल-हॉप प्रमाणीकरण आवश्यक है
    • उपयोगकर्ता के क्रेडेंशियल को किसी अन्य कंप्यूटर पर एक सेवा में भेजा जाना है
  • पुराने ग्राहकों का समर्थन करता है (<Win2000)
  • LM प्रामाणिक स्तर की विसंगतियों (बेमेल lmcompatibilitylevel) के लिए अतिसंवेदनशील है
  • कर्ब विफल होने पर निगोशिएट पैकेज द्वारा एक वापसी के रूप में उपयोग किया जाता है।
    • ( नहीं "यदि अंकुश के साथ प्रवेश से इनकार किया जाता है ", तो Curb का उपयोग करने के लिए NTLM के लिए ब्रेक होना चाहिए - आमतौर पर ऐसा लगता है कि टिकट मिल रहा है। यदि ग्राहक को टिकट मिलता है और यह सही नहीं है, तो यह एक वापसी का कारण नहीं बनता है।)

करबरोस

  • वर्तमान में डोमेन से जुड़े ग्राहकों के साथ ही काम करता है
    • AD DC (tcp / udp 88) के लिए क्लाइंट कनेक्टिविटी की आवश्यकता होती है और सर्वर (टिकट डीसी से क्लाइंट द्वारा कर्ब पोर्ट के माध्यम से प्राप्त किया जाता है, और फिर HTTP का उपयोग करके सर्वर को प्रदान किया जाता है)
  • एक प्रॉक्सी को पार करने में सक्षम हो सकता है, लेकिन ऊपर डीसी बिंदु देखें: आपको अभी भी एक सक्रिय डीसी के समान नेटवर्क पर होना चाहिए, जैसा कि सर्वर करता है

    • इसलिए सिद्धांत रूप में यदि आपके पास एक डोमेन है जिसमें इंटरनेट से जुड़े क्लाइंट सीधे इंटरनेट से जुड़े डीसी से चैट करते हैं, तो यह व्यावहारिक है। लेकिन ऐसा न करें जब तक कि आपको पहले से ही पता न हो।
    • रिवर्स प्रॉक्सी परिदृश्यों (ISA / TMG) ​​में, प्रोटोकॉल ट्रांस्फ़ॉर्म सर्वर को उस नेटवर्क पर होने की आवश्यकता होती है, अर्थात क्लाइंट नहीं ... लेकिन फिर क्लाइंट वास्तव में कर्बेरॉस बिट (आवश्यक - थिंक फॉर्म्स को अंकुश लगाने वाला) नहीं कर रहा है संक्रमण)।
  • टिकट लंबे समय तक जीवित है (10h) जिसका अर्थ है कि टिकट जीवनकाल के दौरान कम डीसी संचार - और जोर देने के लिए: इससे उस जीवनकाल में प्रति ग्राहक हजारों से लाखों अनुरोधों को बचाया जा सकता है - ( यह अभी भी एक चीज है; करबरोस पीएसी सत्यापन एक चीज हुआ करता था)AuthPersistNonNTLM

  • प्रमाणित करने के लिए एकल राउंड-ट्रिप की आवश्यकता होती है , लेकिन प्रमाणीकरण पेलोड का आकार अपेक्षाकृत बड़ा होता है (आमतौर पर 6-16K) ( 401 , {एन्कोडेड) टोकन साइज} 200 )
  • अगली सेवा के लिए कनेक्टिंग उपयोगकर्ता के विंडोज प्रमाणीकरण को सक्षम करने के लिए (कृपया, हमेशा विवश ) प्रतिनिधिमंडल के साथ इस्तेमाल किया जा सकता है
    • उदाहरण के लिए, UserAIIS का उपयोग करने की अनुमति देने के लिए, और जब IIS SQL सर्वर तक पहुँचता है तो उसी उपयोगकर्ता खाते का उपयोग करें, यह "प्रमाणीकरण का प्रतिनिधिमंडल" है।
    • ( इस संदर्भ में विवश का अर्थ है "लेकिन कुछ और नहीं", उदाहरण के लिए एक्सचेंज या अन्य SQL बॉक्स)
  • वर्तमान में नेगोशिएट प्रमाणीकरण के लिए प्राथमिक सुरक्षा पैकेज है
    • जब वे इसे प्राप्त कर सकते हैं तो विंडोज डोमेन के सदस्य इसे पसंद करते हैं
  • SPN के पंजीकरण की आवश्यकता है , जो मुश्किल हो सकता है। मदद करने वाले नियम
  • लक्ष्य के रूप में नाम का उपयोग करने की आवश्यकता है , न कि आईपी पते की
  • कारणों पर अंकुश लग सकता है:
    • एक नाम के बजाय एक आईपी पते का उपयोग करना
    • कोई SPN पंजीकृत नहीं है
    • डुप्लीकेट एसपीएन पंजीकृत
    • गलत खाते के खिलाफ पंजीकृत SPN ( KRB_ERR_AP_MODIFIED)
    • कोई क्लाइंट डीएनएस / डीसी कनेक्टिविटी नहीं है
    • क्लाइंट प्रॉक्सी सेटिंग / स्थानीय इंट्रानेट ज़ोन का उपयोग लक्षित साइट के लिए नहीं किया जाता है

जब तक हम उस पर हैं:

बुनियादी

  • बहु-हॉप कर सकते हैं। लेकिन ऐसा सीधे तौर पर अपने यूज़रनेम और पासवर्ड को टारगेट वेब ऐप पर करने से होता है
    • जो तब उनके साथ कुछ भी कर सकता है। कुछ भी
    • "ओह, क्या एक डोमेन एडमिन ने सिर्फ मेरे ऐप का इस्तेमाल किया? और क्या मैंने सिर्फ उनका ईमेल पढ़ा? फिर अपना पासवर्ड रीसेट किया? एआई। दया। "
  • जरूरत परिवहन परत सुरक्षा सुरक्षा के किसी भी रूप के लिए (यानी TLS / SSL)।
    • और फिर, पिछले अंक को देखें
  • किसी भी ब्राउज़र के साथ काम करता है
    • (लेकिन पहले अंक देखें )
  • प्रमाणित करने के लिए एकल राउंड-ट्रिप की आवश्यकता है ( 401 , 200 )
  • मल्टी-हॉप परिदृश्य में उपयोग किया जा सकता है क्योंकि विंडोज बुनियादी क्रेडेंशियल्स के साथ एक इंटरैक्टिव लॉगऑन कर सकता है
    • LogonTypeइसे पूरा करने के लिए कॉन्फ़िगर करने की आवश्यकता हो सकती है (2000 और 2003 के बीच डिफ़ॉल्ट को नेटवर्क क्लीयरटेक्ट में बदल दें, लेकिन गलतफहमी हो सकती है)
    • लेकिन फिर से , पहले मुद्दे को देखें
    • यह धारणा प्राप्त करना कि पहला मुद्दा वास्तव में है, वास्तव में महत्वपूर्ण है? यह है।

सारांश में:

अंकुश लगाने के लिए मुश्किल हो सकता है, लेकिन वहाँ गाइड ( मेरे एक ) का भार है जो प्रक्रिया को सरल बनाने की कोशिश करते हैं, और उपकरण 2003 से 2008 तक बड़े पैमाने पर सुधार हुए हैं ( SetSPNडुप्लिकेट की खोज कर सकते हैं, जो सबसे आम तोड़ने वाला मुद्दा है , का उपयोगSETSPN -S करने के लिए मार्गदर्शन कभी भी देखें, और जीवन खुश हो जाएगा)।

विवश प्रतिनिधिमंडल प्रवेश की लागत के लायक है।


2
तकनीकी रूप से, Curb क्लाइंट को उस डोमेन / क्षेत्र से जुड़ना नहीं है जिसे वे उपयोग करना चाहते हैं। जब तक उनके पास डीसी से कनेक्टिविटी होती है, तब तक आप / नेटोनली फ्लैग के साथ रन रन का उपयोग कर सकते हैं और एक डोमेन उपयोगकर्ता के संदर्भ में एक प्रक्रिया शुरू कर सकते हैं जो अभी भी एक वैध TGT खींचेगा यदि DC DNS लुकअप के माध्यम से पाया जा सकता है । और यहां तक ​​कि अगर DNS का भंडाफोड़ हुआ है, तो आप तकनीकी रूप से ksetup.exe का उपयोग करके रजिस्ट्री संकेत के साथ इसके चारों ओर काम कर सकते हैं। आप लिनक्स क्लाइंट के साथ भी ऐसी ही चीजें कर सकते हैं। स्पष्ट रूप से, ये एज केस हैं।
रयान बोल्गर

10
  • Kerberos में NTLM की तुलना में तेज़ और अधिक सुरक्षित प्रमाणीकरण तंत्र होने की प्रतिष्ठा है।
  • NTLM की कनेक्शन-आधारित प्रकृति के कारण, NTLM की तुलना में प्रॉक्सी सर्वर के माध्यम से कनेक्ट करना ऐतिहासिक रूप से आसान हो गया है।
  • उन्होंने कहा, जैसा कि आप ध्यान दें, केर्बरोस को उठना और चलना अधिक कठिन है, और विज्ञापन के लिए एक कनेक्शन की आवश्यकता होती है जो हमेशा व्यावहारिक नहीं होता है।

एक और तरीका यह होगा कि प्रमाणीकरण को negotiateदूसरे के बजाय एक के बजाय प्रमाणीकरण और उपयोग में लाया जाए।


9

से माइक्रोसॉफ्ट आवेदन सत्यापनकर्ता है, जो आम डेवलपर गलतियों का पता लगाता है। उन गलतियों में से एक NTLM का उपयोग है :

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

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

NTLM के उपयोग के खिलाफ सावधानी के अंतिम शब्द के माध्यम से: विंडोज के भविष्य के संस्करणों में ऑपरेटिंग सिस्टम पर NTLM के उपयोग को अक्षम करना संभव होगा। यदि अनुप्रयोगों का NTLM पर एक कठिन निर्भरता है, तो वे केवल NTLM अक्षम होने पर प्रमाणित करने में विफल रहेंगे।


3
भयानक प्रशस्ति पत्र। इसे बुकमार्क किया।
माइकल-ओ

4

आपको एक बहुत ही महत्वपूर्ण बिंदु जोड़ना चाहिए:

केर्बोस 20 वर्षों में यूनिक्स में मानक और खुला प्रोटोकॉल रहा है, जबकि एनटीएलएम माइक्रोसॉफ्ट से शुद्ध रूप से मालिकाना समाधान है और केवल माइक्रोसॉफ्ट के लिए जाना जाता है।


यह लगभग सभी डेस्कटॉप (मैक और विंडोज़) और (आधुनिक) मोबाइल ब्राउज़रों द्वारा जाना जाता है। तो सिर्फ "Microsoft" नहीं।
आराध्य

नहीं, केवल रिवर्स इंजीनियरिंग के कारण। NTLM ist खुला नहीं है Microsoft से publically प्रलेखित नहीं है। तो, यह एक व्यर्थ सुरक्षा तंत्र है।
माइकल-ओ

मुझे पता नहीं है कि इसमें क्या है, लेकिन: msdn.microsoft.com/en-us/library/cc236621.aspx
thinkOfaNumber

@thinkOfaNumber, अर्थात, स्वीकार किया गया है, वर्षों पहले जारी किया गया था, हालांकि एक भी सुविधा पूर्ण खुला स्रोत NTLM लागू नहीं है। सोचिये क्यों नहीं?
माइकल-ओ

1

यदि आपको उन संसाधनों तक पहुंचने के लिए उपयोगकर्ता को लगाने की आवश्यकता है जो आईरिस सर्वर पर नहीं हैं, तो केबरोस की आवश्यकता होती है।

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