เป็นไปได้หรือไม่ที่ SSH จะเข้าถึงเซิร์ฟเวอร์ด้วยซับเน็ตที่กำหนดค่าผิดพลาด?


18

เรามีเซิร์ฟเวอร์ที่วิศวกรคนหนึ่งของเรากำหนดค่าเครือข่ายย่อยผิดและตอนนี้เราถูกล็อคออกจากเซิร์ฟเวอร์นี้และการเข้าถึงเดียวที่ฉันรู้ว่าจะใช้งานได้คือคอนโซลซีเรียลจาก IDC (หมายถึงการขอให้วิศวกร IDC ช่วยเราด้วย) .

สิ่งที่กำหนดไว้ไม่ถูกต้อง:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

หมดความอยากรู้ - มีวิธีหลีกเลี่ยงการโทรไปที่ IDC และเชื่อมต่อกับโฮสต์นี้ผ่าน SSH หรือไม่ (จากนั้นเราสามารถแก้ไขการกำหนดค่าได้)

คำตอบ:


25

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

วิธีง่ายๆในการเข้าถึงโฮสต์โดยใช้ IPv6

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server

ค่าตัวอย่างต่อไปนี้อยู่ในความต้องการคำสั่งดังกล่าวจะถูกแทนที่ด้วยค่าที่ถูกต้องสำหรับกรณีการใช้งานของคุณ: fe80::42:ff:fe:42, eth0, user, และintermediate-hosttarget-server

คำอธิบายโดยละเอียดเกี่ยวกับวิธีการทำงาน

ProxyCommandเป็นคุณสมบัติ ssh ที่จะใช้เมื่อคุณไม่สามารถเปิดการเชื่อมต่อ TCP โดยตรงไปยังโฮสต์เป้าหมาย อาร์กิวเมนต์ to ProxyCommandเป็นคำสั่งที่ stdin / stdout ใช้แทนการเชื่อมต่อ TCP

-Wใช้เพื่อเปิดการส่งต่อพอร์ตเดียวและเชื่อมต่อกับ stdin / stdout ProxyCommandนี้เหมาะอย่างด้วยกัน

fe80::42:ff:fe:42%%eth0เป็นที่อยู่ link-local ของโฮสต์เป้าหมาย โปรดสังเกตว่าเนื่องจากการProxyCommandใช้%เป็นอักขระ escape คำสั่ง ssh ที่พิมพ์ต้องใช้%%ในตำแหน่งนั้น ssh user@intermediate-host ping6 -nc2 ff02::1%eth0คุณสามารถหาที่อยู่ลิงค์ท้องถิ่นทั้งหมดในส่วนโดยการเรียกใช้

การใช้ที่อยู่ IPv6 link-local สำหรับจุดประสงค์นี้มักจะเป็นวิธีที่ง่ายที่สุดเนื่องจากมีการเปิดใช้งานตามค่าเริ่มต้นในระบบที่ทันสมัยทั้งหมดและที่อยู่ link-local จะยังคงใช้งานได้แม้ว่าทั้ง IPv4 และ IPv6 จะถูกกำหนดค่าอย่างไม่ถูกต้อง

ย้อนกลับไปสู่ ​​IPv4

หาก IPv6 ถูกปิดใช้งานอย่างสมบูรณ์ในโฮสต์ที่กำหนดค่าผิดพลาด (ไม่แนะนำอย่างยิ่ง) คุณอาจต้องใช้ IPv4 เนื่องจาก IPv4 ไม่มีที่อยู่ link-local วิธีที่ IPv6 จะเข้าถึงโฮสต์ที่กำหนดค่าโดยใช้ IPv4 มีความซับซ้อนมากขึ้นและต้องการการเข้าถึงรูทบนโฮสต์ระดับกลาง

หากโฮสต์ที่กำหนดค่าผิดพลาดยังคงสามารถใช้เกตเวย์เริ่มต้นได้คุณจะสามารถเข้าถึงได้จากภายนอก อาจเป็นไปได้ว่า netmask ที่กำหนดค่าผิดพลาดอาจทำให้เกตเวย์เริ่มต้นผิดพลาดเนื่องจากสแต็กปฏิเสธที่จะใช้เกตเวย์นอกคำนำหน้าซึ่งครอบคลุมโดย netmask หากเป็นกรณีนี้โฮสต์ที่กำหนดค่าผิดจะสามารถสื่อสารกับ 192.168.1.8 ได้เท่านั้นเนื่องจากเป็นที่อยู่ IP อื่น ๆ ในเครือข่ายย่อยที่เข้าถึงโฮสต์ที่กำหนดค่าไม่ได้นี้ในปัจจุบัน

