ฉันกำลังพยายามแยกผู้ใช้บางรายออกจากผู้ใช้รายอื่น ซึ่งต้องใช้การจำลองเสมือนหรือการจำคุก ในขณะนี้ฉันเลิกใช้คุกซึ่งส่วนใหญ่ใช้งานได้ดี ยกเว้นปัญหาเดียว: ผู้ใช้ chrooted ไม่สามารถใช้การพิสูจน์ตัวตนด้วยคีย์ pub/priv
เท่าที่ฉันเข้าใจ เซิร์ฟเวอร์ SSH ทำงานดังนี้:
- ตรวจสอบผู้ใช้ผ่านคู่คีย์ priv/pub โดยดูที่
$HOME/.ssh/authorized_keys
และ $HOME/.ssh/authorized_keys2
.
- หากไม่ตรงกัน ให้ตรวจสอบสิทธิ์ผู้ใช้ด้วยรหัสผ่านหากอนุญาต มิฉะนั้นจะล้มเหลว
- คุกผู้ใช้ในสภาพแวดล้อม chroot ที่ระบุโดย
ChrootDirectory
.
- สร้างสภาพแวดล้อมเชลล์เฉพาะ
- ย้ายผู้ใช้ไปที่
$บ้าน
ถ้าเป็นไปได้.
เนื่องจาก $HOME ของฉันอยู่ใน chroot มีวิธีที่จะทำให้งานนี้ไม่ต้องใช้ซอฟต์ลิงก์ไดเรกทอรีผู้ใช้ไปยังตำแหน่งที่ไม่ใช่ chroot ที่คาดไว้หรือไม่ ด้านล่างนี้คือไฟล์การกำหนดค่าของฉัน
/etc/ssh/sshd_config
PermitRootเข้าสู่ระบบหมายเลข
ChallengeResponseAuthentication เลขที่
ใช้ PAM ใช่
X11การส่งต่อใช่
เลขที่พิมพ์
ยอมรับEnv LANG LC_*
ระบบย่อย sftp internal-sftp -f AUTH -l VERBOSE
ผู้ใช้ที่มีปัญหาใน Match Group
ChrootDirectory /srv/chroot/ผู้ใช้/
X11การส่งต่อใช่
AllowTcpForwarding ใช่
อนุญาต TTY ใช่
/etc/schroot/chroot.d/problemusers.conf
[ตัวสร้างปัญหา]
Description=Debian Stable สำหรับผู้ใช้ที่มีปัญหา
พิมพ์ = ไดเร็กทอรี
ไดเร็กทอรี=/srv/chroot/users
ผู้ใช้รูท = uroot
ผู้ใช้ = uroot, หมู่, srb2k
/etc/fstab
# ระบบ
UUID=a53ea27c-390d-4cbb-8fb1-ab152d42c335 ไม่มีการแลกเปลี่ยน sw 0 0
UUID=fdcb2dd1-ca79-49f3-a226-81523665448c / ext4 ข้อผิดพลาด=remount-ro 0 1
UUID=68A0-5674 /boot/efi vfat umask=0077 0 1
# chroot: 'ปัญหา'
UUID=89fdd6a5-77b6-4333-8e19-2cfc93974368 /srv/chroot/users btrfs ค่าเริ่มต้น 0 1