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

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

כל חסימה מתחילה בשאלה: מי הופך את השם לכתובת? במחשב שולחני רגיל התשובה היא הפותר של המערכת, שהולך לפי הסדר המוגדר ובדרך כלל קורא את קובץ hosts לפני שהוא פונה ל-DNS. ברשת מסוננת התשובה עשויה להיות הנתב, שרואה את השאילתה רק אם הלקוח שולח אותה דרכו ללא הגנה. שנו את המסלול ותשנו מי רשאי להשיב.

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

זה המנגנון שמאחורי התלונה המוכרת שהמסנן עובד עד שה-VPN מתחבר.

רשומת hosts עונה לפני שהמנהרה קיימת

שורה כמו 127.0.0.1 www.example.com נקראת על ידי הפותר המקומי, ולכן התשובה נוצרת במכונה בלי שום רשת. חברו מנהרה, שנו שרת DNS, החליפו רשתות: הרשומה עדיין מחזירה loopback. לכן חסימת hosts היא היחידה מבין השתיים שאינה מושפעת מהמקום שבו ה-VPN מסתיים.

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

אמתו את התשובה עם getent ahosts בלינוקס או Resolve-DnsName בווינדוס במקום לסמוך על לשונית בדפדפן.

מסנן נתב רואה רק את מה שחוצה אותו

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

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

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

ארבע נקודות אכיפה ומה כל אחת מפספסת

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

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

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

בחרו את השכבה שמתאימה לכוונה: נוחות ביתית שייכת למכשיר, וכלל ארגוני שייך לשער.

בדקו את שני המצבים לפני שאתם אומרים שזה גמור

הריצו את אותן שלוש פקודות עם ה-VPN מחובר ומנותק: getent ahosts כדי לראות את תשובת הפותר, nslookup כדי לראות מה השאילתה מחזירה, ו-curl -I מול האתר כדי לראות אם חיבור עדיין מושלם. אם הראשונה מחזירה loopback והשלישית מתחברת לכתובת האמיתית, משהו עקף את הפותר ורשומת hosts אינה הבקרה שאתם חושבים.

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

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

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