Skip to content

Secure FTP

WannaDrunk edited this page Sep 23, 2021 · 1 revision

การทำ FTP ด้วย VSFTPD ให้ปลอดภัย

FTP เป็นโปรโตคอลที่ค่อนข้างไม่ค่อยปลอดภัยนัก หากการติดตั้งใช้งานไม่ได้วางแผนจัดการที่ดี หากไม่ได้มีความจำเป็นอย่างยิ่งยวดก็ควรหลีกเลี่ยงการใช้งาน

หากจำเป็นต้องใช้จริงๆ ก็ต้องทำระบบให้ปลอดภัยที่สุด จำกัดการเข้าถึงระบบ ซึ่งในบทความนี้จะใช้ chroot จำกัด user ให้เข้าได้แค่ home directory ของตัวเองเท่านั้น ไม่สามารถเปลี่ยนไป directory อื่น

สภาพแวดล้อม

  • Debian 10 ที่สามารถเข้าถึงได้ผ่านทาง ssh
  • ftp account name ftpuser
  • home directory /data/ftp/ftpuser
  • ftp server ที่ใช้เป็น vsftp

การติดตั้ง และตั้งค่า

  • การยังไม่ได้ติดตั้ง vsftpd ให้ทำการติดตั้ง
$ sudo apt update
$ sudo apt install vsftpd
  • เมื่อทำการติดตั้ง vsftpd เสร็จเรียบร้อย ก็ทำการตั้งค่าในไฟล์ /etc/vsftpd.conf โดยตั้งค่า ดังต่อไปนี้

    • write_enable=YES เปิดให้สามารถเขียนไฟล์ได้ หากต้องการใช้งานการ upload ไฟล์ข้อมูล
    • chroot_local_user=YES และ chroot_list_enable=YES เป็นการเปิด chroot ให้ ftp account ที่เข้าระบบ เห็นแต่ home directory ของตนเท่านั้น
    • chroot_list_file=/etc/vsftpd.chroot_list หาก option chroot ข้างต้นเป็น YES user ที่มีอยู่ชื่ออยู่ในไฟล์นี้จะสามารถเข้าถึงได้ทุก file/directory ซึ่งแนะนำว่าไม่ควรใส่ชื่อใดๆ ไว้

    ตัวอย่าง

    write_enable=YES
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list
    allow_writeable_chroot=YES
    
  • สร้างไฟล์เปล่า $ sudo touch /etc/vsftpd.chroot_list

  • เมื่อทำการแก้ไขตั้งค่าเรียบร้อย ก็ทำการ restart vsftpd service $ sudo systemctl restart vsftpd

  • จากนั้นทำการสร้าง ftp account พร้อมกับตั้ง home directory ตามที่ต้องการ

    $ sudo adduser --home /data/ftp/ftpuser ftpuser
  • หากมีการเปิดใช้งาน ssh ก็ต้องทำการ disable account นี้ให้ไม่สามารถใช้งาน ssh ได้ /etc/ssh/sshd_config

    DenyUsers ftpuser
    DenyGroups ftpuser
    
  • ทำการ restart sshd service $ sudo systemctl restart sshd

  • เป็นอันเสร็จสิ้นการติดตั้งและตั้งค่า ftp