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

הכריעו את השאלה לפני הכלי

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

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

קראו את שלושת השדות שעונים עליה

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

wg show
wg show wg0 latest-handshakes

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

בחרו מרווח שתוכלו להגן עליו

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

עבור OpenVPN, מתקן הסטטוס כותב קובץ במרווח מוגדר. בתצורת השרת זה נראה כך status /var/log/openvpn-status.log 60, כאשר המספר בסוף הוא השניות בין כתיבות חוזרות, והקובץ מוחלף ולא מתווסף. הפרט הזה חשוב: לקובץ מוחלף אין היסטוריה, ואילו אספן שמוסיף לו יוצר היסטוריה.

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

שמרו על תוויות יציבות ועל מיפוי מוגבל

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

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

תעדו מה אתם אוספים ומה לא

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

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

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