सेवा खाते की VPN पहुँच: प्रमाणपत्र या साझा लॉगिन
बिना निगरानी वाली VPN पहुँच के लिए मशीन प्रमाणपत्र की तुलना संग्रहीत पासवर्ड से करें, और लॉगिन के बाद चलने वाली नीति में असली अनुमति सीमा रखें।
लगभग हर बिना निगरानी वाले VPN सेटअप को दो डिज़ाइन कवर करते हैं: स्क्रिप्ट में रखा गया साझा मानव लॉगिन, या होस्ट से बंधा मशीन प्रमाणपत्र। ये अलग-अलग जगहों पर विफल होते हैं, जो सेटअप की गति से अधिक मायने रखता है। संग्रहीत पासवर्ड तब टूटता है जब उसका मालिक उसे बदल देता है या चला जाता है; प्रमाणपत्र तब टूटता है जब उसकी अवधि पूरी होती है या जब होस्ट कुंजी के बिना फिर से बनाया जाता है। तीन शर्तें तय करती हैं कि आप कौन-सी कीमत उठा सकते हैं, और अनुमति नीति के ऐसा करने तक कोई भी डिज़ाइन कुछ सीमित नहीं करता।
खाते से नहीं, काम से शुरू करें
काम सीमा तय करता है: कौन-से गंतव्य, कौन-सी सेवाएँ, कौन-से घंटे, सत्र कितनी देर चल सकता है। सुरंग मार्ग उस सीमा का केवल आधा है। गेटवे तय करता है कि सत्र की अनुमति है या नहीं; उसके पीछे का संसाधन तय करता है कि सत्र क्या कर सकता है। पहले सूची लिखें, नामित मालिक के साथ, क्योंकि दोनों पहचान डिज़ाइनों को उसे पूरा करना है।
इसे लिखते समय प्रमाणीकरण और अनुमति को अलग रखें। प्रमाणीकरण उत्तर देता है कौन जुड़ रहा है; अनुमति उत्तर देती है कि सत्र बाद में कहाँ तक पहुँच सकता है। RADIUS दूसरा भाग Filter-Id, Framed-IP-Address, Session-Timeout और Class जैसे गुणों के रूप में ले जाता है, और लॉगिन सफल होते ही गेटवे उन्हें जोड़ देता है। जो डिज़ाइन लॉगिन बदल देता है और अनुमति को अछूता छोड़ देता है, उसने कुछ भी सीमित नहीं किया।
साझा मानव लॉगिन: पासवर्ड ही सीमा बन जाता है
मानव खाते का पुनः उपयोग सबसे तेज़ रास्ता है और सबसे बुरी तरह पुराना होने वाला। क्रेडेंशियल एक पासवर्ड है, इसलिए वह स्क्रिप्ट, पर्यावरण फ़ाइल और शेड्यूलर कॉन्फ़िग में पहुँच जाता है, और हर प्रति को रोटेशन चाहिए। जब मालिक उसे शुक्रवार को बदल देता है, तो अगली बार चलने पर काम विफल हो जाता है और कोई देख नहीं रहा होता।
MFA वही जगह है जहाँ यह डिज़ाइन आमतौर पर ढह जाता है। स्क्रिप्ट पुश अनुरोध का उत्तर नहीं दे सकती, इसलिए खाते को नीति से बाहर रखा जाता है, और यह ठीक वही खाता है जो हमलावर चुनेगा। अपवाद, विश्वसनीय-स्थान बायपास और प्रति-खाता छूट बढ़ती जाती हैं, और किरायेदार की सेटिंग्स पढ़ने वाले अगले व्यक्ति को इनमें से कोई दिखाई नहीं देता।
श्रेय दूसरी कीमत है। गेटवे लॉग का हर सत्र वही उपयोगकर्ता नाम ले जाता है, इसलिए रात के सिंक को उसे लिखने वाले व्यक्ति के काम से अलग नहीं पहचाना जा सकता, और काम रद्द करने का अर्थ उस व्यक्ति को रद्द करना है।
मशीन प्रमाणपत्र: होस्ट से बंधी पहचान
प्रमाणपत्र प्रश्न को इससे बदल देता है कि खाता क्या जानता है, इस पर कि होस्ट क्या है। EAP-TLS के साथ क्लाइंट प्रमाणपत्र प्रस्तुत करता है और मेल खाती निजी कुंजी का स्वामित्व सिद्ध करता है; नीति सर्वर विषय या कंप्यूटर खाते को किसी समूह में मैप करता है और उस समूह की नीति लागू करता है। कोई अनुरोध नहीं, टेक्स्ट फ़ाइल में पड़ा कोई साझा रहस्य नहीं।
यह जो सीमा बनाता है वह लोगों की अपेक्षा से सँकरी है। प्रमाणपत्र होस्ट को प्रमाणित करता है, काम को नहीं, और जिसके पास root या स्थानीय व्यवस्थापक अधिकार हैं वह उस होस्ट पर उस कुंजी का उपयोग कर सकता है। कुंजी वहाँ रखें जहाँ प्लेटफ़ॉर्म उसकी रक्षा करता है: Windows प्रमाणपत्र भंडार में निर्यात-अयोग्य, जहाँ प्रोफ़ाइल अनुमति दे वहाँ TPM-समर्थित, या Linux पर root के स्वामित्व वाली 0600 फ़ाइल। होस्ट का समझौता क्रेडेंशियल का समझौता है।
समाप्ति बार-बार होने वाली विफलता है। रविवार को समाप्त होने वाला प्रमाणपत्र रविवार को काम रोक देता है, और गेटवे आमतौर पर तारीख बताने के बजाय सामान्य प्रमाणीकरण विफलता की सूचना देता है। काम के होस्ट से तारीखें runbook के भाग के रूप में जाँचें:
openssl x509 -in client.pem -noout -subject -issuer -dates
ipsec listcerts
रद्दीकरण के लिए ऐसा मार्ग चाहिए जिसे गेटवे जाँचता है। OpenVPN crl-verify विकल्प के ज़रिए CRL पढ़ता है, और strongSwan इस पर निर्भर है कि कनेक्शन प्रोफ़ाइल कैसे बना है—CRL या OCSP। यदि दोनों में से कोई जुड़ा नहीं है, तो होस्ट हटाने का अर्थ प्रमाणपत्र की समाप्ति की प्रतीक्षा करना है।
उनके बीच फैसला करने वाली तीन शर्तें
तुलना अपने पास मौजूद प्लेटफ़ॉर्म से करें, किसी संदर्भ डिज़ाइन से नहीं।
पहली शर्त: क्या गेटवे मशीन पहचान को अनुमति दे सकता है? यदि वह केवल RADIUS उपयोगकर्ता नाम को निर्देशिका उपयोगकर्ता में मैप करता है, तो प्रमाणपत्र होस्ट को प्रमाणित करता है और फिर अनुमति पर अटक जाता है। दूसरी शर्त: क्या काम को ऐसे संसाधन तक पहुँच चाहिए जो केवल उपयोगकर्ता खाता ले जाता है, जैसे मैप किया गया शेयर या प्रति-सीट लाइसेंस? तब मशीन पहचान उसकी जगह नहीं ले सकती, और ईमानदार उत्तर सीमित नीति वाला समर्पित उपयोगकर्ता खाता है। तीसरी शर्त: लूप में व्यक्ति के बिना क्रेडेंशियल कौन घुमा सकता है? स्वचालित नामांकन प्रमाणपत्रों को रखना सस्ता बनाता है; जिस पासवर्ड को एक व्यक्ति जानता है, वह नहीं।
| Constraint | Machine certificate | Dedicated user account with stored secret |
|---|---|---|
| Unattended login | Private key proof, no prompt | Only if the account is exempted from MFA |
| Resource expects a user identity | Works only when the resource accepts computer accounts | Matches the access a person would have |
| Rotation | Re-enrollment, often automated | Secret change plus redeploy of every copy |
| Revocation speed | Tied to CRL or OCSP refresh | Disable the account, immediate |
तालिका को श्रेणी नहीं, लागतों की सूची के रूप में पढ़ें। संग्रहीत-रहस्य वाला कॉलम रद्दीकरण की गति में और केवल उपयोगकर्ता खाते समझने वाले संसाधनों के साथ संगतता में जीतता है; प्रमाणपत्र वाला कॉलम रोटेशन में और स्क्रिप्ट चलाने के लिए MFA को कमज़ोर न करने में जीतता है।
सीमा नीति में रखें, प्रमाणीकरण के बाद
आप जो भी पहचान चुनें, अनुमति की सीमा उस नीति में है जो प्रमाणीकरण के बाद चलती है। NPS में नेटवर्क नीतियाँ क्रम से आँकी जाती हैं और हर शर्त से मेल खाने वाली पहली नीति अपनी सेटिंग्स लागू करती है, इसलिए सँकरी नीति के ऊपर रखी चौड़ी नीति ग्राहक कुछ भी प्रस्तुत करे, परिणाम तय कर देती है। Microsoft शर्त और सेटिंग का मॉडल अपने दस्तावेज़ में बताता है: NPS नीति अवलोकन।
काम को उसका अपना समूह या नीति शर्त दें, जो मशीन पहचान की किसी चीज़ पर आधारित हो: प्रमाणपत्र टेम्पलेट, कॉलिंग स्टेशन पहचानकर्ता, या समर्पित पूल से पता। फिर सत्र को गुणों से सीमित करें: उस भूमिका के लिए Filter-Id जिसमें आपका गेटवे उसे मैप करता है, छोटा Session-Timeout ताकि अटका हुआ काम दिनों तक सत्र रखने के बजाय फिर से प्रमाणीकरण करे, और ऐसे पूल से Framed-IP-Address जिस पर आप दूसरी तरफ़ फ़ायरवॉल लगाते हैं। अनुप्रयोग अनुमति अलग रहती है: डेटाबेस सर्वर तक सुरंग उसके अंदर की तालिका पढ़ने की अनुमति नहीं है।
अस्वीकृतियाँ जाँचें, फिर हटाने की योजना बनाएँ
जो पहुँच काम करती है वह न्यूनतम विशेषाधिकार के बारे में कुछ सिद्ध नहीं करती। इसके बजाय अस्वीकृतियाँ जाँचें: काम की पहचान के साथ जुड़ें और सूची से बाहर के गंतव्य तक पहुँचने का प्रयास करें, यदि गेटवे को केवल एक की अनुमति देनी है तो दूसरा समवर्ती सत्र खोलें, और क्रेडेंशियल रद्द करने के बाद लॉगिन दोहराएँ।
फिर उसी सत्र की दो जगहों पर पुष्टि करें। गेटवे लॉग वह पहचान दिखाता है जिसने प्रमाणीकरण किया; नीति सर्वर का लॉग दिखाता है कि कौन-सी नीति मेल खाई और कौन-से गुण लौटाए। OpenVPN में सर्वर प्रमाणपत्र का सामान्य नाम दर्ज करता है, और strongSwan में ipsec statusall उपयोग में आ रही पहचान के साथ स्थापित सुरंग छापता है। यदि दोनों लॉग पहचान पर सहमत नहीं हैं, तो नीति आपकी धारणा से भिन्न किसी चीज़ से मेल खा रही है।
हटाना डिज़ाइन का हिस्सा है, सफ़ाई स्प्रिंट का नहीं। जो भी मिटाना है सब लिखें (प्रमाणपत्र या खाता, समूह सदस्यता, नेटवर्क नीति, पूल प्रविष्टि, लक्ष्य पर फ़ायरवॉल नियम) और काम को फिर से बनाना आसान रहते हुए इसे एक बार चलाएँ।
यदि आज शुरू कर रहे हैं, तो इस क्रम में काम करें: संसाधन सूची लिखें, तीन शर्तों से पहचान चुनें, नीति में सीमा रखें, और काम के चालू होने से पहले एक अस्वीकृति का अभ्यास करें।