การเข้าถึงจากระยะไกลไปยังเครื่อง Linux หลังไฟร์วอลล์


11

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

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


คุณไม่ได้กำหนดค่าเราเตอร์ Linux มีไฟร์วอลล์ iptables ซึ่งเพียงพอสำหรับความปลอดภัยของไฟร์วอลล์ และการสร้างช่องสัญญาณ ssh ไปยังเซิร์ฟเวอร์อยู่เสมอทำให้มีความเสี่ยงที่จะถูกโจมตีโดยการโยนโฮสต์ที่เชื่อมต่ออยู่
Kazimieras Aliulis

1
ฉันจะต้องเปิดพอร์ตบนเราเตอร์ แต่จะผ่านทุกอย่างที่ฉันต้องการไปยังกล่อง linux อุโมงค์ ssh ไม่ได้เปิดอยู่เสมอ มันจะเริ่มต้นโดยผู้ใช้ aat ที่สิ้นสุดเมื่อฉันต้องการเข้าถึงเครื่อง
baudtack

คำตอบ:


5

มีความเกี่ยวข้องกับพอร์ตที่เปิดน้อยกว่าและอื่น ๆ ที่ไม่ต้องการเดินผู้ใช้แม้ว่ากระบวนการเปิดพอร์ต ฉันไม่สามารถเข้าถึงเราเตอร์นี้ได้เลย

ถ้าเปลี่ยนเราเตอร์จะสมบูรณ์ออกจากคำถามที่คุณอาจต้องมองไปที่การแก้ปัญหา P2P หรือ VPN เช่นHamachi หากคุณตั้งค่าระบบให้สร้างการเชื่อมต่อ VPN โดยอัตโนมัติเมื่อเริ่มต้นระบบคุณควรจะสามารถเชื่อมต่อได้ทุกเมื่อที่คุณต้องการ Hamachi ทำการเจรจาต่อรองไฟร์วอลล์ทั้งหมดให้คุณ ข้อเสียเปรียบอย่างหนึ่งคือคุณต้องพึ่งพาเซิร์ฟเวอร์ของ Hamachi ให้ทำงานและทำงานได้เมื่อคุณต้องการเชื่อมต่อ

หากคุณมีเซิร์ฟเวอร์ที่ทำงานอยู่เสมอคุณสามารถตั้งค่าautosshเพื่อให้ระบบรีโมตเปิดช่องสัญญาณและเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ ข้อเสียเปรียบข้อหนึ่งคือระบบรีโมตถูกโจมตีโดยผู้โจมตีจะได้รับกุญแจที่ใช้ในการสร้างเซสชัน ssh มันจะสำคัญมากที่จะต้องรักษาระบบของคุณที่ยอมรับการเชื่อมต่อ ssh ไว้อย่างแท้จริง


ด้านล่างเป็นคำตอบเดิมของฉันฉันคิดว่าการปรับปรุงเราเตอร์เป็นตัวเลือก

ทางออกหนึ่งที่คุณอาจต้องการที่จะตรวจสอบถ้าคุณไฟร์วอลล์สนับสนุนเป็นพอร์ตเคาะ ด้วยไฟร์วอลล์บางตัวคุณควรส่งแพ็กเก็ตชุดพิเศษที่ไฟร์วอลล์แจ้งให้ทราบแล้วเปิดรูผ่านไฟร์วอลล์ชั่วคราว

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


ฟังดูเหมือนเป็นความคิดที่ยอดเยี่ยม! น่าเสียดายที่ไฟร์วอลล์ในคำถามเป็นเพียง Linksys ระดับผู้บริโภคอย่างง่ายหรือเทียบเท่า
baudtack

1
หากคุณสามารถติดตั้ง DD-WRT คุณสามารถใช้ knockd ( dd-wrt.com/wiki/index.php/Knockd )
Zoredache

@Zoredache จริง แต่นี่อยู่ในสถานที่ห่างไกล ฉันไม่สามารถเข้าถึงเราเตอร์นี้และฉันรู้สึกตัวสั่นเมื่อนึกถึงการพยายามที่จะนำผู้ใช้ผ่านการติดตั้ง DD-WRT
baudtack

ฉันยอมรับว่านี่อาจเป็นวิธีที่ถูกต้องในการตั้งค่านี้โดยที่ฉันสามารถเข้าถึงเราเตอร์เพื่อติดตั้ง dd-wrt ได้
baudtack

Hamachi ตั้งแต่ LogMeIn ซื้อกิจการได้แสดงให้เห็นถึงการพิจารณาอย่างถี่ถ้วนต่อผู้ใช้งาน Linux ฉันพบว่าผลิตภัณฑ์ไม่น่าเชื่อถือเมื่อเครื่อง Linux เป็นส่วนหนึ่งของเครือข่าย hamachi ของฉัน
bmb

