1.ติดตั้ง vsftpd Install vsftpd
ใช้คำสั่ง
sudo apt-get update
sudo apt-get install vsftpd
ตรวจสอบการทำงานของ vsftpd
sudo service vsftpd status
output
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e
Active: active (running) since พ. 2021-09-08 10:23:12 +07; 5min ago
Process: 24388 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited,
Main PID: 24391 (vsftpd)
CGroup: /system.slice/vsftpd.service
├─24391 /usr/sbin/vsftpd /etc/vsftpd.conf
├─24397 /usr/sbin/vsftpd /etc/vsftpd.conf
└─24399 /usr/sbin/vsftpd /etc/vsftpd.conf
ก.ย. 08 10:23:12 server5-dell systemd[1]: Starting vsftpd FTP server...
ก.ย. 08 10:23:12 server5-dell systemd[1]: Started vsftpd FTP server.
2. Configure Firewall
ตรวจสอบว่า firewall มีการเปิดอยู่หรือเปล่า
sudo ufw status
ถ้าเปิดอยู่จะเห็น status :active และอะไรบ้างที่ให้ใช้งานได้จะต้องมี ตัวที่ทำเครื่องหมายแดงไว้
Status: active
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
22 ALLOW Anywhere
3306,4444,4567,4568/tcp ALLOW Anywhere
4567/udp ALLOW Anywhere
80 ALLOW Anywhere
80/tcp ALLOW Anywhere
Samba ALLOW Anywhere
20/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
990/tcp ALLOW Anywhere
40000:50000/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
3306,4444,4567,4568/tcp (v6) ALLOW Anywhere (v6)
4567/udp (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
Samba (v6) ALLOW Anywhere (v6)
20/tcp (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
990/tcp (v6) ALLOW Anywhere (v6)
40000:50000/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
ถ้าไม่มีให้ใช้คำสั่ง
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
3. สร้าง FTP User (ในตัวอย่างชื่อ "ftpuser")
sudo adduser ftpuser
แก้ไข config ของ ssh ให้สามารถใช้งานได้กับ user ของ ftp ที่เราสร้างขึ้น
sudo nano /etc/ssh/sshd_config
เพิ่มบรรทัดล่างสุดด้วย
DenyUsers ftpuser
บันทึกและ restart service ssh
sudo service sshd restart
4. กำหนด Directory Permissions(ตัวอย่างกำหนดให้เป็นห้อง /var/www/html/ftp_file)
คุณจะต้องตั้งค่าโฟลเดอร์เหนือรูทเอกสารเป็นโฮมไดเร็กทอรีสำหรับ ftpuser มา 1 step (ห้อง ftp_file เราอยู่ใน html อีกที)
sudo usermod -d /var/www/html ftpuser
และตั้งค่าความเป็นเจ้าของ directory หลักของ user
sudo chown ftpuser:ftpuser /var/www/html
5. Configure vsftpd
สำรองไพล์ config เดิมด้วยการ copyfile เก็บไว้ก่อน
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
แก้ไข config
sudo nano /etc/vsftpd.conf
ส่วนใหญ่ค่า default ก็จะตามนี้(จะอยู่คนละที่กันให้เลื่อนหาดูให้ได้ตามนี้)
write_enable=YES
chroot_local_user=YES
local_umask=022
force_dot_files=YES
pasv_min_port=40000
pasv_max_port=50000
และสำคัุญสุดบรรทัดนี้ให้เพิ่มเข้าไปท้ายสุด(ถ้าไม่เพิ่มจะ login error จะพ้องเรื่อง chroot)
allow_writeable_chroot=YES
บันทึกและ restart service
sudo systemctl restart vsftpd
6. ทดสอบ ftp
ด้วยคำสั่ง
ftp -p 192.168.2.5
Connected to 192.168.2.5.
220 (vsFTPd 3.0.3)
Name (192.168.2.5:server5):(ใส่ftpuser ที่เราตั้งไว้ ในที่นี้คือ "ftpuser")
ใส่รหัสผ่าน
331 Please specify the password.
Password:
ถ้าใส่ผิด
530 Login incorrect.
Login failed.
ถ้าถูกต้อง
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ทดลอง ftp ผ่านโปรแกรม filezilla ดู
หมายเหตุ
การกำหนดสิทธิ์ให้ folder หรือ file ใดๆภายใต้ ftp root folder ให้กำหนดใน filezilla