หวังว่าจะไม่ใช่การหลอกลวง แต่ไม่สามารถหาคำตอบสำหรับสิ่งนี้ได้ ... ฉันพบสิ่งนี้ซึ่งบนพื้นผิวดูเหมือนจะเหมือนกัน แต่เก่ามากและคำตอบเดียวในนั้นไม่ตอบคำถามจริง: ตั้งค่า Users เป็น chrooted สำหรับ sftp แต่อนุญาตให้ผู้ใช้เข้าสู่ระบบใน SSH
ฉันตั้งค่าสภาพแวดล้อม ChrootDirectory ที่ใช้งานได้ผ่าน sftp สำหรับผู้ใช้ในกลุ่ม 'sftp_users' สำเร็จแล้ว มันทำงานได้ดี มีการอนุญาตที่เหมาะสมทั้งหมดและจำกัดการเข้าถึงเฉพาะ sftp และสามารถ rw ในไดเร็กทอรีย่อยภายใน ChrootDirectory วิธีนี้เหมาะสำหรับผู้ใช้ที่ไม่มีความเป็นส่วนตัว การไม่อนุญาตให้เข้าถึง ssh และอนุญาตเฉพาะ rw ภายในโฟลเดอร์ย่อยภายใน ChrootDirectory
ฉันต้องการให้มีผู้ใช้ที่มีสิทธิพิเศษมากกว่านี้เล็กน้อยที่ยังคงสามารถใช้ ssh ได้ตามปกติ แต่เมื่อเข้าสู่ระบบผ่าน sftp จะมีสภาพแวดล้อม ChrootDirectory นี่เป็นปัญหาด้านความปลอดภัยน้อยกว่าเนื่องจากถือว่ามีความเป็นส่วนตัวและ obvi สามารถท่องไปรอบ ๆ ระบบไฟล์ใน ssh ภายใต้สิทธิ์ของผู้ใช้ปกติ ปัญหาคือ ฉันไม่เห็นวิธี Chroot เมื่อพวกเขาเข้าสู่ระบบภายใต้ sftp โดยไม่ป้องกันการเข้าสู่ระบบ ssh สิ่งนี้มีไว้เพื่อสร้างมาตรฐานและความสะดวกสบายมากกว่าสิ่งอื่นใด ดังนั้นเมื่อพวกเขา sftp พวกเขาเพิ่งมาถึงตำแหน่ง Chrooted เช่นเดียวกับผู้ใช้ sftp เท่านั้น
ฉันคิดว่าสิ่งนี้จะใช้ได้ถ้าฉันปล่อยให้เชลล์เป็นค่าเริ่มต้น (ไม่ใช่ /bin/false หรือ nologin) น่าเสียดายที่เมื่อพวกเขาอยู่ในกลุ่ม sftp_only มันจะไม่อนุญาตให้พวกเขา ssh เข้าเลย มีเพียง sftp เท่านั้น มีวิธีแก้ไขปัญหานี้หรือไม่ นอกเหนือจากการมีสองบัญชีแยกกัน บัญชีหนึ่งเพิ่มใน 'sftp_users' และอีกบัญชีหนึ่งไม่ได้อยู่ในกลุ่มนั้น จนถึงตอนนี้ ทั้งหมดที่ฉันพบคือเอกสารเกี่ยวกับการจำกัด sftp Chroot และไม่อนุญาตให้ใช้ ssh พร้อมกันหากอยู่ในกลุ่มนั้น
ตัวอย่างผู้ใช้คือ 'ทดสอบ' 'test' อยู่ในกลุ่ม sftp_users ดังนั้นจึงสามารถเข้าสู่ระบบผ่าน sftp และถูก Chrooted ไปยังโฟลเดอร์ที่ระบุของเขา ('/sftp/test') และอ่านหรือเขียนไปยังโฟลเดอร์หลักของเขา bind-mounted ที่ '/sftp/test/home' . ทั้งหมดนี้ใช้งานได้ แม้ว่าเชลล์ของเขาจะยังคงตั้งค่าใน /etc/passwd เป็น /bin/bash แต่ 'test' ไม่สามารถเข้าสู่ระบบผ่าน ssh ได้หากเพิ่มในกลุ่ม sftp_users ลบการเป็นสมาชิกในกลุ่มนั้นและเขาสามารถทำได้ทั้งสองอย่าง แต่ไม่สามารถ Chrooted ภายใต้ SFTP
ผู้ใช้ที่ไม่ได้อยู่ในกลุ่ม 'sftp_users' ยังสามารถเข้าสู่ระบบผ่าน ssh หรือ sftp ได้ แต่จะไม่ผ่านการ Chrooted ภายใต้ sftp
มีวิธีจับคู่โปรโตคอลที่ใช้ และ/หรืออาจตั้งค่าการจับคู่เพิ่มเติมสำหรับกลุ่มอื่นหรือไม่ ฉันกำลังมองหา chroot เมื่อพวกเขาเข้าสู่ระบบผ่าน sftp เท่านั้น non-chroot ผ่าน ssh นั้นใช้ได้สำหรับผู้ใช้เหล่านี้
ต่อไปนี้คือ sshd_config ของฉัน:
พอร์ต XXXX
#ฟังที่อยู่ ::
#ฟังที่อยู่ 0.0.0.0
พิธีสาร 2
โฮสต์คีย์ /etc/ssh/ssh_host_rsa_key
โฮสต์คีย์ /etc/ssh/ssh_host_dsa_key
โฮสต์คีย์ /etc/ssh/ssh_host_ecdsa_key
โฮสต์คีย์ /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTH
ข้อมูล LogLevel
ล็อกอินเกรซไทม์ 120
PermitRootเข้าสู่ระบบหมายเลข
โหมดเข้มงวดใช่
PubkeyAuthentication ใช่
ละเว้น Rhosts ใช่
หมายเลขการรับรองความถูกต้องตามโฮสต์
หมายเลขใบอนุญาตว่างรหัสผ่าน
ChallengeResponseAuthentication เลขที่
X11การส่งต่อใช่
X11DisplayOffset10
PrintMotd ใช่
PrintLastLog ใช่
ClientAliveCountสูงสุด 10
ClientAliveInterval 3600
TCPKeepAlive หมายเลข
#แบนเนอร์ /etc/issue.net
ยอมรับEnv LANG LC_*
ระบบย่อย sftp /usr/lib/openssh/sftp-server -u 0027
ใช้ PAM ใช่
การตรวจสอบรหัสผ่านใช่
จับคู่กลุ่ม sftp_users
ChrootDirectory /sftp/%u
ForceCommand ภายใน-sftp -u 0027
X11หมายเลขการส่งต่อ
อนุญาตให้ Tcp ส่งต่อหมายเลข
การตรวจสอบรหัสผ่านใช่