Thursday, October 9, 2014

Limiting Access with SFTP Jails on Debian and Ubuntu

Configure OpenSSH
  • แก้ไขไฟล์ /etc/ssh/sshd_config (ก่อนแก้ไขก็สำรองไว้ก่อนนะครับ)
  • vi /etc/ssh/sshd_config
  • หาคำว่าบรรทัดที่ขึ้นต้นด้วยคำประมาณนี้ Subsystem sftp ถ้ามันไม่มีก็เพิ่มเข้าไปได้เลย
Subsystem sftp internal-sftp
  • จากนั้นก็เพิ่มค่าเล่านี้ไว้ต่อจากบรรทัดสุดท้ายของไฟล์ sshd_config นี้ (ในที่นี้บรรทัดสุดท้ายผมคือ UsePAM yes เราก็เพิ่มค่าด้านล่างนี้ต่อท้ายบรรทัดนี้แหละ
Match group filetransfer    
ChrootDirectory %h    
X11Forwarding no    
AllowTcpForwarding no    
ForceCommand internal-sftp
  • จากนั้นทำการ save ไฟล์ให้เรียบร้อย และ รีสตาร์ท service ssh ให้เรียบร้อยซะ
sudo service ssh restart
 Modify User Accounts
  • ขั้นแรกให้เราเพิ่ม group ในระบบ Linux เราก่อน เพราะเราจะจัดการ user ประเภทนี้ได้ง่าย
  • ในที่นี้จะเพิ่ม group ชื่อ filetransfer
sudo addgroup --system filetransfer
  • จากนั้นเราจะมาปรับแต่ค่าให้ user ที่จะถูกจำกัดให้เข้าได้เฉพาะ home ของตัวเอง ในที่นี้จะสมมุติให้ user ที่จะโดนจำกัดสิทธิ์ชื่อ bob เพิ่ม user โดยคำสั่ง
sudo adduser bob
  • ใน /home ของระบบก็จะได้ /home/bob ขึ้นมา
  • จากนั้นกำหนดสิทธิ์ดังนี้
sudo usermod -G filetransfer bob
sudo chown root:root /home/bob
sudo chmod 755 /home/bob
  • ต่อมาเราต้องสร้าง folder เริ่มต้นไว้ใต้ /home/bob/ เพราะ bob จะไม่มีสิทธิ์ทำอะไรภายใต้ /home/bob/ ได้เลย ทำได้เพียงภายใต้ /home/bob/subfolder ที่เรากำลังจะสร้างไว้ให้เท่านั้น
cd /home/bob
sudo mkdir docs public_html
sudo chown bob:filetransfer *
  • เสร็จแล้วครับ ผู้เขียนทดสอบโดยใช้ winscp login ด้วย bob เข้าไปดู ที่ debian 6 squeeze 
  • การตั้งค่านี้ใช้ได้ครับ และใช้ได้แค่ sftp ด้วยแหละ scp หรือ ssh ไม่สามารถใช้งานได้ด้วยแหละเยี่ยมจริงๆ
อ้างอิง
  • https://www.linode.com/docs/tools-reference/tools/limiting-access-with-sftp-jails-on-debian-and-ubuntu
  • http://stackoverflow.com/questions/24646964/sftp-with-ssh-restrict-access-to-home-directory-form-only-some-users
  • http://askubuntu.com/questions/134425/how-can-i-chroot-sftp-only-ssh-users-into-their-homes

No comments:

Post a Comment