ทางเลือกที่ปลอดภัยสำหรับ FTP คืออะไร? [ปิด]


22

เรื่องราวของ Hacker Newsเป็นเรื่องเกี่ยวกับข้อเสียของ FTP เหตุผลเดียวที่ฉันอาจตั้งค่า FTP คือง่าย

ฉันรู้และใช้scpไปแล้ว แต่บางครั้งฉันต้องการแบ่งปันไฟล์กับใครบางคนโดยไม่ให้พวกเขาsshเข้าถึงเซิร์ฟเวอร์ของฉัน ฉันต้องการให้พวกเขาสามารถอัปโหลดและดาวน์โหลดไฟล์ แต่ไม่มีอะไรอื่นและฉันต้องการ จำกัด พวกเขาในไดเรกทอรีเดียว sshฉันยังต้องการการเชื่อมต่อของพวกเขาที่จะได้รับการเข้ารหัสเช่น

FTP มีคุณสมบัติใดบ้างที่ตรงกับเกณฑ์เหล่านี้


2
คุณสามารถใช้scp ได้โดยไม่ต้องใช้ssh : serverfault.com/questions/354615/allow-sftp-but-disallow-ssh
Stone

1
ฉันจะไม่รบกวนการอ่านบทความนั้น แต่ควรจำไว้ว่า FTP ถูกออกแบบมาเพื่อใช้ในเครือข่ายปิด (แล็บบนชั้นบนถึง / จากเซิร์ฟเวอร์ในชั้นใต้ดิน) ดังนั้นความปลอดภัยจึงไม่เคยพิจารณา มันน่าประหลาดใจที่ยังคงมีการใช้งานบนเครือข่ายสาธารณะ
John Gardeniers

1
บางคนอาจเถียง ftp ไม่ได้ถูกออกแบบเลย แต่วิวัฒนาการมาจากไอเดียที่คิดโดยหลาย ๆ คนที่สร้างซอฟต์แวร์สำหรับการถ่ายโอนไฟล์นานก่อนที่ความสนิทจะกลายเป็นทรัพย์สินที่สังเกตได้สำหรับเครือข่ายเมื่อการควบคุมการเข้าถึงเกิดขึ้นกับประตูล็อค
Eroen

คำตอบ:


7

Proftpd มีเซิร์ฟเวอร์ sftp ในตัวที่จะช่วยให้คุณแยกผู้ใช้ออกจาก sshd อย่างสมบูรณ์เพื่อวัตถุประสงค์ในการถ่ายโอนไฟล์ คุณสามารถตั้งค่าเพื่อที่จะใช้ไฟล์ passwd ที่แยกจากกันอย่างสมบูรณ์เพื่อแยกไฟล์เหล่านั้นออกไปอีก (มันยากที่จะเข้าสู่ระบบด้วย ssh และแยก chroot หากคุณไม่มีผู้ใช้ใน / etc / passwd .. .)

proftpd ยังช่วยให้คุณสามารถ chroot และแยกผู้ใช้ sftp ไปยังชุดของไดเรกทอรีได้อย่างง่ายดาย

เราทำสิ่งนี้:

LoadModule mod_sftp.c

<VirtualHost 10.1.1.217>

    ServerName  "ftp.example.com"

    # from http://www.proftpd.org/docs/howto/NAT.html
    MasqueradeAddress   1.2.3.4
    PassivePorts 27001 27050

    UseSendfile off

    ExtendedLog         /var/log/proftpd/access.log WRITE,READ default
    ExtendedLog         /var/log/proftpd/auth.log AUTH auth

    AuthUserFile /etc/proftpd/AuthUsersFile
    AuthOrder           mod_auth_file.c 

    <IfModule mod_sftp.c>
        Port 10022
    SFTPAuthorizedUserKeys file:/etc/proftpd/ssh_authorized_keys/%u
        SFTPEngine On
        SFTPLog /var/log/proftpd/sftp.log
        SFTPHostKey /etc/ssh/proftpd-ssh_host_rsa_key
        SFTPHostKey /etc/ssh/proftpd-ssh_host_dsa_key
        MaxLoginAttempts 6
    </IfModule>
</VirtualHost>

1
เพื่อช่วย newbie ถ้า OP ต้องการความช่วยเหลือในการตั้งค่านี้ฉันมีการสอนพื้นฐานอย่างสมบูรณ์ที่นี่: csrdu.org/nauman/2011/02/13/…
recluze

3

