ວິທີການຕິດຕັ້ງແລະ ກຳ ຫນົດຄ່າ FTP Server ໃນ Ubuntu


FTP (File Transfer Protocol) ແມ່ນໂປໂຕຄອນເຄືອຂ່າຍມາດຕະຖານທີ່ເກົ່າແກ່ແລະຖືກ ນຳ ໃຊ້ຫຼາຍທີ່ສຸດທີ່ໃຊ້ໃນການອັບໂຫລດ/ດາວໂຫລດເອກະສານລະຫວ່າງສອງຄອມພິວເຕີ້ຜ່ານເຄືອຂ່າຍ. ເຖິງຢ່າງໃດກໍ່ຕາມ, FTP ໂດຍຄວາມບໍ່ປອດໄພໃນເບື້ອງຕົ້ນ, ເພາະວ່າມັນສົ່ງຂໍ້ມູນຮ່ວມກັບຂໍ້ມູນປະ ຈຳ ຕົວຂອງຜູ້ໃຊ້ (ຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານ) ໂດຍບໍ່ຕ້ອງເຂົ້າລະຫັດ.

ຄຳ ເຕືອນ: ຖ້າທ່ານວາງແຜນທີ່ຈະໃຊ້ FTP, ພິຈາລະນາຕັ້ງຄ່າການເຊື່ອມຕໍ່ FTP ກັບ SSL/TLS (ຈະມີໃນບົດຄວາມຕໍ່ໄປ). ຖ້າບໍ່ດັ່ງນັ້ນ, ຄວນໃຊ້ FTP ທີ່ປອດໄພເຊັ່ນ SFTP.

ໃນບົດແນະ ນຳ ນີ້, ພວກເຮົາຈະສະແດງວິທີການຕິດຕັ້ງ, ກຳ ຫນົດແລະຮັກສາຄວາມປອດໄພຂອງເຄື່ອງແມ່ຂ່າຍ FTP (VSFTPD ຢ່າງເຕັມທີ່“ ປອດໄພຫຼາຍ FTP Daemon”) ໃນ Ubuntu ເພື່ອໃຫ້ມີຄວາມປອດໄພທີ່ມີປະສິດຕິພາບສູງຕໍ່ກັບຄວາມສ່ຽງຂອງ FTP.

ຂັ້ນຕອນທີ 1: ການຕິດຕັ້ງ VsFTP Server ໃນ Ubuntu

1. ທຳ ອິດ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງປັບປຸງບັນຊີລາຍຊື່ຊຸດຂອງລະບົບຊຸດແລະຕິດຕັ້ງ VSFTPD package binary ດັ່ງຕໍ່ໄປນີ້:

$ sudo apt-get update
$ sudo apt-get install vsftpd

2. ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດແລ້ວ, ການບໍລິການຈະຖືກປິດໃຊ້ງານໃນເບື້ອງຕົ້ນ, ດັ່ງນັ້ນ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງເລີ່ມຕົ້ນດ້ວຍຕົນເອງໃນຊ່ວງເວລາທີ່ໃຊ້ເວລາແລະຍັງຊ່ວຍໃຫ້ມັນເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດຈາກເກີບລະບົບຕໍ່ໄປ:

------------- On SystemD ------------- 
# systemctl start vsftpd
# systemctl enable vsftpd

------------- On SysVInit ------------- 
# service vsftpd start
# chkconfig --level 35 vsftpd on

3. ຕໍ່ໄປ, ຖ້າທ່ານມີ UFW firewall ເປີດໃຊ້ງານ (ມັນບໍ່ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ) ໃນເຊີຟເວີ, ທ່ານຕ້ອງເປີດພອດ 21 ແລະ 20 ບ່ອນທີ່ FTP daemons ກຳ ລັງຟັງຢູ່, ເພື່ອໃຫ້ສາມາດເຂົ້າໃຊ້ບໍລິການ FTP ຈາກເຄື່ອງຫ່າງໄກສອກຫຼີກ, ຫຼັງຈາກນັ້ນຕື່ມ ກົດລະບຽບຂອງ firewall ໃໝ່ ດັ່ງຕໍ່ໄປນີ້:

$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw status

ຂັ້ນຕອນທີ 2: ການ ກຳ ຫນົດຄ່າແລະການຮັບປະກັນ Server VsFTP ໃນ Ubuntu

4. ດຽວນີ້ໃຫ້ເຮັດການຕັ້ງຄ່າບໍ່ຫຼາຍປານໃດເພື່ອຕັ້ງຄ່າແລະຮັບປະກັນເຄື່ອງແມ່ຂ່າຍ FTP ຂອງພວກເຮົາ, ກ່ອນອື່ນພວກເຮົາຈະສ້າງ ສຳ ຮອງຂອງເອກະສານ config ຕົ້ນສະບັບ /etc/vsftpd/vsftpd.conf ດັ່ງນັ້ນ:

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

