הפנה יציאות דרך SSH

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

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

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

SSH הוא הכלי שמאפשר לנו לעשות חיבורים מאובטחים בין מכונות. השימוש הנפוץ ביותר בו הוא חיבור מרחוק למתורגמן.

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

host1$ telnet host2

תקשורת זו פתוחה לחלוטין ויכולה להיות יורט. כדי להגן עליו, ננתב יציאה שנבחרה באופן שרירותי (למשל 5000) במארח 1 ליציאה 23 (telnet) במארח 2.

באופן זה נקבל את כל הנתונים שנשלחו לנמל 5000 של מארח 1 לנסוע מוצפנים דרך המנהרה ש- ssh נפתח דרך יציאה 22 של מארח 2 ואז יופנו לנמל 23 של מארח 2, וכך נגיע ליעדה הסופי.

לשם כך עלינו לדעת את שם המשתמש והסיסמה של host2.

כדי לפתוח את המנהרה אנו כותבים:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

נו טוב:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

שתי האפשרויות שוות ערך. כדי ליצור את חיבור ה- Telnet, אנחנו כבר לא מתייחסים ל- host2 אלא ליציאה שנבחרה ב- host1:

host1$ telnet localhost 5000

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   ננו דיג'ו

    התיאוריה נראית מעניינת ביותר, אך זה יהיה עוד יותר אם אנו רואים מקרה מעשי.

    אבל האמת היא שלמרות שהייתי נמוכה, אהבתי את המאמר.

    1.    אותו דבר דיג'ו

      אולי מסתכל בוויקי אתה מקבל השראה https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      ואותו דבר, אבל החלק האוטומטי https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      למעשה, כל דבר שתוכלו לשלוח באמצעות ssh, בין אם זה סטרימינג, חיבורים למארח. וכו ' שמסיבה x אתה רוצה להצפין אותם.
      וכללי האבטחה

  2.   טסלה דיג'ו

    לפעמים אני משתמש ב- SSH ברמה בסיסית מאוד. יציאת ברירת המחדל היא 22, נכון?

    לכן, אם אני מבין נכון, המחשב שלי הוא מארח 1 וזה שאני רוצה לחבר הוא host2, מנהרה זו תיצור חיבור בין יציאה 5000 ליציאה 23, ואז תגיע ליציאה 22?

    מדוע הסיבות להחליף יציאות? אתה יכול ליצור מנהרה עם יציאה 22?

    מאמר מעניין מאוד. כמו ננו, אני רוצה עוד!

    1.    Getafix דיג'ו

      SSH אכן משתמש ביציאה 22 כברירת מחדל (אם כי ניתן לשנות אותה). יציאה זו היא זו שתשתמש בתקשורת בפועל בין שני המארחים. זה שאתה צריך לוודא שהוא פתוח ושום חומת אש לא מנתקת אותו. אך עבור המשתמש הוא שקוף לחלוטין. אתה יכול לשכוח ממנו. בדוגמה, ההפניה היא בין יציאות 5000 עד 23. שני אלה הם היחידים שעליכם לדאוג. המשתמש יראה שכל מה שהוא שולח לנמל 5000 של המארח שלו מופיע אצל 23 של מארח היעד.
      ברור שכל משתמש יכול להפנות מחדש את היציאות שהוא רואה לנכון.

      תודה על הערותיך. זה הפוסט הראשון שלי ודעותיך יעזרו לשפר את הפוסט הבא.

  3.   אליוטיים 3000 דיג'ו

    האם ניתן לעשות זאת גם עם VPS?

  4.   מטלטל דיג'ו

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

    1.    Getafix דיג'ו

      אתה גורם לעצמך מובן. במקרה זה אתה זקוק ל- PC1 כדי להפנות יציאה של PC2 ליציאה 22 של השרת:

      PC2 $ ssh -L 5000: שרת: 22 משתמשים PC1 @ PC1

      ושמירה על חיבור זה פתוח ממסוף אחר:

      PC2 $ ssh userServer @ localhost -p 5000

      ואתה כבר בפנים.

      1.    מטלטל דיג'ו

        סוף סוף פיתרון פונקציונלי !! תודה לך Getafix, נתת לי עולם של אפשרויות !!

        1.    Getafix דיג'ו

          אני שמח!

  5.   אלב דיג'ו

    מאמר מצוין. ברוך הבא ל DesdeLinux ????

    ומה לעשות אם יש לנו 22 חסומים? לצחוק בקול רם..

    1.    Getafix דיג'ו

      תודה אלב.
      אם יש לך יציאה 22 חסומה, mmmm, נצטרך לחפש אלטרנטיבה לפרוץ את חומת האש XD

    2.    אליוטיים 3000 דיג'ו

      והגרוע מכל (היפותטי): שהוא חסום על ידי ספק ה- VPS.

  6.   IGA דיג'ו

    בדיוק עשיתי בחינה לפני כמה שעות עם שאלות בנושא 😛

  7.   מריו דיג'ו

    אני לא הייתי אומר את זה:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    זה שווה ערך לשורת הפקודה השנייה ... זו עם ה- L.
    מכיוון ש- R מציין שהיציאה שנפתחת לחיבורים חדשים נמצאת בצד המרוחק, כלומר בצד של שרת ה- ssh שלך; בעוד ש- L פותח יציאה בצד המקומי, בצד הלקוח כדי לקבל חיבורים חדשים.

    תרגום השורה:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    זה יהיה משהו כזה: להיות ב- host1, התחבר לשרת ssh (יציאה 22) של host2 עם userhost2 המשתמש שלי והעביר את החיבורים שנוצרו ביציאה המרוחקת 5000 של host2 ליציאה 23 ב- host1 (localhost שלי)

    אם לא, תקנו אותי! 😉

    -

    מצד שני ... אם שרת חסם את כניסת החיבורים ליציאה 22, כלומר, איננו יכולים להתחבר מרחוק לשרת ssh; מה שאפשר לעשות זה; כי מהשרת (חבר מערכת אדמיניסטראית מאחורי חומת האש של מערכת host2 המרוחקת) מבוצעת שורת פקודה:

    host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1

    -f הולך לרקע
    -N אינו מבצע שום פקודה בשלט הרחוק
    nohup מונע את הפסקת ביצוע הפקודה בעת כניסה

    host1 $ ssh userhost2 @ localhost -p 6000

    באופן זה, ממארח ​​1 אנו מייצרים חיבור ל- localhost (אותו מארח 1) ביציאה 6000 אשר יעביר את החיבור ליציאה 22 של מארח המערכת המרוחק 2, בו ניכנס למארח המשתמש 2.

    זה יאפשר (לא ניסיתי את זה, אבל נשמע שזה עובד) להיכנס לשרת ssh שנחסם על ידי פיירוול עם מעט עזרה מבפנים! 😀

    את האחרון קראתי מהסבר שפורסם במגזין "The Geek Stuff"
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    אני מאוד אוהב את הפרסום שלך; קראתי אותם לעתים קרובות!
    ברכות.

    1.    Getafix דיג'ו

      אתה צודק. יש שגיאה במאמר. הפניות מחדש אינן שוות ערך. הפקודה host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 מבצע את ההפניה ההפוכה, כלומר היא מפנה את היציאה המרוחקת 5000 ל- 23 המקומית, ההפך ממה שהפקודה עם -L עושה.
      תודה על התיקון.