डेस्कटॉप क्लायंटमध्ये प्रोफाइल आयात करा आणि पहिले अपयश अनेकदा अशी ओळ असते जी क्लायंट पाळण्यास नकार देतो: एक स्क्रिप्ट हुक जो तो चालवणार नाही, किंवा script-security मूल्य जे त्याला खूप परवानगी देणारे वाटते। संख्या वाढवल्याने संवाद बंद होतो। पण त्यामुळे त्या प्रोफाइलला तुमच्या मशीनवर काय चालवण्याची परवानगी आहे तेही वाढते, जे केवळ इशारा बंद करण्यासाठी देणे विचित्र आहे। आयातीपासून सूचनेपर्यंत पाठपुरावा करा आणि निर्णय ठोस होतो।

आयात संवादापासून सूचनेपर्यंत

प्रोफाइल सूचनांसह एक मजकूर फाइल आहे, आणि कोणताही सुरंग अस्तित्वात येण्यापूर्वी क्लायंट त्या वाचतो। up, down किंवा tls-verify सारखी सूचना अशा बाह्य प्रोग्रामचे नाव देते जो OpenVPN ने ठरलेल्या क्षणी चालवावा। OpenVPN तो चालवण्यास तयार आहे का हे script-security नावाचे वेगळे सेटिंग आहे, आणि प्रोफाइल सहसा तेही ठरवते।

म्हणून इशारा क्रिप्टोग्राफी किंवा प्रमाणपत्रांबद्दल नाही। तो कॉन्फिगरेशन फाइल क्लायंटला होस्टवर काहीतरी चालवण्यास सांगत आहे, आणि क्लायंट तिची सध्याची परवानगी पातळी ती विनंती स्वीकारते का हे तपासत आहे याबद्दल आहे।

या टप्प्यावर दोन वेगळी अपयशे सारखीच दिसतात। क्लायंट देणार नाही असे स्तर मागणारे प्रोफाइल नकार निर्माण करते। क्लायंट देतो पण स्क्रिप्ट नाही असे स्तर मागणारे प्रोफाइल त्याऐवजी चालवण्याच्या वेळी अपयश निर्माण करते, आणि सपोर्ट थ्रेडमध्ये दोन्ही एकत्र मिसळली जातात। एक परवानगीचा प्रश्न आणि दुसरा पॅकेजिंगचा प्रश्न।

प्रत्येक स्तर प्रत्यक्षात काय उघडतो

स्तर 0 बाह्य प्रोग्राम कॉल पूर्णपणे प्रतिबंधित करतो, जे मदतीशिवाय स्वतःचे इंटरफेस संरचीत करणाऱ्या क्लायंटसाठी सुसंगत आहे आणि ऑपरेटिंग सिस्टमला हाक मारणाऱ्यासाठी असंगत आहे। स्तर 1, डीफॉल्ट, इंटरफेस आणि मार्ग संरचनेस आवश्यक असलेल्या अंगभूत एक्झिक्युटेबलना परवानगी देतो। दोन्हीपैकी कोणताही स्तर वापरकर्त्याने दिलेले काहीही चालवत नाही।

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials 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 किंवा मार्ग एकत्रीकरण काढले जाऊ शकते, आणि त्यातून तयार झालेली जोडणी पूर्णपणे प्रमाणित होईल पण काहीही सोडवणार नाही।

नोंदवण्याजोगा निर्णय अरुंद आहे: कोणती स्क्रिप्ट, कोणत्या मार्गावर, कोणत्या स्तरावर मंजूर, कोणत्या प्रोफाइलसाठी। प्रोफाइलमधील बाकी सर्व अपरिवर्तित राहते, आणि हे असे वाक्य आहे जे पुनरावलोकक तपासू शकतो।

संबंधित लेख