ssh พอร์ตส่งต่อเพื่อเข้าถึงเครื่องที่บ้านของฉันได้จากทุกที่


24

ฉันมาจากคำถามนี้: /superuser/359799/how-to-make-freebsd-box-accessible-from-internet

port forwardingฉันต้องการที่จะเข้าใจกระบวนการทั้งหมดนี้

ฉันอ่านหลายสิ่งหลายอย่าง แต่ไม่เข้าใจแนวคิดพื้นฐานของการส่งต่อพอร์ตของตัวเอง

สิ่งที่ฉันมี:

เซิร์ฟเวอร์ freebsd นั่งอยู่ที่บ้านของฉัน
เน็ตเราเตอร์

นี่คือสิ่งที่ฉันพยายามบรรลุ:

เพื่อให้สามารถเข้าถึงเซิร์ฟเวอร์ freebsd จากเครื่อง windows ผ่านอินเทอร์เน็ตเพื่อให้สามารถเปิดเว็บเบราว์เซอร์และเข้าถึงอินเทอร์เน็ต

ฉันยังต้องการเข้าถึงกล่อง freebsd นี้จากเครื่องอูบุนตูที่ฉันมี

มันจะดีถ้ามีคนช่วยฉันด้วย

นี่คือการตั้งค่าเราเตอร์ netgear ที่ฉันทำเพื่อการส่งต่อพอร์ต

เน็ตพอร์ตการส่งต่อ


โปรดโอนย้ายหากเป็นsuperuserคำถาม
Hari

ต้องการคำชี้แจงเพิ่มเติมอีกเล็กน้อย หากเครื่อง Windows อยู่ที่ใดที่หนึ่งบนอินเทอร์เน็ตและสามารถเข้าถึงอินเทอร์เน็ตได้แล้วทำไมคุณถึงต้องการเชื่อมต่อกับกล่อง FreeBSD ที่บ้านเพื่อเข้าถึงอินเทอร์เน็ต
OldTimer

@OldTimer: ฉันไม่แน่ใจว่าคำถาม / ข้อกังวลของคุณเกี่ยวข้องเพียงใด
Hari

ใช้ที่อยู่ ipv6, ไม่มี NAT อีกต่อไป, ไม่ยุ่งยากอีกต่อไป ;-)
Stéphane Gimenez

1
รอ! ฉันเพิ่งพูดไปว่า : / /
Stéphane Gimenez

คำตอบ:


47

ฉันจะเริ่มต้นด้วยข้อเท็จจริงดิบ:

  1. คุณมี: A- กล่อง FreeBSD ของคุณB- เราเตอร์ของคุณและC- เครื่องบางเครื่องที่มีการเข้าถึงอินเทอร์เน็ต นี่คือลักษณะ:

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
    \_________ ________/
              v
               `- this is your LAN
    

    สังเกตว่าปกติเราเตอร์ของคุณทำงานอย่างไร: อนุญาตการเชื่อมต่อจากเครื่องบน LAN ของคุณไปยังอินเทอร์เน็ต (พูดง่าย ๆ ) ดังนั้นหากA(หรือเครื่องอื่น ๆ บน LAN) ต้องการเข้าถึงอินเทอร์เน็ตมันจะได้รับอนุญาต (อีกครั้งเพียงแค่พูดถึงความเข้าใจพื้นฐานและการกำหนดค่า):

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
          `-->----'  `--->--->---^  
    

    และค่าเริ่มต้นต่อไปนี้ไม่ได้รับอนุญาต:

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
          `--<----'  `---<--- - - - - --<---<-----'
    

    (นั่นคือเราเตอร์ช่วยปกป้องเครื่องในระบบ LAN ของคุณจากการถูกเข้าถึงได้จากอินเทอร์เน็ต.) ขอให้สังเกตว่าเราเตอร์เป็นเพียงส่วนหนึ่งของระบบ LAN ของคุณที่เห็นได้จากอินเทอร์เน็ต1)

  2. การส่งต่อพอร์ตคือสิ่งที่ช่วยให้สคีมาที่สามเกิดขึ้น ซึ่งประกอบด้วยการบอกเราเตอร์ว่าการเชื่อมต่อจากC2)ควรไปที่เครื่องใดบน LAN นี้จะกระทำบนพื้นฐานของหมายเลขพอร์ต - นั่นคือเหตุผลว่าทำไมจึงเรียกว่าการส่งต่อพอร์ต คุณกำหนดค่าดังกล่าวโดยสั่งให้เราเตอร์ทราบว่าการเชื่อมต่อทั้งหมดที่เข้ามาในพอร์ตที่กำหนดจากอินเทอร์เน็ตควรไปที่เครื่องที่แน่นอนบน LAN นี่คือตัวอย่างสำหรับพอร์ต 22 ที่ส่งต่อไปยังเครื่องA:

    .------.     .-------.                        .-----.
    |  A   | ==  |   B   |  - - ( Internet ) - -  |  C  |
    |      |     |       |                        '-----'
    '-|22|-'     ',--|22|'                          |
        `--<-22---'    `---<---- - - - - - --<-22---'
    
  3. การเชื่อมต่อดังกล่าวผ่านอินเทอร์เน็ตเกิดขึ้นตามที่อยู่ IP ดังนั้นการแสดงตัวอย่างที่แม่นยำกว่านี้อีกเล็กน้อยจะเป็น:

    .------.      .-------.                                .-----.
    |  A   |  ==  |   B   | - - - - - ( Internet ) - - - - |  C  |
    |      |      |       |                                '-----'
    '-|22|-'      ',--|22|'                                   |
        `--<-A:22--'    `--<-YourIP:22 - - - - --<-YourIP:22--'
    

    หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตที่มีIP แบบคงที่คุณจะต้องเรียนรู้ว่า IP ใดที่ ISP ของเราเตอร์ของคุณมอบหมายให้เราเตอร์ มิฉะนั้นCจะไม่ทราบว่า IP นั้นมีการเชื่อมต่อเพื่อไปยังเราเตอร์ของคุณ (และเพิ่มเติมไปยังA) เพื่อแก้ปัญหานี้ในวิธีที่ง่ายคุณสามารถใช้บริการที่เรียกว่าDNS แบบไดนามิก นี่จะทำให้เราเตอร์ของคุณส่งข้อมูลไปยังเซิร์ฟเวอร์ DNSพิเศษที่จะติดตาม IP ของคุณเป็นระยะและให้ชื่อโดเมนแก่คุณ มีผู้ให้บริการ DNS แบบไดนามิกค่อนข้างฟรี เราเตอร์หลายตัวมาพร้อมกับตัวเลือกการกำหนดค่าเพื่อให้ติดต่อกับพวกเขา

