ทำไม chroot_local_user ของ vsftpd ที่ไม่ปลอดภัย


20

ฉันตั้งค่า vsftpd ใน VPS ของฉันและฉันไม่ต้องการให้ผู้ใช้ได้รับอนุญาตให้ออกจากนั่นคือ ftp home directory ฉันใช้ local_user ftp ไม่ใช่แบบไม่ระบุชื่อดังนั้นฉันจึงเพิ่ม:

chroot_local_user = ใช่

ฉันได้อ่านในโพสต์บนฟอรัมจำนวนมากว่านี่ไม่ปลอดภัย

  1. ทำไมสิ่งนี้ถึงไม่ปลอดภัย?
  2. หากสิ่งนี้ไม่ปลอดภัยเนื่องจากการใช้ ssh เพื่อเข้าร่วม VPS ของฉันเช่นกันฉันสามารถล็อคผู้ใช้เหล่านี้จาก sshd ได้ไหม?
  3. มีตัวเลือกอื่นสำหรับการบรรลุพฤติกรรมของ vsftpd นี้หรือไม่? (ฉันไม่ต้องการลบสิทธิ์การอ่านในทุกโฟลเดอร์ / ไฟล์สำหรับ "โลก" ในระบบของฉัน)

คำตอบ:


20

ตรวจสอบที่นี่เพื่อดูคำถามที่พบบ่อยของ VSFTPDสำหรับคำตอบที่คุณต้องการ ด้านล่างเป็นข้อความที่ตัดตอนมาสำคัญที่ฉันคิดว่าจะตอบคำถามของคุณ

ถาม) ช่วยด้วย! ผลกระทบด้านความปลอดภัยที่อ้างถึงในตัวเลือก "chroot_local_user" คืออะไร?

A) ประการแรกทราบว่า ftp daemons อื่นมีความหมายเหมือนกัน มันเป็นปัญหาทั่วไป ปัญหาไม่รุนแรงเกินไป แต่เป็นเช่นนี้: บางคนมีบัญชีผู้ใช้ FTP ซึ่งไม่น่าเชื่อถือที่จะเข้าถึงแบบเต็มเชลล์ หากบัญชีเหล่านี้สามารถอัปโหลดไฟล์ได้แสดงว่ามีความเสี่ยงเล็กน้อย ขณะนี้ผู้ใช้ที่ไม่ดีมีการควบคุมรูทของระบบไฟล์ซึ่งเป็นโฮมไดเร็กตอรี่ของพวกเขา ftp daemon อาจทำให้ไฟล์ config บางไฟล์อ่านได้เช่น / etc / some_file ด้วย chroot () ไฟล์นี้อยู่ภายใต้การควบคุมของผู้ใช้ vsftpd ระมัดระวังในพื้นที่นี้ แต่ libc ของระบบอาจต้องการเปิดไฟล์ปรับแต่งภาษาหรือการตั้งค่าอื่น ๆ ...


ขอบคุณสำหรับสิ่งนั้นฉันไม่รู้ทุกอย่างเลย เรียนรู้บางสิ่ง! +1
Yanick Girouard

4
ที่จริงฉันมาที่นี่หลังจากอ่านคำถามที่พบบ่อยเพราะฉันไม่เข้าใจคำสั่งที่น่าเป็นห่วง: "ftp daemon อาจทำให้ไฟล์ config บางไฟล์อ่านเช่น / etc / some_file ด้วย chroot () ตอนนี้ไฟล์นี้อยู่ภายใต้การควบคุมของ ผู้ใช้งาน.". สมมุติว่าเป็นกรณีนี้ถ้าvsftpdมีข้อบกพร่องด้านความปลอดภัย (à la buffer overflow) ??? การทำงานvsftpdกับผู้ใช้ที่ chroot'ed กับผู้ใช้ที่บ้านทำให้สถานการณ์นี้มีแนวโน้มมากขึ้นได้อย่างไร กรุณาอธิบาย ...
sxc731

4

ปัญหาคือคุณไม่สามารถใช้บัญชีภายในเครื่องและปิดใช้งานบัญชีเหล่านั้นจากการเข้าสู่ระบบของเชลล์ หากคุณตั้งค่าล็อกอินเชลล์เป็น / bin / nologin จะไม่อนุญาตให้คุณลงชื่อเข้าใช้ด้วย vsftpd เช่นกัน

FTP daemon ที่ดีกว่าและปลอดภัยกว่านั้นคือ Pure-ftpd ค้นหาได้จากที่เก็บ EPEL และอนุญาตให้สร้างผู้ใช้เสมือน เซิร์ฟเวอร์ใช้ผู้ใช้ / กลุ่มทั่วไปเพื่อตั้งค่าการอนุญาตทั้งหมดสำหรับโฮมโฟลเดอร์ของผู้ใช้และ "แมป" ผู้ใช้เสมือนกับผู้ใช้นั้นเมื่อเข้าสู่ระบบเพื่อจัดการกับสิทธิ์ มันมีความปลอดภัยมากขึ้นและคุณไม่ต้องจัดการกับความปลอดภัยในการเข้าสู่ระบบ openssh

Pure-ftpd ยังรองรับฟีเจอร์มากมายเช่นโควต้าอัตราส่วนและอื่น ๆ ดีกว่า vsftpd

ต่อไปนี้เป็นบทแนะนำอย่างง่ายเกี่ยวกับวิธีติดตั้งและกำหนดค่าผู้ใช้เสมือนพื้นฐาน: http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-using-pure-ftpd--th-th/ ใน CentOS /

หากคุณอ่านเอกสารฉบับเต็ม (ซึ่งคุณควรทำ) คุณจะรู้ว่าสวิตช์ -d เมื่อสร้างผู้ใช้เสมือนนั้นจะเป็น chroot อัตโนมัติไปยังไดเรกทอรีนั้นสำหรับผู้ใช้นั้น


ฉันใช้AllowUsers user1 user2คำสั่งใน sshd_config ของฉันที่ฉันไม่อนุญาตให้ ftp_user1 เข้าสู่ระบบด้วย ssh ผู้ใช้ยังคง ftp_user1 สามารถเข้าสู่ระบบด้วย ftp ดังนั้นมันจึงใช้งานได้ตามเจตนา แต่คำถามหลักของฉันยังคงเปิดอยู่ทำไมมันจึงไม่ปลอดภัย
p1100i

4
ใช่! ฉันจะ! คุณต้องเพิ่ม "non-shell" ลงใน / etc / shells ในหลาย ๆ ระบบ / bin / false หรือ / bin / nologin มีอยู่ใน / etc / shells หากเชลล์อยู่ที่นั่น vsftpd จะให้คุณเข้าสู่ระบบแน่นอนด้วยเมื่อเปิดใช้งาน chroot_local_user
Frands Hansen

1
ฉันยืนแก้ไขแล้ว ขอบคุณที่ชี้นำ!
Yanick Girouard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.