OpenVPN का script-security स्तर 0 देखि 3 सम्म, र प्रत्येकले के खोल्छ
प्रत्येक script-security स्तरले प्रोफाइलले के कार्यान्वयन गर्न सक्छ भन्ने विस्तार गर्छ: पहिले प्रशासनिक सहायक, त्यसपछि प्रयोगकर्ता स्क्रिप्ट, त्यसपछि वातावरणमा पासवर्ड। निर्देशनहरू पढ्नुहोस्।
डेस्कटप क्लाइन्टमा प्रोफाइल आयात गर्नुहोस् र पहिलो असफलता प्रायः त्यो लाइन हुन्छ जसलाई क्लाइन्टले मान्न इन्कार गर्छ: एउटा स्क्रिप्ट हुक जो त्यसले चलाउने छैन, वा script-security मान जसलाई त्यसले धेरै अनुमतिप्रद ठान्छ। संख्या बढाउँदा संवाद हट्छ। तर यसले त्यो प्रोफाइललाई तपाईंको मेसिनमा के कार्यान्वयन गर्न अनुमति छ भन्ने पनि विस्तार गर्छ, जुन केवल चेतावनी हटाउन दिनु अनौठो कुरा हो। आयातलाई निर्देशनसम्म पछ्याउनुहोस् र निर्णय ठोस हुन्छ।
आयात संवाददेखि निर्देशनसम्म
प्रोफाइल निर्देशनहरू भएको पाठ फाइल हो, र कुनै सुरुङ अस्तित्वमा आउनुअघि क्लाइन्टले ती पढ्छ। up, down वा tls-verify जस्तो निर्देशनले त्यस्तो बाह्य प्रोग्रामको नाम दिन्छ जुन OpenVPN ले निश्चित क्षणमा चलाउनुपर्छ। OpenVPN त्यो चलाउन तयार छ कि छैन भन्ने script-security नामको छुट्टै सेटिङ हो, र प्रोफाइलले सामान्यतया त्यो पनि तोक्छ।
त्यसैले चेतावनी क्रिप्टोग्राफी वा प्रमाणपत्रको बारेमा होइन। यो कन्फिगरेसन फाइलले क्लाइन्टलाई होस्टमा केही कार्यान्वयन गर्न भनिरहेको, र क्लाइन्टले आफ्नो वर्तमान अनुमति स्तरले त्यो अनुरोध स्वीकार गर्छ कि गर्दैन भनी जाँचिरहेको विषय हो।
यो चरणमा दुई फरक असफलता एउटै जस्तो देखिन्छन्। क्लाइन्टले नदिने स्तर माग्ने प्रोफाइलले अस्वीकृति उत्पन्न गर्छ। क्लाइन्टले दिने तर स्क्रिप्ट नभएको स्तर माग्ने प्रोफाइलले बरु चलाउने समयमा असफलता उत्पन्न गर्छ, र समर्थन थ्रेडहरूमा दुवै मिसाइन्छन्। एउटा अनुमतिको प्रश्न र अर्को प्याकेजिङको प्रश्न।
प्रत्येक स्तरले वास्तवमा के खोल्छ
स्तर 0 ले बाह्य प्रोग्राम कल पूर्ण रूपमा निषेध गर्छ, जुन सहायताबिना आफ्नै इन्टरफेस कन्फिगर गर्ने क्लाइन्टका लागि संगत छ र अपरेटिङ सिस्टमलाई बोलाउनेका लागि असंगत छ। स्तर 1, पूर्वनिर्धारित, इन्टरफेस र मार्ग कन्फिगरेसनलाई आवश्यक पर्ने अन्तर्निहित कार्यान्वयन योग्य फाइलहरूलाई अनुमति दिन्छ। कुनै पनि स्तरले प्रयोगकर्ताले दिएको केही चलाउँदैन।
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
स्तर 2 रोचक सीमा हो, किनभने यसले प्रयोगकर्ता-परिभाषित स्क्रिप्टहरू स्वीकार गर्छ। त्यो बिन्दुदेखि क्लाइन्टका विशेषाधिकारहरू त्यस्तो कोडमा लागू हुन्छन् जुन तपाईंले कहिल्यै नपढेको हुन सक्छ, तपाईंले नरोजेका क्षणहरूमा बोलाइन्छ, जडान विवरण समावेश गर्ने वातावरणमा चल्छ। स्तर 3 अझ अगाडि जान्छ र वातावरण चरहरूमार्फत पासवर्ड पठाउन अनुमति दिन्छ, त्यसैले पुस्तिकाले यसलाई सम्भावित असुरक्षित भन्छ।
यीमध्ये कुनै पनि संख्या शक्तिको सेटिङ होइन। स्तर 3 को प्रोफाइलमा स्तर 1 भन्दा राम्रो इन्क्रिप्सन छैन; यसमा मात्र ठूलो कार्यान्वयन सतह छ, र सुरुङ समान छ।
प्रोफाइल केको योग्य छ भनी निर्णय गर्नुहोस्
स्क्रिप्टलाई कुन स्तर चाहिन्छ भनी सोध्नुअघि त्यो केका लागि हो भनी सोध्नुहोस्। DNS सेटिङहरू धकेल्ने वा जडानपछि मार्ग मर्मत गर्ने हुक केही चलाउनुको वैध कारण हो। अस्थायी फोल्डरमा अपरिचित बाइनरी बोलाउने हुक रोकिनुको कारण हो।
स्क्रिप्टको मार्ग स्क्रिप्टजत्तिकै महत्त्वपूर्ण छ। सापेक्ष मार्ग क्लाइन्टले प्रयोग गर्ने फोल्डरको सापेक्ष समाधान हुन्छ, र लेख्न योग्य फोल्डरले एकपटकको आयातलाई स्थायी कार्यान्वयन स्थान बनाउँछ। प्रयोगकर्ताले परिवर्तन गर्न नसक्ने फोल्डरमा निरपेक्ष मार्गहरू नै रोज्नुपर्ने स्वरूप हो।
स्क्रिप्टहरूले क्लाइन्टको वातावरण पनि उत्तराधिकारमा पाउँछन्, जहाँ प्रमाणहरू र जडान मेटाडाटा बस्छन्। यही उत्तराधिकारले स्तर 3 लाई आफ्नो वातावरण लग गर्ने स्क्रिप्टसँग मिलाउँदा खतरनाक बनाउँछ, र त्यसैले स्क्रिप्ट सक्षम क्लाइन्टको निदान डम्प टिकटमा टाँस्नुअघि दोस्रो नजरको योग्य हुन्छ। साझा गर्नुअघि वातावरण हटाउनुहोस्।
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnएउटा कुरा परिवर्तन गर्नुहोस्, त्यसपछि टुट्ने क्रम पनि हेर्नुहोस्
यदि प्रोफाइललाई साँच्चै स्क्रिप्ट चाहिन्छ भने स्तर मात्र परिवर्तन गर्नुहोस् र त्यो प्रोफाइलका लागि मात्र। क्लाइन्टलाई अग्रभागमा विस्तृत आउटपुटसहित चलाउनुहोस् ताकि स्क्रिप्टका आफ्नै त्रुटिहरू देखियून्, सेवा प्रबन्धकले निल्न नपरोस्।
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
जडान मात्र होइन, सम्पूर्ण जीवनचक्र परीक्षण गर्नुहोस्। असफल डाउन हुकले मार्गहरूलाई मृत सुरुङतर्फ राख्छ, जसले जडित देखिने तर कतै नपुग्ने मेसिन बनाउँछ। परिवर्तन पूर्ण भएको घोषणा गर्नुअघि एकपटक फेरि जडान गर्नुहोस् र एकपटक विच्छेद गर्नुहोस्, र प्रत्येकपछि राउटिङ तालिका जाँच्नुहोस्।
मूल प्रोफाइलको प्रतिलिपि राख्नुहोस्। प्लेटफर्म क्लाइन्टले उही स्क्रिप्टिङ मोडेल लागू गर्दैन भने, आयात सफल नहुन्जेल निर्देशनहरू मेटाउँदा सुरुङलाई आवश्यक परेको DNS वा मार्ग एकीकरण हट्न सक्छ, र परिणामस्वरूप जडान पूर्ण रूपमा प्रमाणीकरण हुनेछ तर केही पनि समाधान गर्ने छैन।
अभिलेख गर्नुपर्ने निर्णय साँघुरो छ: कुन स्क्रिप्ट, कुन मार्गमा, कुन स्तरमा अनुमति दिइयो, कुन प्रोफाइलका लागि। प्रोफाइलमा बाँकी सबै अपरिवर्तित रहन्छ, र यो त्यस्तो वाक्य हो जुन समीक्षकले जाँच्न सक्छ।