איך בודקים מה מכסה מתג חירום במארח שנפרץ
הריצו את מבחן הניתוק, קראו את התוצאה של כל שכבה וראו היכן מתג חירום נעצר: הוא חוסם מסלולים, לא תוכנה שקוראת נתונים לפני הצפנה.
הפעילו את מתג החירום, הוציאו את שרת המנהרה מהאוויר וצפו במה שהמכונה עדיין עושה. המבחן שווה הרצה, מפני שהוא מפריד בין מה שחומת האש אוכפת לבין מה שהנחתם, והתוצאות צרות יותר ממה שרוב דפי המוצר מרמזים. מתג חירום שולט במסלולי רשת; הוא אינו שולט בתוכנה שכבר רצה במכשיר. אני מריץ את הרצף הזה בכל מכונה שהלקוח שלה טוען שהוא fail-closed, וזה אורך כעשר דקות.
התחילו מהלקוח, לא מהשרת
נקודת האכיפה היא המארח שאתם יושבים מולו: חומת האש של מערכת ההפעלה, שירות עזר או הדרייבר של לקוח ה-VPN עצמו. זה חשוב מפני שכל מה שהמתג יכול לעשות מוגבל למה שהשכבה הזו רואה. אם הלקוח מיישם את החסימה בכלל ניתוב בתוספת סימון, כל דבר עם הרשאות מספיקות יכול להוסיף כלל משלו; אם הוא משתמש בטבלת חומת אש של הגרעין, אותן הרשאות יכולות לערוך את הטבלה. עוצמת הצופן לא נכנסת לשאלה הזו.
לכן הדבר הראשון שצריך לקבוע הוא מי הבעלים של המדיניות במכשיר הזה ומה מותר לה לעקוף. במכונת עבודה מנוהלת התשובה היא בדרך כלל סוכן נקודות הקצה של הארגון, ו-VPN אישי לא מסיר את היכולות האלה, איך שלא תוגדר המנהרה.
שלב ראשון: אשרו את החסימה במסלולים שאתם חושבים שהיא מכסה
הורידו את המנהרה בקצה המרוחק ולא בלקוח, כדי שהלקוח ימשיך להאמין שהוא אמור להיות מחובר. אחר כך נסו את מה שאדם היה מנסה באמת:
curl -m 5 -sS -o /dev/null -w '%{http_code}
' https://example.com
ping -c 2 1.1.1.1
ip route
nft list ruleset # or: iptables -S
אתם רוצים לקוח שנכשל מהר ונקי, לא כזה שתלוי עד לפקיעת הזמן של הדפדפן. תלייה אומרת בדרך כלל שחבילות נזרקות בשקט על ידי כלל בלי דחייה, וזה מקובל, אבל היא יכולה גם לומר שהלקוח השאיר מסלול ברירת מחדל מיושן שפונה לממשק מת. קראו את טבלת הניתוב כשהמנהרה למטה: מסלול ברירת מחדל שעדיין מצביע על התקן המנהרה וכלל חומת אש שחוסם רק חיבורים יוצאים חדשים הם שני מצבים שונים, ורק אחד מהם fail-closed.
חזרו על אותן פקודות עם אפשרות ההרשאה לרשת המקומית של הלקוח דלוקה וכבויה. המתג הזה הוא המקום שבו רוב ההפתעות גרות, מפני שהוא פותח מחדש מסלול ששאר המדיניות נכתבה לסגור.
שלב שני: בדקו DNS ו-IPv6 כמסלולים נפרדים
פתרון שמות הוא הפער ששורד את רוב המימושים, מפני שהשאילתה יכולה לצאת דרך משהו אחר מהפתרן של המערכת. שאלו בכלי שמתעלם מתצורת הפתרן שלכם, ובדקו את צד v6 תוך כדי:
dig +short example.com
dig +short @1.1.1.1 example.com
curl -6 -m 5 -sS https://example.com -o /dev/null -w '%{http_code}
'
ip -6 route
תשובות ריקות לשתי שאילתות השם כשהמנהרה למטה הן התוצאה שאתם רוצים. אם השאילתה השנייה עונה, כתובת פתרן מקודדת קשיח נגישה והמנהרה אינה הדרך היחידה החוצה מהמכונה. אם רק בקשת v6 מצליחה, המדיניות מכסה IPv4 ומתעלמת מ-IPv6, וזו אותה דליפה במשפחת כתובות אחרת.
דפדפנים מקשים לקרוא את זה מבחוץ, מפני שדפדפן שמוגדר ל-DNS על HTTPS פותר את השאילתה דרך בקשת HTTPS: השאילתה חסומה רק כמידת חסימתו של פורט 443 אל נקודת הקצה ההיא. במארח שהמדיניות מתירה בו את תת-הרשת המקומית, הבקשה הזו עדיין יכולה להגיע לפתרן ברשת המקומית.
שלב שלישי: הפרידו בין חשיפת הרשת לחשיפת נקודות הקצה
עכשיו החלק שאליו שום כלל חומת אש לא מגיע. מתג חירום חוסם מסלולים מהמכונה; הוא לא מונע מתוכנה במכונה לקרוא נתונים לפני הצפנתם, והוא לא מונע מאותה תוכנה להשתמש במנהרה כחוק. קיילגר, תוספת זדונית, מסך שהושאר פתוח, לקוח סנכרון עם הרשאות רחבות: כולם מעבירים מידע דרך חיבור שהמתג שמח לאשר.
הדבר נכון גם לתוכנת ניטור שמעסיק התקין בכוונה. חסימת מסלולים לא מסירה אותה, וקניית שרת VPN חדש אינה התיקון, מפני שהחשיפה נמצאת לפני המנהרה.
מנהל לוח עריכה שמעלה לחשבון ענן ממחיש את הנקודה בחדות. התעבורה מוצפנת, היעד מורשה, ומתג החירום מדווח על מצב תקין כל הזמן.
שלב רביעי: נסחו את הטענה שהמבחן שלכם תומך בה
אחרי מבחן הניתוק אתם יכולים לקבוע עובדות מפורטות: אילו יישומים נכשלו, אילו מסלולים נעצרו, איך התנהגו DNS ו-IPv6, והאם החסימה החזיקה כשהמנהרה נפלה. אתם לא יכולים לומר שמערכת ההפעלה נקייה, ואתם לא יכולים לומר ששירות בקצה המרוחק ישמור על הכניסה שלכם פרטית.
החזיקו את שתי הבעיות בנפרד ותנו לכל אחת את השליטה שלה:
- מתג חירום: דרישת הכשל המוגדרת, שמאומתת במבחן ניתוק שאתם חוזרים עליו אחרי כל שדרוג לקוח.
- אמון במכשיר: עדכונים נתמכים, הגנת נקודות קצה ממקור מהימן, סקירת הרשאות ובקשות אימות לא מוסברות.
- אירוע: פעלו לפי התהליך של הפלטפורמה או הארגון כשחושדים בפריצה; שרת חדש אינו שלב ניקוי.
- גילוי: כשאתם מבקשים עזרה, אל תדביקו מפתחות פרטיים או ארכיוני אבחון שלמים, מפני שלוגים וצילומי מסך נושאים את אותם סודות שהחיבור נושא.
הריצו את הרצף שוב אחרי העדכון הבא, מפני שמתג חירום הוא תצורה שזזה עם גרסאות. המבחן הוא הראיה היחידה שיש לכם שההתנהגות שאתם סומכים עליה היא עדיין ההתנהגות שאתם מקבלים.