कुंजियाँ लीक किए बिना दो OpenVPN प्रोफ़ाइल की तुलना करें
टेक्स्ट diff जैसे बदली हुई निर्देश दिखाता है, वैसे ही इनलाइन कुंजियाँ भी आसानी से उजागर कर सकता है। सुरक्षित प्रतियों पर भूमिका के अनुसार तुलना करें, फिर अलग संपादित निदान फ़ाइल बनाएँ।
दो प्रोफ़ाइल, एक जुड़ता है और दूसरा नहीं, और कारण देखने का तेज़ तरीका diff है। परेशानी यह है कि वही diff इनलाइन निजी कुंजी, स्थिर कुंजी और फ़ाइल में मौजूद कोई भी क्रेडेंशियल ब्लॉक छाप देता है, और लोग ध्यान देने से पहले ही आउटपुट चैट में चिपका देते हैं। आप क्या तुलना कर रहे हैं, यह तय करना कमांड चलाने से पहले आता है। सुरक्षित प्रतियों पर संरचना और भूमिकाओं की तुलना करें, और जब किसी और को देखना हो तो अलग संपादित फ़ाइल बनाएँ।
.ovpn फ़ाइल वास्तव में क्या रखती है
एक .ovpn फ़ाइल वैकल्पिक इनलाइन ब्लॉक वाली कॉन्फ़िगरेशन है। इसमें CA प्रमाणपत्र, क्लाइंट प्रमाणपत्र, निजी कुंजी, tls-auth या tls-crypt कुंजी, और बाहरी फ़ाइलों की ओर इशारा करने वाले या क्रेडेंशियल माँगने वाले निर्देश हो सकते हैं। दो फ़ाइलें लगभग एक जैसी दिख सकती हैं और केवल किसी ब्लॉक के भीतर अलग हों, या ऐसे एक निर्देश में अलग हों जो परिवहन को पूरी तरह बदल दे। पंक्तियों की संख्या आपको यह नहीं बताती कि इनमें से क्या हुआ।
कुंजी ब्लॉक के भीतर का अंतर किसी चीज़ का सार्वजनिक प्रमाण नहीं है। फिर से जारी प्रमाणपत्र और नई कुंजी वाला प्रमाणपत्र एक ही आकार का परिवर्तन दे सकते हैं, इसलिए ब्लॉक का अमेल कहता है कि सामग्री अलग है, यह नहीं कि किस निर्णय ने इसे बनाया। इसे क्षेत्रों की तुलना के संकेत के रूप में लें, निष्कर्ष के रूप में नहीं।
पंक्ति से नहीं, भूमिका से तुलना करें
कनेक्शन के अपने क्रम का पालन करें: पहले एंडपॉइंट और परिवहन, फिर भरोसा और अपेक्षित पहचान, फिर उपयोगकर्ता प्रमाणीकरण, फिर मार्ग, DNS और स्क्रिप्ट हुक। यह क्रम क्लाइंट जो करता है उससे मेल खाता है, इसलिए आपको मिलने वाला पहला अंतर वह पहली चीज़ है जो कनेक्शन तोड़ सकती थी। इसके बजाय वर्णानुक्रम में तुलना संबंधित सेटिंग्स को पूरे आउटपुट में बिखेर देती है।
क्षेत्र-सजग पास इन वस्तुओं को उसी क्रम में देखता है। क्लाइंट जो कुछ इंटरैक्टिव रूप से माँगता है वह प्रमाणीकरण पंक्ति का है, भरोसा पंक्तियों का नहीं।
remote,protoऔर पोर्ट, हर कनेक्शन ब्लॉक सहित।caऔरcert: जारीकर्ता, विषय और समाप्ति तिथि।- क्या निजी कुंजी बिलकुल मौजूद है, कभी नहीं कि उसमें क्या है।
tls-authयाtls-cryptकी उपस्थिति और कुंजी की दिशा।- प्रमाणीकरण निर्देश, किसी भी क्रेडेंशियल फ़ाइल के संदर्भ सहित।
- कनेक्ट होने पर चलने वाले मार्ग, DNS विकल्प और स्क्रिप्ट हुक।
जब किसी फ़ाइल में कई कनेक्शन ब्लॉक हों, हर विकल्प को उसके एंडपॉइंट के साथ रखें। केवल पहली remote पंक्ति की तुलना करने से वह विकल्प छूट सकता है जिसे क्लाइंट इस नेटवर्क पर वास्तव में चुनता है।
साधारण diff गलत औज़ार क्यों है
साधारण diff टेक्स्ट के लिए बना है, रहस्यों के लिए नहीं। यह निजी कुंजी को खुशी से स्क्रॉलबैक में छाप देगा, और यह आपको नहीं बताएगा कि जिस निर्देश को आप देख रहे हैं वह विफलता से असंबंधित है। क्षेत्र निष्कर्षण एक साथ अधिक सुरक्षित और अधिक पठनीय हैं, क्योंकि प्रमाणपत्र सामग्री को बाइट्स के बजाय मेटाडेटा के रूप में तुलना किया जा सकता है।
openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn
पहले दो कमांड कुंजी को छुए बिना पहचान और वैधता छापते हैं, इसलिए उनका आउटपुट चिपकाना सुरक्षित है। grep निर्देशों के नाम और मान छापता है पर कभी ब्लॉक के शरीर नहीं, जो इसे सही पहला पास बनाता है जब आपको परिवहन या रूटिंग का अंतर संदेह हो। यदि ब्लॉक की ही तुलना करनी हो, तो सामग्री के बजाय उसका हैश तुलना करें।
टिकट के लिए संपादित प्रति बनाएँ
अंतर समझाने के लिए क्षेत्रों के नाम और पर्याप्त संरचना रखते हुए वास्तविक रहस्य और अनावश्यक पहचानकर्ता हटाएँ। उसी आकार का चिह्न फिर भी बताता है कि सामग्री कहाँ है और कितनी लंबी थी, इसलिए तय करें कि क्या वह भी स्वीकार्य है। आपने जो कमांड चलाया याद है उस पर भरोसा करने के बजाय अंतिम अनुलग्नक को स्वयं जाँचें। केवल उदाहरण बनाने के लिए काम कर रही मूल फ़ाइल संपादित न करें, क्योंकि संपादित प्रोफ़ाइल ज़रूरी नहीं कि चलने योग्य हो और उसे फिर कभी आयात नहीं करना चाहिए।
मूल फ़ाइलों को फ़ाइल नाम और हैश से पहचानने योग्य रखें, समान नाम वाले तीन फ़ोल्डरों में नकल करने के बजाय। हैश स्ट्रिंग यह साबित करने के लिए पर्याप्त है कि कौन-सी फ़ाइल देखी गई और लीक होने पर कुछ खर्च नहीं करती। बदलाव बंद होने के बाद प्रतियाँ छाँट दें, ताकि अगले व्यक्ति को एक ही आधिकारिक फ़ाइल विरासत में मिले।
तुलना को विफलता से बाँधे रखें
तुलना अपनी कीमत तब वसूल करती है जब वह एक आयात या एक कनेक्शन विफलता के बारे में प्रश्न का उत्तर दे। पहले विफल होने वाले चरण का नाम लें, फिर केवल उन क्षेत्रों की तुलना करें जिन पर वह चरण निर्भर है; क्लाइंट के सभी क्रेडेंशियल एक फ़ोल्डर में जमा करने से अगली लीक अधिक संभावित और अगला निदान धीमा होता है। प्रश्न जितना सँकरा, उत्तर दे सकने वाले क्षेत्रों की सूची उतनी छोटी।
यदि नई फ़ाइल ऑपरेटर से आई है, तो भरोसा सामग्री बदलने से पहले उसका वितरण पथ पुष्ट करें। बदलाव के बाद, क्लाइंट ने वास्तव में जो आयातित प्रति चुनी और जो परिणाम तय हुआ उसकी जाँच करें, क्योंकि किसी निर्देश को दूसरा क्लाइंट संस्करण अनदेखा या भिन्न रूप से पढ़ सकता है। डिस्क पर रखी फ़ाइल उस कनेक्शन का प्रमाण नहीं है जो चला। निर्देशों का अर्थ OpenVPN 2.6 मैनुअल में.