1)นี่คือความเรียบง่ายอีกครั้ง - อุปกรณ์จริงที่เห็นได้กับอินเทอร์เน็ตคือโมเด็ม - ซึ่งมักจะสามารถรวมเข้ากับเราเตอร์ แต่อาจเป็นกล่องแยกต่างหาก
2)หรือเครื่องอื่น ๆ ที่มีการเชื่อมต่ออินเทอร์เน็ต


ตอนนี้สำหรับสิ่งที่คุณต้องการ:

  1. เพียงแค่อนุญาตให้ ssh เข้าถึงเครื่องของคุณจากอินเทอร์เน็ตเป็นความคิดที่ไม่ดี มีหลายพันบอทตั้งค่าโดยแครกเกอร์ที่ค้นหาอินเทอร์เน็ตสำหรับเครื่องที่มีพอร์ต SSH เปิด โดยทั่วไปแล้วพวกเขาจะ "เคาะ" ที่พอร์ต SSH เริ่มต้นของ IP ให้มากที่สุดเท่าที่จะทำได้และเมื่อพวกเขาพบภูต SSH ที่ทำงานอยู่ที่ไหนสักแห่งพยายามที่จะได้รับการเข้าถึงเครื่องจักรที่โหดร้าย นี่ไม่เพียง แต่มีความเสี่ยงที่จะเกิดการหยุดชะงัก แต่ยังทำให้เครือข่ายช้าลงในขณะที่เครื่องกำลังถูกทำลาย

  2. หากคุณต้องการการเข้าถึงดังกล่าวคุณควรอย่างน้อยที่สุด

    • รับรองว่าคุณมีรหัสผ่านที่คาดเดายากสำหรับบัญชีผู้ใช้ทั้งหมด

    • ไม่อนุญาตการเข้าถึงรูทผ่าน SSH (คุณสามารถเข้าสู่ระบบในฐานะผู้ใช้ทั่วไปและsuหรือsudo)

    • เปลี่ยนพอร์ตเริ่มต้นที่เซิร์ฟเวอร์ SSH ของคุณจะทำงาน

    • แนะนำกลไกการไม่อนุญาตการเข้าสู่ระบบ SSH จำนวนมาก (ด้วยการเพิ่มเวลารอคอยสำหรับความพยายามครั้งต่อไป - ฉันจำไม่ได้ว่าชื่อนี้ถูกเรียกอย่างไร - ฉันเปิดใช้งาน FreeBSD มาหลายครั้งแล้วและฉันก็จำได้ว่ามันง่ายมาก - ลอง ค้นหาฟอรัม FreeBSD และอื่น ๆ เกี่ยวกับการรักษาความปลอดภัย SSH และคุณจะพบว่ามัน)

    • หากเป็นไปได้ให้ลองเรียกใช้ ssh daemon เฉพาะเมื่อคุณรู้ว่าคุณจะสามารถเข้าถึงเครื่องได้ในอนาคตอันใกล้ให้ปิดเครื่องหลังจากนั้น

  3. ชินกับการดูบันทึกระบบของคุณ หากคุณเริ่มสังเกตเห็นอะไรที่น่าสงสัยแนะนำกลไกการรักษาความปลอดภัยเพิ่มเติมเช่นตาราง IPหรือพอร์ตเคาะ


