Android

วิธีการตั้งค่า SFTP chroot คุก

CentOS 7 - Setup SFTP with Chroot jail

CentOS 7 - Setup SFTP with Chroot jail

สารบัญ:

Anonim

ในบทช่วยสอนนี้เราจะอธิบายวิธีการตั้งค่าสภาพแวดล้อม SFTP Chroot Jail ที่จะ จำกัด ผู้ใช้ไปยังไดเรกทอรีบ้านของพวกเขา ผู้ใช้จะมีการเข้าถึง SFTP เท่านั้นการเข้าถึง SSH จะถูกปิดใช้งาน คำแนะนำเหล่านี้ควรใช้ได้กับการกระจาย Linux ที่ทันสมัยรวมถึง Ubuntu, CentOS, Debian และ Fedora

สร้างกลุ่ม SFTP

แทนที่จะกำหนดค่าเซิร์ฟเวอร์ OpenSSH สำหรับผู้ใช้แต่ละคนเราจะสร้างกลุ่มใหม่และเพิ่มผู้ใช้ที่ chrooted ทั้งหมดของเราในกลุ่มนี้

รันคำสั่ง groupadd ต่อไปนี้เพื่อสร้างกลุ่มผู้ใช้ sftponly :

sudo groupadd sftponly คุณสามารถตั้งชื่อกลุ่มตามที่คุณต้องการ

การเพิ่มผู้ใช้ไปยังกลุ่ม SFTP

ขั้นตอนต่อไปคือการเพิ่มผู้ใช้ที่คุณต้องการ จำกัด ในกลุ่ม sftponly

หากนี่เป็นการตั้งค่าใหม่และไม่มีผู้ใช้อยู่คุณสามารถสร้างบัญชีผู้ใช้ใหม่ได้โดยพิมพ์:

sudo useradd -g sftponly -s /bin/false -m -d /home/username username

  • ตัวเลือก -g sftponly จะเพิ่มผู้ใช้ไปยังกลุ่ม -g sftponly ตัวเลือก -s /bin/false ตั้งเปลือกเข้าสู่ระบบของผู้ใช้ โดยการตั้งค่าเปลือกเข้าสู่ระบบ /bin/false ผู้ใช้จะไม่สามารถเข้าสู่เซิร์ฟเวอร์ผ่าน SSH ตัวเลือก -m -d /home/username บอกให้ useradd สร้างไดเรกทอรีบ้านผู้ใช้

ตั้งรหัสผ่านที่คาดเดายากสำหรับผู้ใช้ที่สร้างใหม่:

sudo passwd username

มิฉะนั้นหากผู้ใช้ที่คุณต้องการ จำกัด มีอยู่แล้วเพิ่มผู้ใช้ไปยังกลุ่ม sftponly และเปลี่ยนเปลือกของผู้ใช้:

sudo usermod -G sftponly -s /bin/false username2

โฮมไดเรกทอรีผู้ใช้จะต้องเป็นเจ้าของโดย root และมีสิทธิ์ 755 :

sudo chown root: /home/username sudo chmod 755 /home/username

เนื่องจากโฮมไดเร็กทอรีผู้ใช้เป็นเจ้าของโดยผู้ใช้รูทผู้ใช้เหล่านี้จะไม่สามารถสร้างไฟล์และไดเร็กทอรีในโฮมไดเร็กทอรีของตนได้ หากไม่มีไดเรกทอรีในบ้านของผู้ใช้คุณจะต้องสร้างไดเรกทอรีใหม่ที่ผู้ใช้จะสามารถเข้าถึงได้อย่างเต็มที่ ตัวอย่างเช่นคุณสามารถสร้างไดเรกทอรีต่อไปนี้:

sudo mkdir /home/username/{public_html, uploads} sudo chmod 755 /home/username/{public_html, uploads} sudo chown username:sftponly /home/username/{public_html, uploads}

หากเว็บแอปพลิเคชันใช้ไดเรกทอรี public_html ของผู้ใช้เป็นรูทเอกสารการเปลี่ยนแปลงเหล่านี้อาจนำไปสู่ปัญหาการอนุญาต ตัวอย่างเช่นหากคุณใช้งาน WordPress คุณจะต้องสร้างกลุ่ม PHP ที่จะทำงานในฐานะผู้ใช้ที่เป็นเจ้าของไฟล์และเพิ่มเว็บ erver ไปยังกลุ่ม sftponly

การกำหนดค่า SSH

