Transmission ב-Linux: לאכוף יציאה לפי בעל התהליך
פורט העמיתים אינו כל הסיפור. הגבילו את כלל חומת האש לחשבון הלקוח, כסו את שתי משפחות הכתובות ובדקו כשהמנהרה למטה.
חסימת הפורט הנכנס של Transmission אינה מדיניות VPN. לקוח טורנט פותח חיבורים יוצאים אל עמיתים ואל עוקבים, מפענח שמות ועשוי לחשוף מאזין לשליטה מרחוק, וכל אחד מאלה יכול לצאת דרך ממשק שלא התכוונתם אליו. עברו על חמשת הבדיקות לפי הסדר והתייחסו לכלל חומת האש, לא להגדרות הלקוח, כאל הגבול. שתי הבדיקות האחרונות הן אלה שאנשים מדלגים עליהן, והן קובעות אם האחריות מחזיקה כשהמנהרה נופלת.
תנו שם לתהליך שבעל ההעברה
יישום שולחן העבודה והדמון של המערכת פועלים תחת חשבונות שונים, וכלל שמבוסס על בעלים הולך אחרי החשבון ולא אחרי שם התוכנית. גלו איזה מהשניים פועל לפני שתכתבו כלל. חשבון שירות ייעודי נותן למדיניות נושא מדויק, בעוד משתמש שולחן עבודה חולק את זהותו עם דפדפנים, עורכים וכל השאר בהפעלה. אשרו את ה-UID במקום להניח ששם החשבון מהחבילה הוא זה שבשימוש.
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
אם החשבון עדיין לא קיים, צרו אותו למטרה זו ואל תיתנו לו שום דבר אחר להריץ. כתבו את החשבון וה-UID בהערה של הכלל, כי כלל בלי נושא הוא כלל שאיש לא יכול לערוך בבטחה.
הפרידו בין שדות ההאזנה למסלול
Transmission 4.x מתעד כתובות האזנה של עמיתים בנפרד מ-rpc-bind-address, וההבדל הזה חשוב. הגדרת RPC שולטת רק במאזין לשליטה מרחוק, ולכן שינוי שלה אינו בוחר מסלול לתעבורת העמיתים. קריאה של שתי ההגדרות כאחת היא הסיבה הנפוצה ביותר לכך שתצורה שנראית קפדנית עדיין דולפת. אותה תיעוד מתאר מקרה חלופי כאשר כתובת האזנה של עמיתים אינה תקפה, כלומר כתובת לא זמינה היא מקרה חלופי מתועד, ולא סירוב מובטח.
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
השתמשו בבקרות של הלקוח לפי ייעודן, והניחו את האחריות בחומת האש. הגדרת האזנה עשויה עדיין להיות שווה, אבל היא אינה מוכיחה שפנייה לעוקבים, גילוי מקומי או חיפוש מואצל יוצאים כולם דרך המנהרה. כששני אלה חלוקים, חומת האש היא שקובעת.
כתבו את התאמת הבעלים בשרשרת הנכונה
המדריך של Netfilter להתאמת בעלים מסביר כיצד חבילות שנוצרו מקומית מיוחסות למשתמש או לקבוצה שבעלי קובץ השקע. הייחוס הזה אינו מתרחב לתעבורה מועברת, והתאמת קבוצות נוספות דורשת אפשרות מפורשת. קראו את המדריך של ההרחבה שבה אתם באמת משתמשים ולא את הדוגמה הראשונה שתמצאו.
iptables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner transmission -j REJECT
ip6tables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
ip6tables -A OUTPUT -m owner --uid-owner transmission -j REJECT
הסדר חשוב כמו ההתאמה. קבלה רחבה מוקדם יותר בשרשרת מבטלת דחייה מדויקת מאוחר יותר, לכן עברו על כל השרשרת במקום להוסיף כלל ולקוות. כללו את שתי משפחות הכתובות אם המארח מריץ IPv6, כי מדיניות של v4 בלבד משאירה מסלול פתוח שאיש אינו עוקב אחריו. שמרו על הכללים מותקנים לאורך הפעלות מחדש של הלקוח ושל המנהרה.
החליטו מה קורה כשהמנהרה tun0 נעלמת
מדיניות הכשל היא לב התרגיל. אם המנהרה נעלמת ואותו וו מסיר את הכללים, הלקוח חופשי להשתמש בממשק הפיזי עד שמשהו אחר עוצר אותו. התכנון הבטוח שומר את הכללים ומאפשר להם לדחות, וזה מה שעושה את הגבול לבלתי תלוי בבריאות המנהרה. וו פירוק שמחק גם את הכללים הוא ההיפך הגמור ממדיניות כשל.
ip link show tun0
iptables -S OUTPUT
בדקו את זה בכוונה: עצרו את המנהרה, התחילו העברה שבטוח לנטוש אותה וראו אם משהו יוצא. אחר כך החזירו את המנהרה ואשרו שהמסלול המיועד עובד שוב.
כסו את המסלולים שהכלל אינו רואה
פיענוח שמות עשוי להתבצע על ידי תהליך פותר נפרד, ומרחב שמות או שער ייעודי יכולים לספק גבול נוסף אם מסלולי השיתוף והאתחול שלהם תוכננו לכך. החליטו איזה רכיב הוא הבעלים של ה-DNS והאם הוא הולך אחרי אותו כלל יציאה. אחר כך הביטו ב-RPC: אם משתמשים ב-rpc-whitelist, רשת הניהול המאושרת היא חלק מהחוזה, וטווח RFC1918 רחב אינו.
ss -tunp | grep -i transmission
מונה של הממשק יכול לתמוך בתצפית, אבל אינו יכול להוכיח איזה תהליך יצר את הבתים. בצעו העברה שמותר לכם לנטוש: תחילה במסלול שעובד, אחר כך בלי מנהרה בעת האתחול, ואחר כך דרך הפרעה, התחברות מחדש וממשק שזה עתה נוצר. בדקו גם ניסיון חדש וגם חיבור שכבר היה פתוח, כי ייתכן שהכלל לא הוחל על השקע הישן. רשמו את התאריך, החשבון והתוצאה יחד עם הבדיקה.
הדבקה של דוגמה שמנקה את כל השרשרת מחליפה חור אחד בכמה, לכן הוסיפו כללים במקום למחוק אותם. כשכל חמש הבדיקות עוברות, האחריות מפורשת: התעבורה של הלקוח יוצאת דרך המנהרה או בכלל לא, והכלל שאכף זאת שורד את הכשל של המנהרה עצמה.