หากคุณมีการเข้าสู่ระบบใน 192.168.1.8 คุณอาจจะสามารถ ssh จากที่นั่นไปที่ 192.168.1.9 หาก 192.168.1.8 ยังไม่ได้ถูกมอบหมายคุณสามารถมอบหมายให้โฮสต์ใด ๆ ในกลุ่มที่คุณมีสิทธิ์เข้าถึงรูทชั่วคราว


และfe80::42:ff:fe:42ที่อยู่ของ ... คืออะไร? เซิร์ฟเวอร์ของฉันกำหนดค่าผิดฉันเดาได้ไหม
Alexey Kamenskiy

@AlexKey ใช่มันต้องมีการแทนที่ด้วยที่อยู่ link-local IPv6 ของเซิร์ฟเวอร์ที่กำหนดค่าผิด
kasperd

1
ตัวอย่างใด ๆ ที่มีการเข้าถึงผ่าน IPv4 (ในกรณีที่ปิดใช้งาน IPv6)
Alexey Kamenskiy

@AlexKey ในกรณีที่ปิดใช้งาน IPv6 ฉันคิดว่าคุณต้องผ่าน 192.168.1.8 เพราะดูเหมือนว่าจะเป็นเพียง IP อื่น ๆ ภายใต้คำนำหน้าที่กำหนดค่าไว้
kasperd

1
@ Lenniey เห็นได้ชัดว่ามีเหตุผลเช่นคำถามนี้ (อย่างน้อย)
Alexey Kamenskiy

9

kasperdโพสต์คำตอบที่ดีมีรายละเอียดเพียงพอสำหรับฉันที่จะเรียนรู้วิธีการกู้คืนจากสถานการณ์ในคำถาม คำตอบนี้เป็นขั้นตอนที่แน่นอนของวิธีที่ฉันทำ

  1. SSH ไปยังเซิร์ฟเวอร์บนเครือข่ายทางกายภาพเดียวกัน
  2. การใช้arp -aหรือip neighbor listเป็นrootหาที่อยู่ MAC ของเซิร์ฟเวอร์ผิดพลาด
  3. การใช้MAC กับตัวแปลงโลคัลลิงค์ค้นหาลิงค์โลคัลสำหรับเซิร์ฟเวอร์ที่กำหนดค่าผิด
  4. ตอนนี้สามารถ SSH ไปยังเซิร์ฟเวอร์ในฐานะผู้ใช้ใด ๆ ผ่านทางssh user@link-local%devที่:
    • ผู้ใช้ - ชื่อผู้ใช้ที่เราอนุญาตให้ SSH
    • ลิงค์โลคัล - ที่อยู่ IPv6 ที่กำหนดเองได้รับการกู้คืนในขั้นตอนที่ 3
    • dev เป็นส่วนต่อประสานทางกายภาพเซิร์ฟเวอร์นี้สามารถเข้าถึงได้จาก (เช่น eth0)

2

คุณต้องโหลดที่อยู่ IP ภายในเครือข่ายย่อยที่กำหนดค่าไว้ของเป้าหมายไม่ใช่เฉพาะในช่วงที่คุณต้องการ

หากคุณส่งแพ็คเก็ตไปยัง 10.0.0.2 ด้วย subnet 255.255.255.248 จากตัวอย่างเช่น 10.0.0.220, 10.0.0.2 จะดูที่ subnet mask เพื่อหาวิธีการตอบกลับ เนื่องจาก. 220 เป็น WAAY จากซับเน็ต 255.255.255.248 ดังนั้น .2 จึงต้องส่งการตอบกลับไปยังเกตเวย์เริ่มต้นแทน

ดังนั้นหากคุณสามารถโหลดที่อยู่ IP ภายในเครือข่ายย่อยเดียวกันกับ. 2 เช่น 10.0.0.3 แล้วมันจะทำงาน

ในกรณีเฉพาะของคุณสำหรับ 10.0.0.9 ซับเน็ต 255.255.255.254 มีที่อยู่ IP เพิ่มเติม 1 แห่งเท่านั้นคือ 10.0.0.8 ดังนั้นหากคุณสามารถโหลดที่อยู่ IP นั้นได้คุณควรจะสามารถ SSH ได้

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