10
ได้รับการโหวตให้เป็น ascii goodness ...
jasonwryan

ขอบคุณสำหรับคำอธิบายโดยละเอียด ฉันจะแยกย่อยนี้และแสดงความคิดเห็นกลับมา
Hari

ฉันเข้าใจประเด็นของคุณอย่างสมบูรณ์ คำถามของฉันคือฉันได้กำหนดค่า (ถูกหรือผิด - ฉันไม่แน่ใจ) เราเตอร์ netgear ของฉัน ฉันต้องทำอะไรต่อไป
Hari

2
ดูที่การแก้ไขของฉัน (ด้านล่าง) เกี่ยวกับการเข้าถึง SSH ภายนอก
rozcietrzewiacz

ขอบคุณสำหรับข้อมูล. ฉันได้สิ่งที่คุณพยายามสื่อ คำถามของฉันคือสิ่งที่ฉันต้องทำเพื่อให้ทุกคน (ผู้ที่มีการเข้าถึง) บนอินเทอร์เน็ตสามารถตัวอย่างเช่นเรียกใช้เบราว์เซอร์ในกล่อง freebsd ฉันจะตั้งค่าอย่างไร
Hari

3

มีสองวิธีในการทำสิ่งนี้ให้สำเร็จ วิธีที่ง่ายที่สุดน่าจะตั้งค่าสิ่งที่เรียกว่า DMZ อย่างไรก็ตามวิธีที่ปลอดภัยกว่านั้นอยู่ที่เราเตอร์ของคุณเพื่อตั้งค่าเส้นทางแบบคงที่ในพอร์ต 22 ไปยัง IP ของเซิร์ฟเวอร์ของคุณ

แหล่งข้อมูล:


ขอบคุณ ฉันได้ทำส่วนนี้กับเราเตอร์ netgear: ฉันได้เซ็ตอัพพอร์ตสำหรับการส่งต่อด้วยวิธีนี้: บริการ: พอร์ต HTTP: 80 เซิร์ฟเวอร์ ip: 192.168.1.16 - ที่นี่ ip นี้เป็น ip ของกล่อง freebsd ของฉัน ฉันควรทำอย่างไรต่อไป
Hari

ตั้งค่าการทดสอบจากนอกสถานที่ของคุณฉันเพียงแค่ส่งโทรศัพท์ของฉันไปที่แล็ปท็อปของฉันและลองใส่ที่อยู่ IP ของฉัน ฉันสมมติว่าคุณรู้ที่อยู่ IP ภายนอกของคุณ หรือมิฉะนั้นคุณสามารถลองเยี่ยมชมเว็บเซิร์ฟเวอร์ของคุณ
Mark D

SSH ไม่ทำงานกับ IP ภายนอกของฉัน ฉันต้องทำอะไรกับเซิร์ฟเวอร์ freebsd ของฉันหรือไม่
Hari

คุณสามารถ SSH จากเครือข่ายภายในของคุณได้หรือไม่?
Mark D

ใช่. ฉันสามารถทำได้
hari

1

เราเตอร์ของคุณสามารถทำได้ ในเราเตอร์บางตัวคุณสมบัตินี้เรียกว่าVirtual Server

ดูในส่วนด้านล่างของภาพมีสองตัวอย่างของการส่งต่อพอร์ต หนึ่งคือของเว็บและอีกหนึ่งเป็นของ SSH ในกรณีแรกคำขอใด ๆ บน IP WAN ของคุณเช่น IP ของเราเตอร์ของคุณที่มีพอร์ต80จะถูกส่งต่อไปยัง LAN IP ( 192.168.2.4ในกรณีนี้)
ด้วยคุณสมบัตินี้คุณสามารถรับบริการที่ทำงานบนพีซี / เซิร์ฟเวอร์ที่ทำงานใน LAN จากที่ใดก็ได้ในโลก เช่นบริการเหล่านั้นไม่ได้ จำกัด อยู่ที่ LAN
การส่งต่อพอร์ตหรือเซิร์ฟเวอร์เสมือนบนเราเตอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.