گزارش VPN خود را پیش از ارسال بخوانید: فیلد به فیلد
گزارشهای پشتیبانی نام کاربری، نام گواهی، نشانیهای داخلی و گاهی یک کلید را در خود دارند. فیلدها را بگردید، عبارتهای محرمانه را جستوجو کنید و سپس یک بخش ویرایششده بفرستید.
یک تیکت پشتیبانی باز میکنید، خروجی تشخیصیای را که مشتری ساخته پیوست میکنید و منتظر میمانید. فایل احتمالاً هیچ تاریخچه مرورگری ندارد، و همین است که آن را امن به نظر میرساند. با این حال شامل این است که شما چه کسی هستید، از کدام دستگاه استفاده کردهاید، به کدام نشانیهای داخلی و چه زمانی رسیدهاید، و گاهی یک کلید خصوصی که مشتریای که پیکربندیاش را ثبت میکند کپی کرده است. مرور فایل پیش از ارسال حدود پنج دقیقه طول میکشد و از افشای دائمی جلوگیری میکند.
آن را باز کنید و چهل خط نخست را بخوانید
از بالا شروع کنید، جایی که مشتریها معمولاً نسخه، پلتفرم و پیکربندی را بیرون میریزند. خطوط نخست میگویند فایل چقدر پرگو است، و همین تعیین میکند چقدر از بقیه باید مهم باشد. گزارش پیشفرض و گزارش اشکالزدایی دو اثر متفاوت با میزان افشای متفاوتاند.
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
فیلدهایی که یک شخص را شناسایی میکنند
نامهای کاربری در جاهایی ظاهر میشوند که مردم انتظار ندارند: حسابی که برای احراز هویت به کار میرود، موضوع گواهی، مسیر پروفایل زیر پوشه خانه، و نام دستگاهی که اغلب یک نام واقعی را رمزگذاری میکند. گزارشی که فیلد حساب را ویرایش کند و مسیر خانه را دستنخورده بگذارد، هیچچیز را ویرایش نکرده است.
| Field | What it identifies | Practical treatment |
|---|---|---|
| Account or username | A person, and often an employer | Replace consistently, keep the mapping |
| Certificate subject and CN | Device or user identity | Keep the structure, replace the value |
| Home directory path | A login name, sometimes a full name | Replace the segment, not the whole path |
| Machine or hostname | A person or a physical location | Replace 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 توضیح میدهد که سطوح پرگویی چه چیزی را تغییر میدهند، که بافت مفیدی برای تصمیمگیری درباره اینکه مشکل واقعاً چه مقدار از فایل را لازم دارد، است.