שני כללים נפרדים קובעים אם מנהרת VPN תשרוד חומת אש: היציאה שאליה מתקשר הלקוח והפרוטוקול שנושא את המטען. פתחו רק את הראשון והמנהרה תאומת, ואחר כך לא יזוזו נתונים. המינימום הוא יציאת TCP אחת ו-GRE עבור PPTP, שתי יציאות UDP ו-ESP עבור L2TP/IPsec ו-IKEv2, ויציאה אחת עבור SSTP, OpenVPN ו-WireGuard. כיוון, מעקב מצב ו-NAT קובעים את השאר.

התחילו מהיציאה שאליה מתקשר הלקוח

לכל משפחה יש נקודת כניסה שאליה הלקוח פונה ראשון, ואותה נקודת כניסה היא מה שכלל ההרשאה שלכם צריך לנקוב. לקוחות PPTP מתחברים ל-TCP 1723. L2TP/IPsec מתחיל IKE על UDP 500 ועובר ל-UDP 4500 כשמשתמשים במעבר NAT, כשמסגרת L2TP עצמה על UDP 1701 בתוך המנהרה. SSTP עוטף את ההפעלה ב-TLS על TCP 443, IKEv2 מנהל משא ומתן על UDP 500 ו-4500, OpenVPN משתמש כברירת מחדל ב-UDP 1194 אך לעתים קרובות מועבר ל-TCP 443, ו-WireGuard מאזין על UDP 51820.

FamilyRule to add on the gatewayTypical mistake
WireGuardUDP port from ListenPort, for the peer addressAssuming 51820 when the config says otherwise
OpenVPNThe configured UDP or TCP port, often 443Opening 1194 after the server moved
SSTPTCP 443 limited to the gateway IPAllowing 443 to any destination
IKEv2UDP 500 and UDP 4500, plus ESPAllowing only 500 and losing NAT-T
L2TP/IPsecUDP 500, 4500, ESP, and 1701 inside the tunnelExposing 1701 to the internet
PPTPTCP 1723 and IP protocol 47Writing a rule for TCP 47

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

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

GRE ו-ESP הם מספרי פרוטוקול, לא יציאות

ל-GRE ול-ESP אין יציאות כלל, ולכן טופס חומת אש שמקבל רק מספרי יציאות לא יכול לבטא אותם. GRE הוא פרוטוקול IP 47 ו-ESP הוא פרוטוקול IP 50, ושניהם מותאמים דרך שדה הפרוטוקול בכותרת ה-IP. כלל שנכתב כיציאת TCP 47 לא מתאים לשום דבר, וכך מדיניות PPTP נראית נכונה ובכל זאת מפילה כל מנה אחרי לחיצת היד.

נתבים ביתיים מסתירים את זה מאחורי תיבת סימון למעבר שמתקינה את כלל הפרוטוקול, ובמקרה של GRE גם את עוזר ה-NAT הדרוש למיפוי הזרימה. בחומת אש אמיתית אתם מוסיפים את הפרוטוקול בעצמכם: התירו פרוטוקול IP 47 לשרת PPTP, התירו פרוטוקול IP 50 לשער IPsec. במקום שבו הפלטפורמה אינה מציעה שדה פרוטוקול, האנקפסולציה היא המוצא, ולכן IKEv2 יכול לסגת ל-UDP 4500 ולכן OpenVPN ו-WireGuard לא נתקלים בבעיה מעולם.

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

כיוון, מצב ו-NAT משנים את התשובה

לקוח שמתקשר החוצה ושער שמאזין פנימה הם דרישות שונות, ואותה רשימת יציאות יכולה להיות נכונה בכיוון אחד ושגויה בשני. חומת אש עם מצב עוקבת אחר זרימת ה-UDP ב-500 וב-4500 ומאפשרת לתשובות לחזור בלי כלל שני. ל-ESP ול-GRE אין יציאות, ולכן להתקן NAT אין במה להיאחז והוא זקוק לעוזר או לאנקפסולציה כדי לעקוב אחר ההפעלה.

מעבר NAT הוא החלק שמפספסים. IKEv2 מתחיל ב-UDP 500, מזהה התקן NAT וממשיך ב-UDP 4500, ולכן מדיניות שמתירה רק 500 נותנת מנהרה שמתייצבת ואחר כך משתתקת. L2TP/IPsec עושה את אותה תנועה. אם הלכידה שלכם מראה את החליפין הראשון אך לא תעבורה מתמשכת, חפשו כלל שנעצר ב-500.

רשמו את הכיוון עם כל כלל. «התירו UDP 4500» אינו אומר דבר עד שתגידו מאיפה לאן, וכלל שנכון ללקוח נודד הוא בדרך כלל שגוי עבור עמית מאתר לאתר.

בדקו כל נתיב בלכידה

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

sudo tcpdump -ni any tcp port 1723
sudo tcpdump -ni any udp port 500 or udp port 4500
sudo tcpdump -ni any proto gre
sudo tcpdump -ni any proto 50

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

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

השאירו סט כללים שאתם יכולים להגן עליו

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

שערי ענן מנקודה לאתר הופכים את הבחירה לגלויה: הפרופיל שהורד משתמש או ב-SSTP על 443 או ב-IKEv2 על 500 ו-4500, ויש לפתוח רק את זה שהפרופיל באמת בוחר. PPTP אינו שווה את חריגת ה-GRE ברשת מודרנית, שכן מפעילי סלולר מפילים לעתים קרובות פרוטוקול 47 ללא קשר לחומת האש שלכם. לפני שתסגרו את הקריאה, ודאו שהכלל מתאים ליציאה בתצורת השרת, ששדה הפרוטוקול מוגדר במקום שבו המשפחה זקוקה לו, ושהיעד הוא השער ולא כל כתובת.

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