התראה של VPN שנדלקת על מדינה חדשה נראית חד משמעית, ולרוב היא לא. האימות אומר שניסיון התקבל; הסשן אומר איזו התקשרות נשאה אותו; רשומות המשאבים אומרות מה קרה בתוך אותה התקשרות. כל אחד עונה על שאלה אחרת. כלל שממזג את שלושתם מייצר שלושים קריאות ביום שני ומפספס את המקרה האמיתי ביום שישי.

כתובת זרה היא שאלה, לא תשובה

נסיעות, ספקי סלולר שיוצאים במדינה אחרת, פרוקסי אינטרנט ארגוני ובריכת NAT בדרגת ספק שהוקצתה מחדש — כולם מזיזים את המקור הנראה לעין בלי להזיז את התוקף. רשומת ההתחברות משקפת מהיכן החיבור נכנס לרשת, לא מי החזיק במכשיר.

הכשל ההפוך גרוע יותר מפני שהוא שקט. סיסמה גנובה שמשתמשים בה מהעיר של המשתמש עצמו מייצרת התחברות שמתאימה לכל התחברות קודמת בבדיקת הגאוגרפיה.

התייחסות לגאוגרפיה כאל פסק הדין עולה מחיר מדיד. מחשבים ניידים בנסיעות מייצרים זרם קבוע של בדיקות, הבודקים לומדים לסגור אותן בלי לקרוא, וההרגל מחזיק מעמד עד שמקרה אמיתי נוחת באותה תור.

שלושה סוגי רשומות עונים על שלוש שאלות שונות

התחילו ממה שהמוצרים הפרוסים באמת פולטים, לא ממה שעלון מוצר מרמז שהם יכולים לפלוט. החלטת האימות מציינת את הזהות הנטענת, את השיטה ואת התוצאה. מחזור החיים של הסשן מציין את החיבור, את השער ואת הכתובת שהוקצתה, מההתחלה ועד העצירה.

RecordQuestion it answersWhat it cannot prove
Authentication decisionWhich identity was accepted or rejected, by which method, at what timeThat the person operating the device was the account owner
Session lifecycleWhich connection, gateway and assigned address were active, and for how longWhat the session did with that access
Resource eventWhich read, write or denied operation a service observedWhich human behind the session triggered it
Policy changeWhether an administrator altered the rule that governs the accessWhether the change was reviewed or intended

תא ריק הוא פער באיסוף, לא זיכוי. אם אירועי משאבים לא מגיעים לעולם, היעדר קריאה חשודה אומר שלצינור אין מה לדווח, ולוח מחוונים שקט מתאר את הצינור ולא את הרשת. רשמו אילו רשומות הפריסה באמת מייצרת לפני שאתם מבטיחים כלל שתלוי בהן, ותנו שם לבעלים של כל הזנה חסרה.

פרטי החשבונאות הם המקום שבו סשנים נעשים בני בדיקה. חשבונאות RADIUS כמתואר ב-RFC 2866 נושאת עדכוני התחלה, עצירה וביניים הקשורים למזהה סשן, ולכן סשן עם התחלה ובלי עצירה הוא פער שאפשר לתת לו שם במקום תעלומה.

חברו לפי הסשן, לא לפי שם המשתמש

חשבון אחד מחזיק כדין כמה סשנים בו-זמנית: מחשב נייד, טלפון ומכונת מעבדה שהושארה מחוברת כל הלילה. חיבור כל אירוע לאותו שם משתמש ממזג שלושה מכשירים לסיפור אחד ואז קורא את השילוב כפריצה. גם כתובות שהוקצו ממוחזרות, ולכן חיבור שממשיך להתאים לכתובת לאחר שהסשן הסתיים גורר את המכשיר של החודש שעבר לתוך האירוע של היום. שמרו את מפתח הסשן לצד הכתובת והגבילו את ההתאמה לחלון הזמן שהסשן באמת כיסה.

כשהתרגום מסיר את המקור המקורי לפני ששירות רואה אותו, השתמשו בזהות ששורדת בגבול הזה, כמו נושא TLS הדדי או הצהרת התחברות יחידה. המצאת מיפוי אחד לאחד בין כתובת לאדם היא אותה טעות עם צעדים נוספים.

התראה בלי בעלים היא לוח מחוונים

כל כלל צריך תנאי, את ההסברים התמימים שמייצרים אותו, את הראיות שצריך לשלוף, ואת האדם שפועל. פעולה ניהולית שנדחתה שוב ושוב, פרץ של סיסמאות כושלות ואספן שקט הם שלושה אירועים שונים עם שלושה שעונים שונים.

התראה אינה בלימה, ורשימת תפוצה אינה מגבילה דבר. שינוי סשן חי דורש את הרכיב שיכול לעשות זאת, בין אם זה השער שמפיל את החיבור ובין אם ספק הזהות שמבטל את הסשן. הזנות מיושנות ורשומות עצירה חסרות שייכות גם הן לטקסט של הכלל, מפני שאספן שלא שלח דבר במשך יממה נראה מלוח המחוונים בדיוק כמו רשת שקטה. ההבדל נראה רק בצינור עצמו.

בדקו את נתיב האיסוף לפני שתסמכו על שבוע שקט

הוכיחו את הצינור מקצה לקצה לפני שתכווננו כלל אחד. הפקודות שלהלן מאשרות שמאזיני האימות והחשבונאות פעילים, שפרטי בדיקה נדחים מהסיבה הנכונה ושקרו אירועי סשן עדיין מגיעים:

ss -uanp | grep -E ':(1812|1813)\b'
radtest alice 'not-the-password' 127.0.0.1 0 testing123
journalctl -u openvpn-server@server --since '-30 min' | grep -c 'Peer Connection Initiated'
timedatectl | grep -E 'System clock|synchronized'

Access-Reject מהבדיקה מוכיח שהבקשה הגיעה לשרת ושהסוד המשותף התאים, וזה החלק שאנשים מדלגים עליו. פסק זמן לעומת זאת מצביע על הסוד, על המאזין או על מסנן שלפניו, וכל התראה במורד הזרם אינה ניתנת לאימות עד שזה יתוקן.

מצב השעון חשוב מפני שחלונות מתאם מניחים הסכמה. שער שסוטה בדקות הופך חיבור סשן נקי אחרת לבלתי אפשרי, והבודקים מפצים בהרחבת החלון עד שהחיבור מפסיק להבחין. בדקו את הסטייה לפני עריכת הכלל.

לאחר מכן העבירו כלל אחד בבדיקה לא מזיקה: צרו התחברות מכתובת בלתי צפויה, אשרו שההתראה נדלקת, אשרו שהמגיב יכול לשלוף את הסשן ואת אירועי המשאבים שלו, ואשרו שהקריאה נושאת את מזהה הסשן. כלל שמייצר סיפור קוהרנטי עובר. כלל שמייצר ערימה של שורות יומן הוא עדיין לוח מחוונים. רשמו את התוצאה לצד הכלל כדי שהבדיקה הבאה תתחיל מראיות ולא מאינטואיציה.

מאמרים קשורים