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

ציירו את החבילה לאחר הפענוח, לא לפניו

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

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

  1. לקוח מרוחק: התקן המשתמש שממנו נוצרת המנהרה.
  2. מדיניות קצה: מערכת הכללים שמקבלת את התעבורה החיצונית אל המאזין הציבורי.
  3. התקן מסיים: נקודת הקצה של VPN שמבצעת דה-קפסולציה ומוסרת את החבילה ל-IP רגיל.
  4. מסנן פנימי: מערכת כללי ההעברה או קבוצות האבטחה שמגבילה תעבורה מלקוח לשירות.
  5. מארח היישום: השירות שמקבל את הבקשה המפוענחת.

שתי מדיניויות, שני בעלים

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

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

המיקום קובע איזה גבול הבקשה חוצה

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

PlacementWhat terminates thereWhat sees plaintextWhich control can still denyFailure domain
Termination in a dedicated segmentA dedicated VPN endpointThe endpoint and anything on its segmentThe filter between that segment and the applicationThe segment path can bypass the filter if no rule sits on it
Termination on the edge firewallThe firewall's public listenerThe firewall, after decapsulationThe firewall's inner rule setAdmission and inspection fail together
Termination on the protected LANThe appliance's LAN legEvery host on the protected LANOnly a host control or a downstream gatewayThe appliance and the protected hosts fail together

המיקום השלישי הוא זה שמסיר את האכיפה בשקט, מפני שקטע על המקטע המוגן נותן להתקן נתיב ישיר שהתרשים אולי אינו מראה. בדקו ממשקים ונתיבים ולא את התמונה: ip route get 10.20.5.10 מדווח באיזה ממשק החבילה הייתה יוצאת, והתשובה לעיתים קרובות אינה זו שהתכן הניח. תפקידו הקלאסי של חומת האש לשלוט בתעבורה בין עמדות, כמתואר ב-NIST SP 800-41, הוא מבחן שימושי כאן, מפני שהתקן עם קטע בלתי מוגבל אל הרשת המוגנת אינו שולט בהרבה. חיפוש נתיב הוא תרשים כן יותר מזה שבמצגת.

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

התרגום משנה מה כללי ההמשך יכולים לראות

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

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

sudo tcpdump -ni inside0 host 10.20.5.10
ip route get 10.20.5.10
sudo iptables -t nat -S POSTROUTING

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

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

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

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

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