การติดตั้ง FTP Server บน Nipa.Cloud

FTP Server Installation

FTP ย่อมากจาก File Transfer Protocol คือ โปรโตคอลสำหรับการถ่ายโอนไฟล์ระหว่างเครื่องคอมพิวเตอร์ อย่างการถ่ายโอนระหว่าง ไคลเอนท์ (client) กับเครืองแม่ข่าย (server) โดยทั้ง 2 เครื่องจะสื่อสารกันผ่านพอร์ต 21 โดยผู้ใช้จะต้องมี username และ password ก่อน อีกทั้งยังต้องมี โปรแกรมสำเร็จรูป เช่น Filezilla

FTP แบ่งเป็น 2 ส่วน

  1. FTP server  เป็นโปรแกรมที่ถูกติดตั้งไว้ที่เครื่องเซิฟเวอร์ ทำหน้าที่ให้บริการ FTP หากมีการเชื่อมต่อจากไคลแอนเข้าไป
  2. FTP client  เป็นโปรแกรม FTP ที่ถูกติดตั้งในเครื่องคอมพิวเตอร์ของ user ทั่วๆไป ทำหน้าที่เชื่อมต่อไปยัง FTP server และทำการอัพโหลด ,ดาวน์โหลดไฟล์ หรือ จะสั่งแก้ไขชื่อไฟล์, ลบไฟล์ และเคลื่อนย้ายไฟล์ก็ได้เช่นกัน

ขั้นตอนการเตรียม instance

  1. สร้าง Security Group สำหรับ FTP
  • คลิกไปที่ Cloud Firewall ทางด้านซ้ายเพื่อเข้าไปที่หน้า Cloud Firewall
  • คลิกปุ่ม ADD เพื่อสร้าง Security Group ใหม่ กรอกชื่อ แล้วคลิก COMFIRM
  • เมื่อได้ Security Group แล้ว เลือกไปที่ Security Group ที่สร้างแล้วคลิก ADD RULES ในฝั่ง ingress
  • เลือกไปที่ CUSTOM แล้ว เลือก CUSTOM TCP จากนั้นเลือก Port Range และกรอก port 2 ช่วง คือ
    • 20 – 21 สำหรับยการเชื่อมต่อ FTP
    • 40000 – 50000 สำหรับการโอนถ่ายไฟล์

** กรอกแล้วคลิก CONFIRM ในทุกช่วง แล้วจึงเพิ่มช่วงถัดไป

  • จากนั้น เมื่อสร้าง instance ให้เลือก Security Group ที่สร้างไว้ โดยในตัวอย่างนี้ใช้ชื่อว่า FTPSecG

จากนั้นเข้าสู่ขั้นตอนการติดตั้ง FTP Server

 

ขั้นตอนการติดตั้ง FTP Server

  1. Update package list
apt-get update
apt-get install vsftpd
Sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
  1. Enable Firewall
ufw allow 22/tcp

ufw allow 20:21/tcp

ufw allow 40000:5000/tcp

ufw enable

ufw status

* กำหนดให้ allow 22 เพราะเดิม ufw ไม่ allow port 22 ให้

* สามารถเรียกดูสถานะของ ufw ด้วยคำสั่ง

* ufw status ใช้สำหรับเรียกดูสถานะของ ufw

  1. Prepare user directory
sudo adduser test

    หลังจากสร้าง user แล้ว จะต้องกำหนด password ให้ user ด้วย

    สร้าง ftp directory ตั้งค่าความเป็นเจ้าของและลบสิทธิ์ด้วยคำสั่งต่อไปนี้

sudo mkdir /home/test/ftp/

sudo chown nobody:nogroup /home/test/ftp/

sudo chmod a-w /home/test/ftp/

    

    ทดสอบสิทธิ์

sudo ls -al /home/test/ftp

    สร้าง directory เพื่อรองรับไฟล์ที่อัพโหลดขึ้นมา

sudo mkdir /home/test/ftp/files
sudo chown test:test /home/test/ftp/files

  1. ตั้งค่า FTP Access
vi /etc/vsftpd.conf
  • Uncomment บรรทัดต่อไปนี้
write_enable=YES
  • หากมีแผนใช้ ftp server เพียงอย่างเดียว เราต้องกำหนดรายการผู้ใช้สำหรับ ftp ด้วยการเพิ่มบรรทัดนี้ไปในไฟล์ /etc/vsftpd.conf
userlist_enable=YES

userlist_file=/etc/vsftpd.userlist

userlist_deny=NO


  • กำหนดให้ FTP เข้าใช้งานได้จาก ipv4 หรือ ipv6
listen=YES

listen_ipv6=NO

***ถ้าต้องการเปิดให้เข้าจาก ipv6 ให้เปลี่ยนค่าของ listen_ipv6 เป็น YES

 

  • เมื่อต้องการเพิ่ม user เข้าไปที่ local_root directory ให้เพิ่มบรรทัดนี้เข้าไป
user_sub_token=$USER

local_root=/home/$USER/ftp

  • กำหนดพอร์ตสำหรับการถ่ายโอนไฟล์( เป็น high port ) และกำหนด ip address สำหรับการเปิด connection ในการสร้างพอร์ตใหม่
pasv_min_port=40000

pasv_min_port=50000

pasv_address= < ip address>


  • เพิ่ม user เข้าไปที่ไฟล์ /etc/vsftpd.userlist
echo "test" | sudo tee -a /etc/vsftpd.userlist

systemctl restart vsftpd

  1. ปิดการเข้าถึงผ่าน SSH สำหรับ user ที่ใช้ FTP ( ทางเลือกเพื่อจำกัดการเข้าถึง )
sudo vi /bin/ftponly
  • เพิ่มบรรทัดต่อไปนี้เข้าไปในไฟล์
#!/bin/sh
echo "This account is limited to FTP access only."

  • รันคำสั่งต่อไปนี้
sudo chmod a+x /bin/ftponly
sudo vi /etc/shells
  • เพิ่มบรรทัดนี้ไปที่ด้านล่างของไฟล์
/bin/ftponly

แก้ไข user ให้เข้าใช้ได้เฉพาะ FTP
sudo usermod test -s /bin/ftponly
  • ทดสอบ login ผ่าน SSH
ssh test@10.148.0.1 

จะปรากฏ error ดังนี้

This account is limited to FTP access only.

Connection to 10.148.0.1 closed.

สามารถเข้าใช้งาน FTP ได้โดย

ftp -p test@10.148.0.1

หากเป็น windows สามารถ เข้าใช้งานผ่าน Filezilla และกรอก host ,username, password ตามที่กำหนดไว้ และพอร์ต 21 สำหรับ FTP

Was this article helpful?

No 0

About the Author