SFTP เป็นระบบย่อยของ SSH และสนับสนุนกลไกการตรวจสอบความถูกต้อง SSH ทั้งหมด

เปิดไฟล์คอนฟิกูเรชัน SSH /etc/ssh/sshd_config ด้วยโปรแกรมแก้ไขข้อความของคุณ:

sudo nano /etc/ssh/sshd_config

ค้นหาบรรทัดที่ขึ้นต้นด้วย Subsystem sftp โดยปกติแล้วจะอยู่ที่ท้ายไฟล์ หากบรรทัดขึ้นต้นด้วย hash # ลบ hash # แล้วแก้ไขเพื่อให้มีลักษณะดังนี้:

/ etc / SSH / sshd_config

Subsystem sftp internal-sftp

ในตอนท้ายของไฟล์บล็อกของการตั้งค่าต่อไปนี้:

/ etc / SSH / sshd_config

Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no

คำสั่ง ChrootDirectory ระบุเส้นทางไปยังไดเรกทอรี chroot %h หมายถึงไดเรกทอรีบ้านของผู้ใช้ ไดเร็กทอรีนี้ต้องเป็นเจ้าของโดยผู้ใช้รูทและไม่สามารถเขียนได้โดยผู้ใช้หรือกลุ่มอื่น

ใช้ความระมัดระวังเป็นพิเศษเมื่อแก้ไขไฟล์กำหนดค่า SSH การกำหนดค่าที่ไม่ถูกต้องอาจทำให้บริการ SSH ล้มเหลวในการเริ่มต้น

เมื่อเสร็จแล้วให้บันทึกไฟล์และเริ่มบริการ SSH ใหม่เพื่อใช้การเปลี่ยนแปลง:

sudo systemctl restart ssh

ใน CentOS และ Fedora บริการ ssh ชื่อ sshd :

sudo systemctl restart sshd

ทดสอบการกำหนดค่า

ตอนนี้คุณได้กำหนดค่า SFTP chroot แล้วคุณสามารถลองลงชื่อเข้าใช้เครื่องระยะไกลผ่าน SFTP โดยใช้ข้อมูลประจำตัวของผู้ใช้ chrooted ในกรณีส่วนใหญ่คุณจะใช้ไคลเอนต์ SFTP เดสก์ท็อปเช่น FileZilla แต่ในตัวอย่างนี้เราจะใช้คำสั่ง sftp

เปิดการเชื่อมต่อ SFTP โดยใช้คำสั่ง sftp ตามด้วยชื่อผู้ใช้เซิร์ฟเวอร์ระยะไกลและที่อยู่ IP ของเซิร์ฟเวอร์หรือชื่อโดเมน:

sftp [email protected]

คุณจะได้รับแจ้งให้ป้อนรหัสผ่านของผู้ใช้ เมื่อเชื่อมต่อแล้วรีโมตเซิร์ฟเวอร์จะแสดงข้อความยืนยันและพรอมต์ sftp> :

[email protected]'s password: sftp>

รันคำสั่ง pwd ดังที่แสดงด้านล่างและหากทุกอย่างทำงานตามที่คาดไว้คำสั่งควรกลับมา /

sftp> pwd Remote working directory: /

คุณยังสามารถแสดงรายการรีโมตไฟล์และไดเร็กทอรีโดยใช้ ls สั่ง ls และคุณควรเห็นไดเร็กทอรีที่เราสร้างไว้ก่อนหน้านี้:

sftp> ls public_html uploads

ข้อสรุป

ในบทช่วยสอนนี้คุณได้เรียนรู้วิธีการตั้งค่าสภาพแวดล้อม SFTP Chroot Jail บนเซิร์ฟเวอร์ Linux ของคุณและ จำกัด การเข้าถึงของผู้ใช้ไปยังโฮมไดเร็กตอรี่ของผู้ใช้

โดยค่าเริ่มต้น SSH จะฟังพอร์ต 22 การเปลี่ยนพอร์ต SSH เริ่มต้นจะเพิ่มความปลอดภัยให้กับเซิร์ฟเวอร์ของคุณโดยลดความเสี่ยงของการโจมตีโดยอัตโนมัติ คุณอาจต้องการตั้งค่าการรับรองความถูกต้องโดยใช้คีย์ SSH และเชื่อมต่อกับเซิร์ฟเวอร์โดยไม่ต้องป้อนรหัสผ่าน

ssh sftp ความปลอดภัย