6

ฉันจะไม่กังวลเกี่ยวกับการออกจากพอร์ต 22 ที่สามารถเข้าถึงอินเทอร์เน็ตได้ แต่ฉันจะทำตามขั้นตอนบางอย่างเพื่อรักษาความปลอดภัย

ประการแรกปิดใช้งานการรับรองความถูกต้องแบบโต้ตอบคีย์บอร์ดและย้ายไปที่ปุ่ม ssh

ประการที่สองติดตั้งบางอย่างเช่นfail2banบนเซิร์ฟเวอร์ระยะไกลของคุณไปยังที่อยู่ IP Blackball ที่ตรวจสอบเครื่องของคุณซ้ำแล้วซ้ำอีก เนื่องจากคุณมีคีย์การตั้งค่า ssh จึงไม่ควรมีการตรวจสอบสิทธิ์ล้มเหลวสำหรับผู้ใช้ที่ได้รับอนุญาต

อีกทางเลือกหนึ่งถ้าคุณสามารถใช้คำแนะนำ WerkkreWs และกำหนดค่าไฟร์วอลล์ที่ด้านหน้าของเครื่องเพื่อยุติการเชื่อมต่อ vpn จากนั้นอนุญาตให้ ssh daemon บนเซิร์ฟเวอร์ระยะไกลยอมรับการเชื่อมต่อผ่าน vpn นั้นเท่านั้น

อีกทางเลือกหนึ่งหากไฟร์วอลล์ของคุณไม่สามารถยุติการเชื่อมต่อ vpn ได้คุณสามารถส่งต่อแพ็คเก็ต GRE หรือ IPSEC ไปยังเครื่อง linux ของคุณและยุติการเชื่อมต่อได้


มีความเกี่ยวข้องกับพอร์ตที่เปิดน้อยกว่าและอื่น ๆ ที่ไม่ต้องการเดินผู้ใช้แม้ว่ากระบวนการเปิดพอร์ต ฉันไม่สามารถเข้าถึงเราเตอร์นี้ได้เลย
baudtack

ฉันเข้าใจและเห็นอกเห็นใจด้วยความเจ็บปวดของคุณ
Dave Cheney

2
ขั้นตอนแรกในการแก้ไขปัญหานี้คือการกำหนดค่า sshd ให้ทำงานบนพอร์ตที่ไม่ได้มาตรฐาน มีบอทจำนวนมากเคาะที่พอร์ต 22 ที่นั่น เลือกพอร์ตที่ไม่ปรากฏใน / etc / services และ "nmap HOST" หาไม่พบ
hayalci

4

ดูเหมือนว่าคุณกำลังมองหาknockd

คุณสามารถติดตั้งสิ่งนั้นบนเซิร์ฟเวอร์ linux เองด้วยiptablesเพื่อให้มันเป็นเหมือนไฟร์วอลล์ระดับที่สอง แม้ว่าพอร์ต 22 จะเปิดที่ไฟร์วอลล์ส่วนหน้าก็จะไม่เปิดบนเซิร์ฟเวอร์ดังนั้นพอร์ตสแกนจะไม่เห็นพอร์ตใด ๆ ที่เปิดอยู่ จากนั้นเมื่อคุณส่ง "การเคาะลับ" ทันใดนั้นคุณก็มีเส้นทางเปิดสู่พอร์ต 22

มันสมเหตุสมผลไหม


นอกจากว่าฉันเข้าใจผิดฉันจะต้องส่งต่อพอร์ตการเคาะทั้งหมดด้วยใช่ไหม จะไม่ชัดเจนเมื่อมีคนสแกนเราเตอร์หรือไม่ พวกเขาไม่ทราบคำสั่ง แต่จะลดการผสมที่เป็นไปได้ถึง 6 ถ้าฉันจำวิธีการเรียงสับเปลี่ยนได้อย่างถูกต้อง หรือฉันกำลังคิดผิดเกี่ยวกับเรื่องนี้?
baudtack

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

ถูกต้อง - พอร์ตที่เปิดในไฟร์วอลล์ตัวแรกจะไม่เปิดในวันที่ 2 ดังนั้นเครื่องสแกนจะปิดลง ไม่มีวิธีแยกแยะการเคาะพอร์ตจากการไม่ทำการเคาะ
Brent

3

เพื่อสรุปคำตอบทั้งหมด:

ใช้ ssh แต่ทำให้คลุมเครือและปลอดภัยยิ่งขึ้น

