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

इसे खोलें और पहली चालीस पंक्तियाँ पढ़ें

सबसे ऊपर से शुरू करें, जहाँ क्लाइंट आमतौर पर संस्करण, प्लेटफ़ॉर्म और कॉन्फ़िगरेशन डालते हैं। पहली पंक्तियाँ बताती हैं कि फ़ाइल कितनी विस्तृत है, और यह तय करता है कि बाकी के कितने हिस्से की चिंता करनी है। डिफ़ॉल्ट लॉग और डिबग लॉग अलग-अलग जोखिम वाले अलग-अलग उपकरण हैं।

head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'

कुछ भी पढ़ने से पहले फ़ाइल का आकार और आकृति भी जाँचें। एक ही घटना दोहराई गई दो मेगाबाइट की टेक्स्ट फ़ाइल को छोटा करना आसान है। उसी फ़ोल्डर में बाइनरी कैप्चर बिल्कुल अलग समस्या है, और उसे निर्यात माँगने वाले के साथ अलग बातचीत चाहिए।

Windows पर समकक्ष प्रत्येक एक cmdlet हैं, और पहले को आपके द्वारा स्वयं न बनाई गई किसी भी फ़ाइल पर चलाना उचित है:

Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime

वे फ़ील्ड जो किसी व्यक्ति की पहचान करते हैं

उपयोगकर्ता नाम ऐसी जगहों पर दिखते हैं जहाँ लोग उम्मीद नहीं करते: प्रमाणीकरण के लिए इस्तेमाल किया गया खाता, प्रमाणपत्र का विषय, होम निर्देशिका के अंतर्गत प्रोफ़ाइल पथ, और मशीन का नाम जो अक्सर वास्तविक नाम को कूटबद्ध करता है। जो लॉग खाते का फ़ील्ड संपादित करता है और होम पथ को अक्षुण्ण छोड़ता है, उसने कुछ भी संपादित नहीं किया।

FieldWhat it identifiesPractical treatment
Account or usernameA person, and often an employerReplace consistently, keep the mapping
Certificate subject and CNDevice or user identityKeep the structure, replace the value
Home directory pathA login name, sometimes a full nameReplace the segment, not the whole path
Machine or hostnameA person or a physical locationReplace with a stable pseudonym

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

टाइमस्टैम्प भी समग्र रूप से व्यक्तिगत डेटा है। किसी खाते के जुड़ने का समय, एक महीने में लिया गया, कार्य-घंटे और यात्रा बताता है। यदि प्रश्न को पूरी सीमा नहीं चाहिए, तो फ़ाइल को घटना के आसपास की विंडो तक काटें।

वे फ़ील्ड जो किसी नेटवर्क की पहचान करते हैं

एंडपॉइंट पते, आंतरिक मार्ग और धकेले गए विकल्प एक निजी नेटवर्क की आकृति बताते हैं। ठीक यही जानकारी हमलावर चाहेगा, और यह आमतौर पर टिकट की ज़रूरत से बहुत अधिक विस्तार में मौजूद होती है।

प्रयोग में आने वाला पता परिवार खोजें, केवल वह नहीं जिसकी आपने उम्मीद की थी। दोहरे स्टैक वाला क्लाइंट IPv6 एंडपॉइंट और IPv6 मार्गों का एक समूह लॉग कर सकता है जिसे संपादित करने का किसी ने सोचा नहीं, क्योंकि समीक्षा केवल बिंदुयुक्त चौगुणों को देख रही थी।

grep -nEo '([0-9]{1,3}\.){3}[0-9]{1,3}' vpn-support.log | sort -u | head -n 40
grep -nEo '([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}' vpn-support.log | sort -u | head -n 20

अद्वितीय सूची ही मुख्य बात है। यह बताती है कि फ़ाइल कितने अलग पते उल्लेख करती है, और यह आमतौर पर स्क्रॉल करते समय लगने से बहुत कम होता है। यह आपको संपादन के लिए जाँचसूची और यह साबित करने का तरीका भी देती है कि आपने सभी को कवर किया। दस पते पाँच मिनट का काम हैं, और सौ बताते हैं कि निर्यात प्रश्न से व्यापक है।

