PlusMagi's Blog By Pitt Phunsanit Linux,Network,Security Linux: การติดตั้ง SFTP ( Secure File Transfer Protocol )

Linux: การติดตั้ง SFTP ( Secure File Transfer Protocol )

การติดตั้ง SFTP ( Secure File Transfer Protocol ) บน Ubuntu Server โดยใช้ Port 1234 แทน Port 22 มาตรฐาน จะช่วยเพิ่มความปลอดภัยจากการถูกสุ่มโจมตี ( Brute Force Attack ) ได้ดีขึ้นครับ นี่คือขั้นตอนการติดตั้งและตั้งค่าอย่างละเอียด


การสำรองข้อมูลและการเตรียมตัว

ก่อนแก้ไขไฟล์ระบบที่สำคัญ แนะนำให้ทำ Snapshot หรือ Backup ตัวเครื่องไว้ก่อน เพราะหากตั้งค่าผิดพลาดอาจทำให้คุณหลุดจากการเชื่อมต่อ SSH ได้


แก้ไข Port การทำงานของ SSH

เนื่องจาก SFTP ทำงานผ่านโปรโตคอล SSH เราจึงต้องเปลี่ยน Port ที่ไฟล์คอนฟิกหลัก

  1. ปิดไฟล์ SSH Config
    sudo nano /etc/ssh/sshd_config
  2. ค้นหาบรรทัด #Port 22 ให้ลบ # ออกแล้วเปลี่ยนเป็น
    Port 1234

จำกัดสิทธิ์ผู้ใช้ให้ใช้ได้เฉพาะ SFTP ( Chroot Jail )

เพื่อความปลอดภัย เราควรตั้งค่าให้ User เข้าถึงได้เฉพาะโฟลเดอร์ที่กำหนด และไม่สามารถใช้คำสั่ง Shell อื่น ๆ ได้

  1. เพิ่มคำสั่งต่อไปนี้ที่ ท้ายไฟล์ /etc/ssh/sshd_config
    Match Group sftp_users
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    
  2. บันทึกและออกจากโปรแกรม

สร้างกลุ่มและผู้ใช้งานสำหรับ SFTP

  1. สร้างกลุ่มสำหรับผู้ใช้ SFTP
    sudo addgroup sftp_users
  2. สร้างผู้ใช้ใหม่ ( สมมติชื่อ sftpuser )
    sudo adduser sftpuser
  3. เพิ่มผู้ใช้เข้ากลุ่ม
    sudo usermod -G sftp_users sftpuser

จัดการสิทธิ์การเข้าถึงโฟลเดอร์ ( Permission )

เพื่อให้ระบบ Chroot ทำงานได้ โฟลเดอร์ Home ของ User ต้องมีเจ้าของเป็น root เท่านั้น

  1. ตั้งค่าเจ้าของโฟลเดอร์
    sudo chown root:root /home/sftpuser
    sudo chmod 755 /home/sftpuser
  2. สร้างโฟลเดอร์สำหรับอัปโหลดไฟล์ ( เนื่องจากโฟลเดอร์หลัก root เป็นเจ้าของ ทำให้ User เขียนไฟล์ลงไปตรง ๆ ไม่ได้ )
    sudo mkdir /home/sftpuser/uploads
    sudo chown sftpuser:sftp_users /home/sftpuser/uploads

ตั้งค่า Firewall และ Restart บริการ

อย่าลืมเปิด Port 1234 ที่ Firewall ก่อนรีสตาร์ท มิฉะนั้นคุณจะเชื่อมต่อไม่ได้

  1. เปิด Port 1234
    sudo ufw allow 1234/tcp
  2. ตรวจสอบความถูกต้องของ Config
    sudo sshd -t
    ( ถ้าไม่มีข้อความ Error ขึ้นมา แสดงว่าใช้ได้ )
  3. Restart บริการ SSH
    sudo systemctl restart ssh

วิธีการเชื่อมต่อ

เมื่อติดตั้งเสร็จแล้ว คุณสามารถเชื่อมต่อผ่านโปรแกรมอย่าง FileZilla หรือ WinSCP โดยระบุรายละเอียดดังนี้

  • Host: sftp://your_server_ip
  • Username: sftpuser
  • Port: 1234

ข้อควรระวัง: หลังจากเปลี่ยน Port แล้ว การรีโมทเข้าหน้าจอ Terminal ผ่าน SSH ครั้งต่อไป ต้องระบุ Port ใหม่ด้วยเสมอ เช่น
ssh -p 1234 user@ip_address


อ่านเพิ่มเติม

Leave a Reply