איך פרוקסי ציבורי מגיע למקור פרטי דרך VPN
פרוקסי הפוך יכול להגיש אתר ציבורי ממקור פרטי דרך מנהרה. הפרידו בין פרסום, נקודות קצה של TLS וקבלת משתמשים לפני שאתם חושפים אותו.
פרסום אתר דרך מנהרה ומתן גישה ל-VPN למשתמשים הם שני הסדרים שונים שחולקים אותו כבל. בראשון, פרוקסי הפוך ציבורי מקבל את בקשת המבקר ומעביר אותה דרך המנהרה אל מקור שאיש אינו יכול להגיע אליו ישירות. בשני, המשתמש חייב להצטרף ל-VPN לפני שהאפליקציה נגישה בכלל. ערבוב שתי התיאורים הוא הדרך שבה צד אחורי פרטי בסופו של דבר נחשף לציבור.
שני מודלים שנראים אותו דבר בתרשים
ציירו את החצים לפני שתבחרו משהו. מודל פרסום ציבורי עובר מהדפדפן לפרוקסי ב-HTTPS, ואז מהפרוקסי למקור דרך המנהרה, והמקור לעולם אינו מקבל חיבור מהאינטרנט. מודל VPN בלבד עובר מהלקוח לשער, והאפליקציה נגישה רק מתוך הנתיב הזה. המחשב הנייד של המשתמש יושב באותה רשת כמו האפליקציה, וזה כל העניין של אותו מודל.
המודלים נבדלים במי מבצע אימות והיכן. בראשון, הפרוקסי הוא הכניסה הציבורית והוא מעביר כל בקשה שמגיעה, כולל עוינת, בכפוף למדיניות שהוגדרה עליו. בשני, הנגישות עצמה היא השער, וזו קבלה גסה אך אמיתית.
היכן TLS נעצר, ומה הוא באמת מוכיח
TLS בין הדפדפן לפרוקסי מגן על הקפיצה הזו ומאפשר לדפדפן לאמת את האתר שאליו התכוון להגיע. אם הפרוקסי מסיים את TLS, הבקשה קיימת בצורה קריאה בתוך התהליך הזה לפני שהיא מועברת. הפעלת TLS שנייה אל המקור יכולה להגן על הקפיצה הבאה ולאמת בנפרד את נקודת הקצה של האפליקציה. אף אחד מהחיבורים אינו קובע איזה אדם רשאי להשתמש באפליקציה. תעודת wildcard על הפרוקסי אינה משתרעת גם על הקפיצה השנייה.
זה החלק שאנשים דוחסים למילה מוצפן. סודיות, שלמות וזהות שרת הן תכונות תעבורה; הרשאה היא החלטה של האפליקציה. כתובת פרטית מאחורי מנהרה משנה מי יכול להגיע לשקע, לא מי רשאי להתחבר לאחר שהגיע.
סמכו על כותרות מועברות רק מהפרוקסי
אפליקציות שרושמות או מאשרות לפי כתובת הלקוח קוראות בדרך כלל כותרת שהפרוקסי מוסיף. הכותרת הזו היא רק טקסט, ולכן כל מה שיכול להגיע ישירות למקור יכול לטעון לכל כתובת שירצה. הגבילו את המקור כך שרק כתובת המנהרה של הפרוקסי תוכל להתחבר, והגדירו את האפליקציה לקבל את הכותרת רק מאותה כתובת.
curl -s -o /dev/null -w '%{http_code}
' -H 'X-Forwarded-For: 203.0.113.9' http://172.20.5.40/
אם הבקשה הזו מצליחה ממארח שאינו הפרוקסי, המקור סומך על כותרת שהוא אמור להתעלם ממנה. תקנו את המאזין לפני שנוגעים באפליקציה. דחייה היא תוצאה טובה בהרבה משורת יומן שנושאת כתובת מזויפת.
השאירו את המקור נגיש בדיוק ממקום אחד
קשרו את המאזין של המקור לכתובת המנהרה או חסמו אותו בחומת אש אל הפרוקסי, ואז ודאו מה באמת מאזין. שירות שהופעל עם כריכה wildcard מקבל חיבורים בכל ממשק שיש למארח, כולל כזה ששכחתם שהוא ניתן לניתוב. טבלת ההאזנה היא האמת הבסיסית, לא קובץ התצורה שהתכוונתם להחיל. אם כריכת ה-wildcard מכוונת, חומת האש עדיין צריכה להיות הרכיב שמצמצם אותה.
ss -ltnp | grep -E ':(80|443)'
עשו את אותה סקירה עבור ממשקי ניהול, שהם החשיפה המקרית הרגילה. ואז כתבו את שני המודלים בנפרד: האתר הציבורי דרך הפרוקסי, וממשק הניהול שנגיש רק דרך המנהרה. המשפט שהשרת מאחורי VPN לא אומר דבר מזה.