ฉันจะใช้WebDavกับเซิร์ฟเวอร์ที่เปิดใช้งาน https! การรับรองความถูกต้องนั้นจะยึดตามแบบแผนการอนุญาต http มาตรฐาน คู่มือการตั้งค่า WebDAV กับ Apache สามารถพบได้ที่นี่แล้วมันเป็นสิ่งจำเป็นเท่านั้นที่จะนำทรัพยากรที่อยู่เบื้องหลัง https และที่นี่ผมพบว่าคำอธิบายที่ดีวิธีการทำ ว่า


เมื่อใช้ภาษาที่นี่คุณอาจเชื่อมโยงกับบทความภาษาอังกฤษเป็นอย่างน้อย
John Gardeniers

ฮ่าฮ่าขอโทษไม่ได้ตระหนักถึงความผิดพลาดนั้น ขอบคุณสำหรับการแก้ไข!
เชื่อมโยง

1

คุณไม่ได้ระบุข้อกำหนดว่า "ฟรี" ดังนั้นฉันจะทิ้งแพ็คเกจระบบขนส่งมวลชนเป็นกลุ่ม อาจเป็น overkill เล็กน้อยสำหรับคนส่วนใหญ่และอยู่นอกช่วงราคาของพวกเขา แต่ชุดคุณลักษณะไม่น่าประหลาดใจ รับเซิร์ฟเวอร์ระบบขนส่งมวลชนตัวที่สองและสว่างขึ้นระบบอัตโนมัติและคุณกำลังย้ายไฟล์บางไฟล์อย่างรวดเร็ว


0

คุณสามารถตั้งค่าsftpที่ใช้ในโหมดเพื่อที่คล้ายกันsshftp

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


0

คุณสามารถใช้ pure-ftpd พร้อมการเข้ารหัส TLS ที่เปิดใช้งาน การกำหนดค่านั้นง่ายมากหากต้องการเปิดใช้งานตัวเลือกการเข้ารหัส TLS ที่ไม่ใส่เครื่องหมายในไฟล์กำหนดค่า (หนึ่งบรรทัดเท่านั้น :)) กำหนดค่าไคลเอนต์ของคุณเพื่อเชื่อมต่อผ่านทาง ftps และนั่นคือ (คุณต้องจำไว้ว่าไคลเอ็นต์ ftp ไม่รองรับ ftps ทั้งหมด)


-1

คุณสามารถเปิดใช้งานและดาวน์โหลดด้วย rsync บน ssh โดยไม่อนุญาตให้เข้าสู่ระบบโดยการตั้งค่า rsync เป็นเปลือกเข้าสู่ระบบสำหรับผู้ใช้ สิ่งนี้ช่วยให้สารพัดของ ssh รวมถึงการเข้าสู่ระบบใบรับรองการเข้ารหัสและการดำเนินการอนุญาตระบบไฟล์มาตรฐานในขณะที่ไม่เปิดใช้งานบัญชีเชลล์ (เนื่องจากบัญชีจะไม่มีเชลล์ แต่ rsync =)


แล้วจะปลอดภัยอย่างไร? ยังคงชัดเจนอยู่ ...
EEAA

ขึ้นอยู่กับว่าคุณจะตั้งค่าอย่างไร วิธีทั่วไป (วิธีเดียวที่ฉันเคยเห็นมาแล้ว) คือการใช้ ssh และการตั้งค่า rsync เป็นเชลล์ล็อกอินหรือ (สำหรับการเข้าถึงรูท) ssh เฉพาะคำสั่ง certs
Eroen

1
Rsync เมื่อใช้บริการ (ตามที่คุณแนะนำในคำตอบ) ไม่มีการเข้ารหัส แน่นอนว่าไม่ใช่กรณีที่มี rsync + ssh คุณสามารถแก้ไขคำตอบของคุณเพื่อให้ความหมายของคุณชัดเจนยิ่งขึ้น
EEAA

การเปลี่ยนแปลงเกิดขึ้น (ในกรณีที่มีคนพบความคิดเห็นข้างต้นไม่เหมาะสม)
Eroen

แม้ว่ามันจะไม่ได้ถูกถาม แต่ก็คุ้มค่าที่จะกล่าวถึงแม้ว่าจะมีอินเตอร์เฟสจำนวนมากที่ใช้งานง่ายสำหรับโปรโตคอล FTP และ FTP ที่เหมือนกัน แต่โดยส่วนตัวแล้วฉันไม่รู้จัก rsync หากผู้ใช้ที่ตั้งใจไว้ไม่ใช่ด้านเทคนิคที่อาจเป็นปัญหา
John Gardeniers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.