अगर इंजीनियर को टोपोलॉजी चाहिए तो उसे रखें। सबनेट संबंधों को बनाए रखते हुए दूसरा और तीसरा ऑक्टेट बदलना सीमा प्रकाशित किए बिना प्रश्न का उत्तर देता है। वही तरकीब IPv6 उपसर्गों के लिए भी काम करती है। इंजीनियर को विफलता की आकृति चाहिए, और आकृति सुसंगत प्रतिस्थापन के बाद भी बची रहती है।

रहस्य आकृतियों में छिपते हैं, लेबल में नहीं

निजी कुंजी को अपने पास “password” शब्द की ज़रूरत नहीं होती। यह मार्कर पंक्तियों के बीच एक ब्लॉक, एक लंबी base64 स्ट्रिंग, या इनलाइन कॉन्फ़िगरेशन डंप के रूप में दिखती है। टोकन क्वेरी पैरामीटर के रूप में दिखते हैं, और क्रेडेंशियल उन URL के अंदर दिखते हैं जिन्हें क्लाइंट ने हूबहू लॉग किया।

grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log

दूसरा पैटर्न वही है जिसे लोग भूल जाते हैं। स्कीम, उपयोगकर्ता, पासवर्ड, होस्ट के रूप वाला URL एक पूरा क्रेडेंशियल है, और जब भी कोई प्रॉक्सी या फ़ीड इनलाइन प्रमाणीकरण के साथ कॉन्फ़िगर होता है, क्लाइंट ऐसे URL लॉग करते हैं।

यह साबित करने के लिए कि आपने फ़ाइल संपादित नहीं की, उसे कभी मूल रूप में न भेजें। यदि कोई ऑपरेटर अपरिवर्तित निर्यात पर ज़ोर दे, तो पूछें कि उसे किसलिए चाहिए, उसे उनके सत्यापित सहायता चैनल से भेजें, और बाद में अपनी स्थानीय प्रति हटा दें। यह अनुरोध वैध है; सार्वजनिक चिपकाना नहीं।

संपादित प्रति बनाएँ और अंश भेजें

प्रति पर काम करें, मूल को सुरक्षित जगह रखें, और हाथ से नहीं बल्कि दोहराने योग्य कमांड से संपादित करें। पता पैटर्न पर एक बार गुज़रना इसका अधिकांश हिस्सा पकड़ लेता है:

cp vpn-support.log vpn-support.original.log
sed -E 's/([0-9]{1,3}\.){3}[0-9]{1,3}/ADDR/g; s/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/USER@DOMAIN/g' \
  vpn-support.original.log > vpn-support.redacted.log
grep -cE 'PRIVATE KEY|password|token' vpn-support.redacted.log

अंतिम गिनती शून्य होनी चाहिए। यदि नहीं है, तो संपादन पास ने एक आकृति छोड़ दी और कुछ भी भेजने से पहले आपको उन पंक्तियों को देखना चाहिए। संपादित फ़ाइल को एक बार अपनी आँखों से भी पढ़ें; स्क्रिप्ट पैटर्न पकड़ती है, संदर्भ नहीं।

वह सबसे छोटा अंश भेजें जो अभी भी विफलता दिखाता है। त्रुटि के आसपास दस पंक्तियाँ आमतौर पर पर्याप्त होती हैं, और उनकी समीक्षा दो मेगाबाइट की फ़ाइल से कहीं आसान है। फिर अपने लेबल और वास्तविक मानों के बीच का मैपिंग अपने नियंत्रण वाली जगह रखें, क्योंकि अनुवर्ती प्रश्न को उसकी ज़रूरत होगी।

OpenVPN का लॉगिंग दस्तावेज़ बताता है कि वर्बोसिटी स्तर क्या रिकॉर्ड होता है उसे कैसे बदलते हैं, जो यह तय करने के लिए उपयोगी संदर्भ है कि समस्या को फ़ाइल के कितने हिस्से की वास्तव में ज़रूरत है।

संबंधित लेख