קראו את יומן ה-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 בצורה סכימה, משתמש, סיסמה, מארח היא אישור מלא, ולקוחות מתעדים כתובות כאלה בכל פעם שפרוקסי או פיד מוגדר עם אימות מוטמע.
לעולם אל תשלחו את הקובץ המקורי כדרך להוכיח שלא ערכתם אותו. אם מפעיל מתעקש על ייצוא ללא שינוי, שאלו לשם מה הוא צריך אותו, שלחו אותו בערוץ התמיכה המאומת שלהם, ומחקו את העותק המקומי שלכם אחר כך. הבקשה הזו לגיטימית; הדבקה פומבית אינה.
בנו את העותק המעובד ושלחו את הקטע
עבדו על עותק, שמרו את המקור במקום מוגן, ועבדו בפקודה ניתנת לחזרה במקום ביד. מעבר אחד על תבניות הכתובות תופס את רובו:
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 על רישום יומנים מתאר כיצד רמות פירוט משנות את מה שנרשם, וזה הקשר שימושי להחלטה כמה מהקובץ הבעיה באמת דורשת.