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

המיתוס: ל-VPN יש שעון אחד

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

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

קראו את המקור לפני הערך

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

journalctl -o short-iso --utc -n 20
logger -t vpn-check "test event"

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

עצרו אם אינכם יכולים לומר איזה רכיב כתב שדה. השוואתו למשהו אחר היא ניחוש.

תצוגת אזור זמן אינה רגע אחר

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

date -u +%FT%TZ
timedatectl

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

תאמו בלי לשכתב את הראיות

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

chronyc tracking
journalctl --utc -u openvpn-client@work -n 50 --no-pager

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

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

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