ຕໍ່ໄປ, ໃຫ້ເປີດເອກະສານ config vsftpd.

$ sudo vi /etc/vsftpd.conf
OR
$ sudo nano /etc/vsftpd.conf

ເພີ່ມ/ດັດແປງຕົວເລືອກຕໍ່ໄປນີ້ດ້ວຍຄ່າເຫລົ່ານີ້:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. ດຽວນີ້ຕັ້ງຄ່າ VSFTPD ເພື່ອອະນຸຍາດ/ປະຕິເສດການເຂົ້າເຖິງ FTP ຂອງຜູ້ໃຊ້ໂດຍອີງໃສ່ແຟ້ມລາຍຊື່ຜູ້ໃຊ້ /etc/vsftpd.userlist.

ໃຫ້ສັງເກດວ່າໂດຍຄ່າເລີ່ມຕົ້ນ, ຜູ້ໃຊ້ທີ່ມີລາຍຊື່ໃນ userlist_file =/etc/vsftpd.userlist ຖືກປະຕິເສດການເຂົ້າສູ່ລະບົບດ້ວຍ userlist_deny = YES ທາງເລືອກຖ້າ userlist_enable = YES .

ແຕ່, ຕົວເລືອກ userlist_deny = NO ບິດຄວາມ ໝາຍ ຂອງການຕັ້ງຄ່າເລີ່ມຕົ້ນ, ສະນັ້ນພຽງແຕ່ຜູ້ໃຊ້ທີ່ມີຊື່ຂອງມັນຖືກລະບຸໄວ້ຢ່າງຊັດເຈນໃນ userlist_file =/etc/vsftpd.userlist ຈະຖືກອະນຸຍາດໃຫ້ເຂົ້າສູ່ລະບົບ FTP server.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

ສິ່ງທີ່ ສຳ ຄັນ: ເມື່ອຜູ້ໃຊ້ເຂົ້າສູ່ລະບົບ FTP server, ພວກມັນຖືກຈັດເຂົ້າໃນຄຸກທີ່ຖືກຂັງ, ນີ້ແມ່ນບັນດາຮາກຖານທ້ອງຖິ່ນທີ່ຈະເຮັດ ໜ້າ ທີ່ເປັນລະບົບເຮືອນຂອງພວກເຂົາ ສຳ ລັບ FTP session ເທົ່ານັ້ນ.

ຕໍ່ໄປ, ພວກເຮົາຈະພິຈາລະນາສອງສະຖານະການທີ່ເປັນໄປໄດ້ຂອງວິທີການ ກຳ ນົດໄດເລກະທໍລີທີ່ຖືກຂັງ (ຮາກໃນທ້ອງຖິ່ນ), ດັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງລຸ່ມນີ້.

6. ໃນຈຸດນີ້, ໃຫ້ເພີ່ມ/ດັດແປງ/ບໍ່ສະແດງຕົວເລືອກສອງຢ່າງຕໍ່ໄປນີ້ເພື່ອ ຈຳ ກັດຜູ້ໃຊ້ FTP ໃນລາຍການ ໜ້າ ທຳ ອິດຂອງພວກເຂົາ.

chroot_local_user=YES
allow_writeable_chroot=YES

ຕົວເລືອກ chroot_local_user = YES ທີ່ ສຳ ຄັນ ໝາຍ ຄວາມວ່າຜູ້ໃຊ້ໃນທ້ອງຖິ່ນຈະຖືກຈັດເຂົ້າໃນຄຸກ chroot, ລາຍຊື່ເຮືອນຂອງພວກເຂົາໂດຍຄ່າເລີ່ມຕົ້ນຫຼັງຈາກເຂົ້າສູ່ລະບົບ.

ແລະພວກເຮົາຕ້ອງເຂົ້າໃຈເຊັ່ນກັນວ່າ VSFTPD ບໍ່ອະນຸຍາດໃຫ້ໄດເລກະທໍລີຄຸກ chroot ສາມາດຂຽນໄດ້, ໂດຍຄ່າເລີ່ມຕົ້ນຍ້ອນເຫດຜົນດ້ານຄວາມປອດໄພ, ຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາສາມາດໃຊ້ຕົວເລືອກ allow_writeable_chroot = YES ເພື່ອປິດການຕັ້ງຄ່ານີ້.

