ວິທີການຕິດຕັ້ງແລະ ກຳ ຫນົດຄ່າ 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.