מדריך ל-Hidden Service עבור SSH

הקדמה

המדריך הזה קשור במידה רבה לפוסט הזה איך להתחבר לשרת SSH מעל Tor, אך פה אתמקד באיך לייצר Hidden Service (יש מעבר לשם Onion Service, אך סלחו לי כי בשלב זה עדיין אקרא לשירות HS או Hidden Services) עבור חיבור SSH. במקרה אצלי, יש לי “קופסה” שנמצאת ברשת NAT ואני רוצה לגשת אליה מרחוק באופן יזום (יש עוד דרכים לפתור את הבעיה הזו, החל מ-Port-forwarding, שירות VPN, ועוד…).

שימוש ב-HS כנראה יהיה איטי יותר מפתרונות אחרים, אבל הוא פתרון חימני, דיי בטוח ואנונימי (שימוש ב-Client Authorization), ובנוסף יציב, קל להתקנה והגדרה.

התקנה והגדרה של Tor

אתם תצרכו להתקין Tor גם בשרת וגם בקלינט, ההגדרות בכל צד יהיו שונות.

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

sudo apt update
sudo apt install tor

אם Tor אינו חלק מההפצה שלכם, ראו את החלק של “קריאה נוספת” למדריך איך להתקין Tor.

קובץ ההגדרות בדרך כלל נמצא בנתיב הזה /etc/tor/torrc. בצד של הקלינט יש לוודא כי השרת Socks מופעל ומקבל חיבורים מ-Localhost:

SocksPort 9050
SocksPolicy accept 127.0.0.0/8
SocksPolicy reject *

בצד של השרת יש להוסיף מספר שורות שמגדירות את ה-Hidden Service:

HiddenServiceDir /var/lib/tor/ssh
HiddenServicePort 32122 127.0.0.1:22
שימו לב

הנתיב קיים, יש לו את ההרשאות הנכונות? אם לא:

sudo mkdir /var/lib/tor/ssh
sudo chown debian-tor: /var/lib/tor/ssh
sudo chmod 0700 /var/lib/tor/ssh

לאחר מכן נצטרך לאתחל את השירות בעזרת הפקודה sudo systemctl restart tor. עם הריצה הראשונה של Tor, יווצרו המפתחות ותוכלו לאסוף את הכתובת מתוך הקובץ /var/lib/tor/ssh/hostname. יכול להיות שיקח כמה דקות עד שתוכלו לגשת לכתובת הזו בפועל, כי ההפצה של ה-HSDir ויצירה של rendezvous אינו מיידי.

התקנה והגדרה של SSH

בצד של הקלינט, צריך לוודא ש-Tor רץ, ושהגדרתם ב-.ssh/config איך החיבור לכתובות .onion מתבצעות (נדרשות לעבור דרך פרוקסי).

Host *.onion
  CheckHostIP no
  Compression no
  Protocol 2
  # Package required: connect-proxy
  ProxyCommand connect-proxy -4 -S 127.0.0.1:9050 %h %p
אין לכם connect-proxy?

אם החבילה connect-proxy לא זמינה לכם, תוכלו להשתמש ב-ncat במקום, ב-config תחליפו ל:

proxyCommand ncat --proxy 127.0.0.1:9050 --proxy-type socks5 %h %p

בצד של השרת אני מצפה שיהיה לכם שירות SSH מופעל שמאזין על פורט כלשהו ומאשר חיבור מ-Localhost, זה הפורט שלמעשה הגדרתם ב-torrc (בצבע אדום), ואילו בצבע כחול, זה הפורט שאליו תתחברו.

בדיקה

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

ssh -o 'Port=32122' -o 'User=debian' zm6zeblvl3nhddpg65yzhlvsa4t2wpfuyuhomhebnufhxvdmxgui4qid.onion
# יצרתי כתובת חדשה
תמונת מסך

קריאה נוספת:

לייק 1