ບັນທຶກເອກະສານແລະປິດມັນ. ຫຼັງຈາກນັ້ນພວກເຮົາຕ້ອງເລີ່ມການບໍລິການ VSFTPD ສຳ ລັບການປ່ຽນແປງຂ້າງເທິງເພື່ອໃຫ້ມີຜົນ:

------------- On SystemD ------------- 
# systemctl restart vsftpd

------------- On SysVInit ------------- 
# service vsftpd restart

ຂັ້ນຕອນທີ 3: ການທົດສອບ VsFTP Server ໃນ Ubuntu

7. ຕອນນີ້ພວກເຮົາຈະທົດສອບ server server ໂດຍການສ້າງຜູ້ໃຊ້ FTP ດ້ວຍ ຄຳ ສັ່ງ useradd ດັ່ງຕໍ່ໄປນີ້:

$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
$ sudo passwd aaronkilik

ຈາກນັ້ນ, ພວກເຮົາຕ້ອງບອກຊື່ຜູ້ໃຊ້ aaronkilik ຢ່າງຊັດເຈນໃນເອກະສານ /etc/vsftpd.userlist ດ້ວຍ ຄຳ ສັ່ງ echo ແລະ tee ຄຳ ສັ່ງດັ່ງລຸ່ມນີ້:

$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist

8. ບັດນີ້ມັນເຖິງເວລາແລ້ວທີ່ຈະທົດສອບການຕັ້ງຄ່າຂ້າງເທິງຂອງພວກເຮົາທີ່ເຮັດວຽກໄດ້ຕາມຄວາມຕ້ອງການ. ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການທົດສອບການເຂົ້າສູ່ລະບົບທີ່ບໍ່ລະບຸຊື່; ພວກເຮົາສາມາດເຫັນໄດ້ຢ່າງຊັດເຈນຈາກຜົນໄດ້ຮັບຂ້າງລຸ່ມນີ້ວ່າການເຂົ້າສູ່ລະບົບໂດຍບໍ່ລະບຸຊື່ແມ່ນບໍ່ອະນຸຍາດໃນ FTP server:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. ຕໍ່ໄປ, ໃຫ້ທົດສອບຖ້າຜູ້ໃຊ້ທີ່ບໍ່ໄດ້ລະບຸໄວ້ໃນເອກະສານ /etc/vsftpd.userlist ຈະໄດ້ຮັບອະນຸຍາດເຂົ້າສູ່ລະບົບ, ເຊິ່ງມັນບໍ່ແມ່ນຄວາມຈິງຈາກຜົນໄດ້ຮັບທີ່ຢູ່ຕໍ່ໄປນີ້:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. ຕອນນີ້ພວກເຮົາຈະ ດຳ ເນີນການທົດສອບຂັ້ນສຸດທ້າຍເພື່ອ ກຳ ນົດວ່າຜູ້ໃຊ້ທີ່ມີລາຍຊື່ຢູ່ໃນແຟ້ມເອກະສານ /etc/vsftpd.userlist ແມ່ນຖືກຈັດໃສ່ໃນບັນຊີລາຍຊື່ບ້ານຂອງລາວຫຼັງຈາກເຂົ້າສູ່ລະບົບ. ແລະນີ້ແມ່ນຄວາມຈິງຈາກຜົນໄດ້ຮັບຂ້າງລຸ່ມນີ້:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

ຄຳ ເຕືອນ: ການຕັ້ງຄ່າຕົວເລືອກ allow_writeable_chroot = YES ສາມາດເປັນອັນຕະລາຍຫຼາຍ, ມັນມີຜົນສະທ້ອນດ້ານຄວາມປອດໄພທີ່ເປັນໄປໄດ້, ໂດຍສະເພາະຖ້າຜູ້ໃຊ້ມີການອະນຸຍາດໃຫ້ອັບໂຫລດຫຼືຫຼາຍກວ່ານັ້ນ, ການເຂົ້າເຖິງຫອຍ. ໃຊ້ມັນຖ້າທ່ານຮູ້ຢ່າງແນ່ນອນວ່າທ່ານ ກຳ ລັງເຮັດຫຍັງຢູ່.

ພວກເຮົາຄວນສັງເກດວ່າຜົນກະທົບດ້ານຄວາມປອດໄພເຫຼົ່ານີ້ບໍ່ແມ່ນສະເພາະກັບ VSFTPD, ພວກມັນຍັງສາມາດສົ່ງຜົນກະທົບຕໍ່ daemons ອື່ນຂອງ FTP ທີ່ສະ ເໜີ ໃຫ້ຜູ້ໃຊ້ໃນທ້ອງຖິ່ນເຂົ້າໄປໃນຄຸກ chroot.

