Score:1

วิธีจำกัดผู้ใช้ให้ rbash เมื่อเข้าสู่ระบบผ่าน SSH

ธง us

ฉันต้องการจำกัดผู้ใช้บางคนบนเซิร์ฟเวอร์ของฉันให้สามารถดำเนินการคำสั่งบางอย่างเท่านั้น ในการทำเช่นนี้ วิธีทั่วไปที่สุดที่ฉันสามารถหาได้คือการใช้ ทุบ.

แม้ว่าฉันจะสามารถพบเว็บไซต์มากมายที่พูดถึง rbash แต่ฉันประสบปัญหาในการหาข้อมูลใดๆ เกี่ยวกับวิธีใช้อย่างถูกต้อง วิธีทั่วไปที่สุดที่ฉันพบคือการสร้าง symlink จาก /bin/rbash ถึง /ถัง/ทุบตีให้ตั้งค่าเชลล์การเข้าสู่ระบบของผู้ใช้ที่ถูกจำกัดเป็น /bin/rbash แล้วตั้งค่าเอง เส้นทาง ใน ~/.bash_profile ในโฮมไดเร็กทอรีของผู้ใช้

อย่างไรก็ตาม ฉันตกใจมากที่พบว่าด้วยการตั้งค่านี้ ผู้ใช้ยังคงสามารถคัดลอกไฟล์ไปยังเซิร์ฟเวอร์ได้โดยใช้ scp และพวกเขายังสามารถเปิดเชลล์ที่ไม่จำกัดได้ด้วยการใช้ ssh user@host -t ทุบตี! สิ่งที่ดูเหมือนจะเกิดขึ้นคือเซิร์ฟเวอร์ SSH กำลังส่งคำสั่งไปยังเชลล์ล็อกอินบนเซิร์ฟเวอร์โดยใช้ -ค, ดังนั้น ssh user@host -t ทุบตี ทำให้เซิร์ฟเวอร์ทำงาน /bin/rbash -c ทุบตีซึ่งใช้งานได้เพราะ .bash_profile ยังไม่ได้ดำเนินการเพื่อจำกัดเส้นทาง scp ในทำนองเดียวกันทำให้เซิร์ฟเวอร์ทำงาน /bin/rbash -c scp.

ตอนนี้ฉันได้พบกับ คำสั่งบังคับ คำสั่งของ sshd คำสั่งนี้โดยพื้นฐานแล้วจะทำให้คำสั่งที่กำหนดค่าถูกส่งผ่านเป็น -ค ไปยังเชลล์ล็อกอิน โดยไม่สนใจคำสั่งใดๆ ที่ไคลเอนต์ระบุ ดังนั้นหาก คำสั่งบังคับ ถูกตั้งค่าเป็น ทุบที่จะดำเนินการคำสั่งเสมอ /bin/rbash -c rbash บนเซิร์ฟเวอร์ โดยไม่คำนึงว่าไคลเอนต์ถูกเรียกใช้ด้วยหรือไม่ -t ทุบตี หรือเป็น scp หรืออะไรก็ตาม น่าเสียดาย, /bin/rbash -c rbash ทำให้เกิดการ .bash_profile ไม่ถูกดำเนินการ ดังนั้นเราจึงลงเอยด้วยเชลล์ที่ถูกจำกัดแต่เป็นแบบปกติ เส้นทางดังนั้นเราจึงสามารถโทร ทุบตี ที่นั่นเพื่อหลบหนี

สิ่งที่ฉันต้องการบรรลุ:

  • ไม่ควรมีวิธีหลีกเลี่ยงเชลล์ที่ถูกจำกัดสำหรับผู้ใช้ที่เชื่อมต่อผ่าน SSH
  • ตามหลักการแล้ว จะยังคงสามารถเรียกใช้คำสั่งที่อนุญาตในเชลล์ที่ถูกจำกัดได้โดยใช้ ssh user@server allow_command
  • การกำหนดค่าไม่ควรเป็นแบบ SSH เท่านั้น ดังนั้นผู้ใช้ที่เข้าสู่ระบบ เช่น บน TTY ควรถูกจำกัดเช่นกัน
Score:0
ธง us

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

เป็นการแก้ปัญหามากกว่าการระบุ /bin/rbash (symlink ถึง /ถัง/ทุบตี เป็นเชลล์ล็อกอิน) ฉันได้สร้างเชลล์สคริปต์แล้ว /usr/local/bin/rbash และใช้เป็นเชลล์ล็อกอินแทน เชลล์สคริปต์มีเนื้อหาดังต่อไปนี้:

#!/bin/bash -l
ส่งออก PATH=/usr/local/rbin
ผู้บริหาร /bin/bash -r "$@"

ฉันยังได้ทดลองกับ SetEnv คำสั่งของ sshd และพยายามตั้งค่า เส้นทาง ที่นั่น. อย่างไรก็ตาม ฉันพบว่าโซลูชันนี้ใช้งานได้จริงน้อยกว่าเนื่องจากตั้งค่าการกำหนดค่าสำหรับ SSH เท่านั้น และยังทำให้เกิดข้อผิดพลาดมากมายขณะทำงาน /etc/profileเนื่องจากไม่พบคำสั่งที่ใช้ที่นั่น นอกจากนี้ ดูเหมือนว่าจะมีความเสี่ยงที่คำสั่ง sshd อื่น ๆ จะอนุญาตให้ไคลเอนต์สามารถแทนที่ตัวแปรสภาพแวดล้อมบางอย่างได้อีกครั้ง

โพสต์คำตอบ

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