วิธีจำกัดผู้ใช้ SFTP ไว้ที่โฮมไดเร็กทอรีโดยใช้ chroot Jail
ในบทช่วยสอนนี้ เราจะพูดถึงวิธีจำกัดผู้ใช้ SFTP ให้อยู่ในไดเร็กทอรีหลักหรือไดเร็กทอรีเฉพาะของตน หมายความว่าผู้ใช้สามารถเข้าถึงเฉพาะโฮมไดเร็กตอรี่ของตนเท่านั้น ไม่ใช่ทั้งระบบไฟล์
การจำกัดโฮมไดเร็กทอรีของผู้ใช้เป็นสิ่งสำคัญ โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมเซิร์ฟเวอร์ที่ใช้ร่วมกัน ดังนั้นผู้ใช้ที่ไม่ได้รับอนุญาตจะไม่แอบดูไฟล์และโฟลเดอร์ของผู้ใช้รายอื่น
ข้อสำคัญ: โปรดทราบว่าวัตถุประสงค์ของบทความนี้คือเพื่อให้การเข้าถึง SFTP เท่านั้น ไม่ใช่การเข้าสู่ระบบ SSH โดยการปฏิบัติตามบทความนี้จะมีสิทธิ์ในการถ่ายโอนไฟล์ แต่ไม่ได้รับอนุญาตให้ทำเซสชัน SSH ระยะไกล
การอ่านที่แนะนำ: จำกัดการเข้าถึงของผู้ใช้ SSH ไปยังไดเร็กทอรีบางตัวโดยใช้ Chrooted Jail
วิธีที่ง่ายที่สุดในการดำเนินการนี้คือการสร้างสภาพแวดล้อมคุกแบบ chrooted สำหรับการเข้าถึง SFTP วิธีนี้จะเหมือนกันกับระบบปฏิบัติการ Unix/Linux ทั้งหมด เมื่อใช้สภาพแวดล้อมแบบ chrooted เราสามารถจำกัดผู้ใช้ให้อยู่ในไดเร็กทอรีหลักหรือไดเร็กทอรีเฉพาะได้
จำกัดผู้ใช้ไว้ที่โฮมไดเร็กทอรี
ในส่วนนี้ เราจะสร้างกลุ่มใหม่ชื่อ sftpgroup และมอบหมายความเป็นเจ้าของและการอนุญาตที่ถูกต้องให้กับบัญชีผู้ใช้ มีสองทางเลือกในการจำกัดผู้ใช้ให้อยู่ที่หน้าแรกหรือไดเร็กทอรีเฉพาะ เราจะเห็นทั้งสองวิธีในบทความนี้
สร้างหรือแก้ไขผู้ใช้และกลุ่ม
ให้เราจำกัดผู้ใช้ที่มีอยู่ เช่น tecmint
ไว้ที่โฮมไดเร็กตอรี่ของเขา/เธอที่ชื่อ /home/tecmint
ในการทำเช่นนี้ คุณต้องสร้างกลุ่ม sftpgroup ใหม่โดยใช้คำสั่ง groupadd ดังที่แสดง:
groupadd sftpgroup
จากนั้น กำหนดผู้ใช้ 'tecmint' ให้กับกลุ่ม sftpgroup
usermod -G sftpgroup tecmint
คุณยังสามารถสร้างผู้ใช้ใหม่โดยใช้คำสั่ง useradd เช่น senthil
และกำหนดผู้ใช้ให้กับกลุ่ม sftpusers
adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint
แก้ไขไฟล์การกำหนดค่า SSH
เปิดและเพิ่มบรรทัดต่อไปนี้ในไฟล์การกำหนดค่า /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /home
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
บันทึกและออกจากไฟล์ เริ่มบริการ sshd ใหม่เพื่อให้การเปลี่ยนแปลงใหม่มีผล
systemctl restart sshd
OR
service sshd restart
หากคุณ chroot ผู้ใช้หลายคนไปยังไดเรกทอรีเดียวกัน คุณควรเปลี่ยนการอนุญาตของโฮมไดเร็กตอรี่ของผู้ใช้แต่ละคน เพื่อป้องกันไม่ให้ผู้ใช้ทั้งหมดเรียกดูโฮมไดเร็กตอรี่ของผู้ใช้แต่ละราย
chmod 700 /home/tecmint
ตรวจสอบการเข้าสู่ระบบของผู้ใช้ SSH และ SFTP
ถึงเวลาตรวจสอบการเข้าสู่ระบบจากระบบภายในเครื่องแล้ว ลอง ssh ระบบรีโมตของคุณจากระบบโลคัลของคุณ
ssh [email
ที่นี่,
- tecmint – ชื่อผู้ใช้ของระบบระยะไกล
- 192.168.1.150 – ที่อยู่ IP ของระบบระยะไกล
ผลลัพธ์ตัวอย่าง:
[email 's password:
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.
จากนั้น เข้าถึงระบบระยะไกลโดยใช้ SFTP
sftp [email
ผลลัพธ์ตัวอย่าง:
[email 's password:
Connected to 192.168.1.150.
sftp>
ให้เราตรวจสอบไดเร็กทอรีการทำงานปัจจุบัน:
sftp> pwd
Remote working directory: /
sftp> ls
tecmint
ที่นี่ tecmint
คือโฮมไดเร็กตอรี่ ซีดีไปที่ไดเร็กทอรี tecmint และสร้างไฟล์หรือโฟลเดอร์ตามที่คุณต้องการ
sftp> cd tecmint
Remote working directory: /
sftp> mkdir test
tecmint
จำกัดผู้ใช้ให้อยู่ในไดเร็กทอรีเฉพาะ
ในตัวอย่างก่อนหน้านี้ เราจำกัดผู้ใช้ที่มีอยู่ให้อยู่ในโฮมไดเร็กตอรี่ ตอนนี้เราจะดูวิธี จำกัด ผู้ใช้ใหม่ให้อยู่ในไดเร็กทอรีที่กำหนดเอง
สร้างกลุ่มและผู้ใช้ใหม่
สร้างกลุ่มใหม่ sftpgroup
groupadd sftpgroup
จากนั้น สร้างไดเร็กทอรีสำหรับกลุ่ม SFTP และกำหนดสิทธิ์ให้กับผู้ใช้รูท
mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/
ถัดไป สร้างไดเร็กทอรีใหม่สำหรับผู้ใช้แต่ละราย ซึ่งพวกเขาจะสามารถเข้าถึงแบบเต็มได้ ตัวอย่างเช่น เราจะสร้างผู้ใช้ tecmint
และเป็นโฮมไดเร็กตอรี่ใหม่ที่มีสิทธิ์อนุญาตกลุ่มที่ถูกต้องโดยใช้ชุดคำสั่งต่อไปนี้
adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/
กำหนดค่า SSH สำหรับการเข้าถึง SFTP
แก้ไขหรือเพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์:
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /sftpusers/chroot/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
บันทึกและออกจากไฟล์. เริ่มบริการ sshd ใหม่เพื่อให้การเปลี่ยนแปลงที่บันทึกไว้มีผล
systemctl restart sshd
OR
service sshd restart
เพียงเท่านี้ คุณสามารถตรวจสอบได้โดยลงชื่อเข้าใช้เซิร์ฟเวอร์ SSH และ SFTP ระยะไกลของคุณโดยใช้ขั้นตอนที่ให้ไว้ด้านบนในยืนยันการเข้าสู่ระบบ SSH และ SFTP
โปรดทราบว่าวิธีนี้จะปิดการเข้าถึงเชลล์ กล่าวคือ คุณไม่สามารถเข้าถึงเซสชันเชลล์ของระบบระยะไกลโดยใช้ SSH ได้ คุณสามารถเข้าถึงระบบระยะไกลผ่าน SFTP เท่านั้น และทำการถ่ายโอนไฟล์ไปยังและจากระบบภายในและระบบระยะไกล
บทสรุป
ตอนนี้คุณรู้วิธีจำกัดโฮมไดเร็กตอรี่ของผู้ใช้โดยใช้สภาพแวดล้อม Chroot ใน Linux หากคุณพบว่าสิ่งนี้มีประโยชน์ แบ่งปันบทความนี้บนโซเชียลเน็ตเวิร์กของคุณและแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง หากมีวิธีอื่นใดในการจำกัดโฮมไดเร็กทอรีของผู้ใช้