ฉันจะ จำกัด การส่งต่อพอร์ต ssh * remote * ได้อย่างไร


22

ฉันต้อง จำกัด พอร์ตที่ผู้ใช้สามารถssh -Rส่งต่อจากระยะไกล " "

ฉันรู้เกี่ยวกับpermitopenตัวเลือกใน authorized_keys แต่อย่างที่มันบอกไว้ใน man page มัน จำกัดssh -Lการส่งต่อพอร์ตในท้องถิ่นเท่านั้น

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

ฉันพบเธรดนี้ที่พูดถึงการใช้ selinux หรือLD_PRELOADแต่ฉันไม่เคยกำหนดค่า selinux มาก่อนและไม่สามารถหาข้อมูลเกี่ยวกับวิธีการทำเช่นนั้นLD_PRELOADได้

อาจมีคนทำแพทช์สำหรับ openssh เพื่อใช้งานหรือไม่

แก้ไข: ฉันพบรายงานข้อผิดพลาดนี้แล้วดังนั้นฉันจึงเดาว่ายังไม่ได้ใช้งาน


คุณค้นพบวิธีแก้ปัญหาสำหรับสิ่งนี้หรือไม่?
alex88

ฉันไม่ได้ฉันเดาว่ามันจะไม่สามารถทำได้จนกว่าข้อผิดพลาดข้างต้นจะปิดหรือมีคนเขียนแพทช์เพื่อใช้งานนี้
Lluís

คำตอบ:


3

สิ่งนี้ได้รับการดำเนินการใน OpenSSH 7.8p1 ซึ่งเปิดตัวในปี 2018-08-24 อ้างอิงจากบันทึกประจำรุ่น:

เพิ่มคำสั่ง PermitListen ให้กับ sshd_config (5) และตัวเลือกที่อนุญาต listlisten = authorized_keys ที่ควบคุมการฟังที่อยู่และหมายเลขพอร์ตอาจถูกใช้โดยการส่งต่อระยะไกล (ssh -R ... )


4

มีตัวเลือกno-port-forwardingที่คุณสามารถใช้เพื่อป้องกันการส่งต่อพอร์ตทั้งหมด นำเสนออย่างน้อยเป็น OpenSSH 4.3p2 (CentOS 5.3 - เครื่องที่เก่าแก่ที่สุดที่ฉันสามารถเข้าถึงได้) permitopenวางไว้ในสถานที่เดียวกับที่คุณจะต้องใส่


13
การปิดใช้งานการส่งต่อพอร์ตโดยสิ้นเชิงดูเหมือนจะเกินความจริงและไม่เหมาะกับคำถาม ฉันถือว่า OP ต้องการจำกัดแต่ยังอนุญาตการส่งต่อพอร์ตระยะไกลเฉพาะบางรายการ
gertvdijk

2
ใช่ฉันต้องอนุญาตให้ส่งต่อบางพอร์ต
Lluís

0

ไม่สามารถ จำกัด การใช้ ssh ได้ บางทีอาจจะใช้ selinux หรือ iptables ได้ อย่างไรก็ตามมีกลยุทธ์ทางเลือกซึ่งอาจหรืออาจไม่เหมาะกับความต้องการของคุณ ใช้การเชื่อมต่อกับซ็อกเก็ต UNIX ควรจะใช้ได้ตั้งแต่ openssh เวอร์ชั่น 6.8

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

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

วิธีการล้าง SSH reverse tunnel socket หลังจากปิดการเชื่อมต่อ?


-1

ทำซ้ำ: /superuser/516417/how-to-restrict-ssh-port-forwarding-without-denying-it

ดูเหมือนว่าคุณสามารถใช้สิ่งต่อไปนี้?

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

แก้ไข: ดังนั้นในการกำหนดค่าเซิร์ฟเวอร์เพิ่มต่อไปนี้

โฮสต์ PermitOpen: พอร์ต

PermitOpen IPv4_addr: พอร์ต

PermitOpen [IPv6_addr]: พอร์ต


1
เฉพาะใน U&L เท่านั้นที่สามารถทำเครื่องหมายว่าซ้ำกัน
GAD3R

1
ตามที่ระบุไว้ในคำถามสำหรับ -L และเป็นที่รู้จักกันดีว่าไม่ใช่วิธีแก้ปัญหา
alex88

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