การรักษาความปลอดภัยระบบไฟล์สำหรับเซิร์ฟเวอร์ SFTP ที่ปลอดภัย


12

สิ่งนี้อาจไม่ได้เป็นคำถามเพื่อการพัฒนา แต่โดยพื้นฐานแล้วมันคือ ฉันจะอธิบายได้อย่างไร เป้าหมายการพัฒนาหลักของเราคือหน้าเนื้อหาแบบไดนามิก ลูกค้าของเราบางคนขอให้เราอนุญาตให้พวกเขามีพื้นที่ในเซิร์ฟเวอร์ของเรา (ซึ่งพวกเขาจ่าย) สำหรับเนื้อหาคงที่เก่าแก่ของพวกเขา เราใช้เพื่อทำให้สิ่งนี้สำเร็จโดยให้บัญชี ftp แก่ลูกค้าไปยังโดเมนอื่น (เช่นโดเมนลูกค้าคือ customer.com แต่พวกเขาเข้าถึงเนื้อหาแบบคงที่ผ่าน otherdomain.com/customerstatic)

ตอนนี้เราต้องการเพิ่มความปลอดภัยให้กับลูกค้าบัญชี SFTP ในเซิร์ฟเวอร์ลินุกซ์ของพวกเขา ฉันใช้ openssh / sftp-server ในสภาพแวดล้อมเชลล์ดังนั้นจึงไม่สามารถเข้าสู่ระบบหรือรันคำสั่งได้

ปัญหาคือโดยปกติไฟล์ระบบไฟล์ส่วนใหญ่จะเป็นค่าเริ่มต้น (drwxr-xr-x) ซึ่งหมายความว่าผู้ใช้จะสามารถอ่านเนื้อหาของไดเรกทอรีและอาจเป็นไฟล์บางไฟล์ ฉันไม่คิดว่าการเปลี่ยนระบบไฟล์ทั้งหมดเป็น -rwxr-x - x เป็นวิธีที่ฉลาดเพราะฉันไม่รู้ว่าไฟล์ระบบจำนวนเท่าใดจะต้องมีสิทธิ์ในการอ่าน

มีคนที่เคยเจอปัญหานี้ในอดีตหรือไม่ ถ้าคุณมีคุณสามารถสอนวิธี?

ขอบคุณ


คำถามที่ดีและคำตอบที่รัดกุม - ผู้ดำเนินรายการควรเปลี่ยนชื่อและเปลี่ยนเป็นคำถามที่ไม่ใช่วิกิ
MikeyB

ไม่สามารถยกเลิกคำถามได้ ขอโทษ
Jeff Atwood

คำตอบ:


22

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

บน Linux ฉันจะสนใจส่วนนี้ (การกำหนดค่า / etc / ssh / sshd_config):

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

ซึ่งหมายความว่าทุกคนในกลุ่มผู้ใช้ 'sftponly' จะถูก จำกัด ไปยังไดเรกทอรีบ้านของพวกเขา

ดูลิงก์เพิ่มเติมและอ่าน sshd_config manpage หวังว่าจะช่วย


นอกจากนี้คุณอาจต้องบอก OpenSSH ให้ใช้internal-sftpเมื่อไคลเอ็นต์ร้องขอระบบย่อย sftp ซึ่งอาจถูกตั้งค่าให้ใช้sftp-serverโปรแกรมภายนอก เมื่อต้องการทำสิ่งนี้ให้เพิ่มหรือเปลี่ยนบรรทัดSubsystem sftp internal-sftpในส่วนหลักของไฟล์กำหนดค่า (ไม่อยู่ใต้Matchส่วน)
เนท

Josh คุณเคยคิดวิธีที่จะทำให้สิ่งนี้ไม่ต้องการความเป็นเจ้าของรูทของโฮมไดเร็กตอรี่ของผู้ใช้หรือไม่?
Matt Simmons


1

เมื่อคุณพูดว่า "filesystems หลายคนโดยค่าเริ่มต้น 755 สิทธิ์" ที่จริงหมายถึงการเริ่มต้นumaskถูกตั้งไว้ที่ 022 คุณสามารถเปลี่ยนค่าเริ่มต้นนี้ (ไฟล์ใหม่) โดยการตั้งค่า umask ไป 027 ซึ่งจะทำให้สิทธิ์เริ่มต้น 750 หรือ ตั้ง umask เป็น 007 ซึ่งจะทำให้การอนุญาตเริ่มต้น 770


0

คุณอาจพิจารณาตั้งค่าเซิร์ฟเวอร์ OpenVZ จากนั้นสร้าง VM ftp / sftp 'container' แยกต่างหากสำหรับแต่ละ บริษัท สิ่งนี้ทำให้พวกเขาแยกจากกันและเมื่อคุณได้รับความสนุกจาก OpenVZ มันมีประโยชน์มากสำหรับสิ่งเล็ก ๆ เหล่านี้

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