ຍ້ອນເຫດຜົນດັ່ງກ່າວ, ໃນພາກຂ້າງລຸ່ມນີ້, ພວກເຮົາຈະອະທິບາຍວິທີການທີ່ມີຄວາມປອດໄພກວ່າໃນການຕັ້ງຄ່າໄດເລກະທໍລີຮາກທີ່ບໍ່ສາມາດຂຽນໄດ້ ສຳ ລັບຜູ້ໃຊ້.

ຂັ້ນຕອນທີ 4: ຕັ້ງຄ່າໄດເລກະທໍລີ ໜ້າ ທຳ ອິດຂອງຜູ້ໃຊ້ FTP ໃນ Ubuntu

11. ດຽວນີ້ເປີດເອກະສານການຕັ້ງຄ່າ VSFTPD ອີກຄັ້ງ ໜຶ່ງ.

$ sudo vi /etc/vsftpd.conf
OR
$ sudo nano /etc/vsftpd.conf

ແລະປະກອບ ຄຳ ເຫັນໃສ່ຕົວເລືອກທີ່ບໍ່ປອດໄພໂດຍໃຊ້ຕົວອັກສອນ # ທີ່ສະແດງຢູ່ດ້ານລຸ່ມ:

#allow_writeable_chroot=YES

ຕໍ່ໄປ, ສ້າງໄດເລກະທໍລີຮາກຂັ້ນທ້ອງຖິ່ນ ສຳ ລັບຜູ້ໃຊ້ (aaronkilik, ຂອງເຈົ້າອາດຈະບໍ່ຄືກັນ) ແລະ ກຳ ນົດສິດທີ່ຕ້ອງການໂດຍການປິດການອະນຸຍາດການຂຽນໃຫ້ຜູ້ໃຊ້ອື່ນທັງ ໝົດ ເຂົ້າໃນໄດເລກະທໍລີນີ້:

$ sudo mkdir /home/aaronkilik/ftp
$ sudo chown nobody:nogroup /home/aaronkilik/ftp
$ sudo chmod a-w /home/aaronkilik/ftp

12. ຫຼັງຈາກນັ້ນ, ສ້າງໄດເລກະທໍລີພາຍໃຕ້ຮາກທ້ອງຖິ່ນໂດຍມີສິດທີ່ ເໝາະ ສົມເຊິ່ງຜູ້ໃຊ້ຈະເກັບແຟ້ມເອກະສານຂອງລາວ:

$ sudo mkdir /home/aaronkilik/ftp/files
$ sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
$ sudo chmod -R 0770 /home/aaronkilik/ftp/files/

ຫລັງຈາກນັ້ນ, ຕື່ມ/ດັດແປງຕົວເລືອກຕ່າງໆດ້ານລຸ່ມໃນເອກະສານ config VSFTPD ດ້ວຍຄ່າທີ່ສອດຄ້ອງກັນ:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

ບັນທຶກເອກະສານແລະປິດມັນ. ແລະເລີ່ມການບໍລິການ VSFTPD ດ້ວຍການຕັ້ງຄ່າທີ່ຜ່ານມາ:

------------- On SystemD ------------- 
# systemctl restart vsftpd

------------- On SysVInit ------------- 
# service vsftpd restart

13. ດຽວນີ້, ໃຫ້ກວດເບິ່ງຄັ້ງສຸດທ້າຍແລະຮັບປະກັນວ່າໄດເລກະທໍລີຮາກຂອງຜູ້ໃຊ້ແມ່ນລະບົບ FTP ທີ່ພວກເຮົາສ້າງຂື້ນໃນລະບົບ Home ຂອງລາວ.

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

ນັ້ນແມ່ນມັນ! ຢ່າລືມແບ່ງປັນຄວາມຄິດເຫັນຂອງທ່ານກ່ຽວກັບ ຄຳ ແນະ ນຳ ນີ້ຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້ຫລືອາດຈະໃຫ້ຂໍ້ມູນ ສຳ ຄັນຕ່າງໆທີ່ກ່ຽວຂ້ອງກັບຫົວຂໍ້ພວກເຮົາ.

ສຸດທ້າຍ, ຢ່າພາດບົດຄວາມຕໍ່ໄປຂອງພວກເຮົາ, ເຊິ່ງພວກເຮົາຈະອະທິບາຍວິທີການຮັບປະກັນເຄື່ອງແມ່ຂ່າຍ FTP ໂດຍໃຊ້ການເຊື່ອມຕໍ່ SSL/TLS ໃນ Ubuntu 16.04/16.10, ຈົນກ່ວານັ້ນ, ສະເຫມີຕິດຕາມ TecMint.