เพื่อความปลอดภัย:

  • ตรวจสอบให้แน่ใจว่าไม่อนุญาตให้เข้าสู่ระบบรูท (PermitRootLogin no)
  • จำกัด ผู้ใช้ซึ่งสามารถเข้าสู่ระบบได้โดยกำหนดค่าตัวเลือก AllowUsers หรือ AllowGroups
  • ตรวจสอบให้แน่ใจว่าใช้โปรโตคอล ssh เวอร์ชัน 2 เท่านั้น (โปรโตคอล 2)
  • ขอแนะนำให้ใช้เฉพาะคีย์การรับรองความถูกต้อง แต่รหัสผ่านจะสะดวกกว่าเมื่อคุณจำเป็นต้องเชื่อมต่อกับเซิร์ฟเวอร์ตั้งแต่วันหยุดซึ่งคุณไม่สามารถเข้าถึงคีย์การตรวจสอบสิทธิ์ได้

สำหรับความสับสน:

  • เปลี่ยน ssh port เป็น high high random port ที่คุณจำได้เช่น 20486 นี่จะกำจัด bruteforcers อัตโนมัติส่วนใหญ่ แต่มันจะไม่ซ่อนมันจากการสแกนพอร์ตทั้งหมดบนเซิร์ฟเวอร์
  • ซ่อนความสามารถในการเชื่อมต่อกับพอร์ต วิธีหนึ่งคือการเคาะพอร์ตที่กล่าวถึงในคำตอบอื่น ๆ แต่คุณต้องใช้ซอฟต์แวร์พิเศษซึ่งไม่สามารถเข้าถึงได้ทุกที่ อีกตัวเลือกง่าย ๆ คือการใช้ไฟร์วอลล์ iptables กับโมดูลล่าสุดเพื่อสร้างกฎซึ่งจะอนุญาตให้เชื่อมต่อในการลองครั้งที่สองหรือครั้งที่สามเท่านั้น เพื่อให้คุณรู้ว่าคุณต้องลองเชื่อมต่อหลายครั้งสำเร็จ แต่การสแกนพอร์ตทั้งหมดจะไม่เปิดเผยพอร์ต ssh กฎจะคล้ายกับกฎเหล่านั้น:


iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP


+1 สรุปที่ดีและแนวคิดที่น่าสนใจเกี่ยวกับเคล็ดลับหลายครั้ง
David Z

2

งานที่กำหนดเวลาไว้สคริปต์สำหรับอุโมงค์ย้อนกลับของคุณหรือเปิดพอร์ตไฟร์วอลล์

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


1
ตกลง ถ้าคุณไม่มีทางที่จะใช้ VPN วิธีเดียวที่แท้จริงคือการเปิดพอร์ต หากคุณกังวลเกี่ยวกับเรื่องนี้คุณสามารถใช้พอร์ตที่ไม่ได้มาตรฐานได้เสมอ
WerkkreW

2

ดูการเคาะพอร์ตเพื่อเปิดอุโมงค์ SSH ของคุณ

นอกจากนี้ให้เรียกใช้ denyhosts เพื่อล็อกคนอื่นหลังจากมีคำขอที่ไม่ดีมากเกินไป

แพคเกจทั้งสองมีอยู่ในที่เก็บมาตรฐาน Ubuntu, Fedora และ RHEL


1

ไปข้างหน้าและเปิดพอร์ตเพียงแค่ทำให้มันอยู่นอกช่วงปกติ ฉันจะทำให้มันเป็นพอร์ตสุ่มมากกว่า 1024 วิธีแฮ็กเกอร์จะไม่ได้มองหามัน


0

ไม่มีเหตุผลที่จะไม่เจาะช่องโหว่ในไฟร์วอลล์หากคุณต้องการเข้าถึงเครื่องจากระยะไกล แต่ไม่บ่อยนัก

อย่างไรก็ตามหากคุณยังคงไม่เปิด (หรือไม่สามารถ) พอร์ตสคริปต์เชลล์แบบง่ายสามารถตรวจสอบทรัพยากรอินเทอร์เน็ตที่มีอยู่ซึ่งคุณสามารถควบคุมและรับฟังคำสั่งเพื่อเปิดช่องสัญญาณย้อนกลับได้ บัญชีอีเมล, ช่อง IRC และหน้าเว็บเป็นสิ่งสำคัญสำหรับอุปกรณ์

แน่นอนว่านี่เป็นสิ่งที่เปราะบางและปลอดภัยน้อยกว่าการเปิดพอร์ต แต่ฉันแน่ใจว่าคุณมีเหตุผลของคุณ

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