ວິທີການຕິດຕັ້ງ, ການຕັ້ງຄ່າແລະຄວາມປອດໄພຂອງເຊີຟເວີ FTP ໃນ CentOS 7 - [ຄູ່ມືທີ່ສົມບູນແບບ]
FTP (File Transfer Protocol) ແມ່ນເຄື່ອງມືມາດຕະຖານແບບດັ້ງເດີມແລະຖືກ ນຳ ໃຊ້ຢ່າງກວ້າງຂວາງ ສຳ ລັບການໂອນໄຟລ໌ລະຫວ່າງເຊີຟເວີແລະລູກຄ້າຜ່ານເຄືອຂ່າຍ, ໂດຍສະເພາະບ່ອນທີ່ບໍ່ມີການກວດສອບຄວາມ ຈຳ ເປັນ (ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ບໍລິຈາກເງິນບໍ່ເຊື່ອມຕໍ່ກັບເຊີບເວີ). ພວກເຮົາຕ້ອງເຂົ້າໃຈວ່າ FTP ບໍ່ປອດໄພໂດຍຄ່າເລີ່ມຕົ້ນ, ເພາະວ່າມັນສົ່ງຂໍ້ມູນຄວາມສາມາດຂອງຜູ້ໃຊ້ແລະຂໍ້ມູນໂດຍບໍ່ຕ້ອງເຂົ້າລະຫັດ.
ໃນຄູ່ມືນີ້, ພວກເຮົາຈະອະທິບາຍຂັ້ນຕອນໃນການຕິດຕັ້ງ, ກຳ ຫນົດແລະຮັບປະກັນຄວາມປອດໄພຂອງເຄື່ອງແມ່ຂ່າຍ FTP (VSFTPD ຫຍໍ້ມາຈາກ "ປອດໄພຫຼາຍ FTP Daemon") ໃນ CentOS/RHEL 7 ແລະການແຈກຈ່າຍ Fedora.
ໃຫ້ສັງເກດວ່າ ຄຳ ສັ່ງທັງ ໝົດ ທີ່ຢູ່ໃນຄູ່ມືນີ້ຈະຖືກໃຊ້ເປັນຮາກ, ໃນກໍລະນີທີ່ທ່ານບໍ່ປະຕິບັດການກັບ server ດ້ວຍບັນຊີຮາກ, ໃຫ້ໃຊ້ ຄຳ ສັ່ງ sudo ເພື່ອໄດ້ຮັບສິດທິພິເສດຂອງຮາກ.
ຂັ້ນຕອນທີ 1: ການຕິດຕັ້ງ FTP Server
1. ການຕິດຕັ້ງ vsftpd server ແມ່ນຕັ້ງຊື່ຂື້ນ, ພຽງແຕ່ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ໃນ terminal.
# yum install vsftpd
2. ຫຼັງຈາກການຕິດຕັ້ງ ສຳ ເລັດແລ້ວ, ການບໍລິການຈະຖືກປິດໃນຕອນ ທຳ ອິດ, ສະນັ້ນພວກເຮົາ ຈຳ ເປັນຕ້ອງເລີ່ມຕົ້ນດ້ວຍຕົນເອງໃນເວລາແລະຊ່ວຍໃຫ້ມັນເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດຈາກເກີບລະບົບຕໍ່ໄປເຊັ່ນດຽວກັນ:
# systemctl start vsftpd # systemctl enable vsftpd
3. ຕໍ່ໄປ, ເພື່ອໃຫ້ການເຂົ້າເຖິງການບໍລິການ FTP ຈາກລະບົບພາຍນອກ, ພວກເຮົາຕ້ອງເປີດທີ່ Port 21, ບ່ອນທີ່ FTP daemons ກຳ ລັງຟັງຢູ່ດັ່ງຕໍ່ໄປນີ້:
# firewall-cmd --zone=public --permanent --add-port=21/tcp # firewall-cmd --zone=public --permanent --add-service=ftp # firewall-cmd --reload
ຂັ້ນຕອນທີ 2: ການຕັ້ງຄ່າ FTP Server
4. ຕອນນີ້ພວກເຮົາຈະຍ້າຍໄປເຮັດການຕັ້ງຄ່າສອງສາມຢ່າງເພື່ອຕັ້ງຄ່າແລະຮັບປະກັນເຄື່ອງແມ່ຂ່າຍ FTP ຂອງພວກເຮົາ, ໃຫ້ພວກເຮົາເລີ່ມຕົ້ນໂດຍການ ສຳ ຮອງເອກະສານ config ຕົ້ນສະບັບ /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
ຕໍ່ໄປ, ເປີດແຟ້ມ config ຂ້າງເທິງແລະຕັ້ງຄ່າຕົວເລືອກຕໍ່ໄປນີ້ດ້ວຍຄ່າທີ່ສອດຄ້ອງກັນເຫຼົ່ານີ້:
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. ດຽວນີ້ຕັ້ງຄ່າ FTP ເພື່ອອະນຸຍາດ/ປະຕິເສດການເຂົ້າເຖິງ FTP ຂອງຜູ້ໃຊ້ໂດຍອີງໃສ່ແຟ້ມລາຍຊື່ຜູ້ໃຊ້ /etc/vsftpd.userlist
.
ໂດຍຄ່າເລີ່ມຕົ້ນ, ຜູ້ໃຊ້ທີ່ລະບຸໄວ້ໃນ userlist_file =/etc/vsftpd.userlist
ຖືກປະຕິເສດການເຂົ້າສູ່ລະບົບດ້ວຍຕົວເລືອກ userlist_deny ທີ່ຖືກຕັ້ງເປັນ YES, ຖ້າ userlist_enable = YES.
ເຖິງຢ່າງໃດກໍ່ຕາມ, userlist_deny = NO ປ່ຽນແປງການຕັ້ງຄ່າ, ໝາຍ ຄວາມວ່າມີພຽງແຕ່ຜູ້ໃຊ້ທີ່ມີລາຍຊື່ຢ່າງຊັດເຈນໃນ userlist_file =/etc/vsftpd.userlist ເທົ່ານັ້ນທີ່ຈະໄດ້ຮັບອະນຸຍາດເຂົ້າສູ່ລະບົບ.
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 ເທົ່ານັ້ນ.
ຕໍ່ໄປ, ພວກເຮົາຈະພິຈາລະນາສອງສະຖານະການທີ່ເປັນໄປໄດ້ຂອງວິທີການ chroot ຜູ້ໃຊ້ FTP ໄປທີ່ໄດເລກະທໍລີຫນ້າທໍາອິດ (ຮາກໃນທ້ອງຖິ່ນ) ສໍາລັບຜູ້ໃຊ້ FTP, ດັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງລຸ່ມນີ້.
6. ຕອນນີ້ຕື່ມສອງຕົວເລືອກຕໍ່ໄປນີ້ເພື່ອ ຈຳ ກັດຜູ້ໃຊ້ FTP ໃນລາຍການ ໜ້າ ທຳ ອິດຂອງພວກເຂົາ.
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user = ແມ່ນແລ້ວ ໝາຍ ຄວາມວ່າຜູ້ໃຊ້ໃນທ້ອງຖິ່ນຈະຖືກຈັດເຂົ້າໃນຄຸກ chroot, ລາຍຊື່ເຮືອນຂອງພວກເຂົາຫຼັງຈາກເຂົ້າສູ່ລະບົບໂດຍການຕັ້ງຄ່າເລີ່ມຕົ້ນ.
ແລະໂດຍຄ່າເລີ່ມຕົ້ນ, vsftpd ບໍ່ອະນຸຍາດໃຫ້ໄດເລກະທໍລີຄຸກ chroot ສາມາດຂຽນໄດ້ຍ້ອນເຫດຜົນດ້ານຄວາມປອດໄພ, ເຖິງຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາສາມາດໃຊ້ຕົວເລືອກ allow_writeable_chroot = YES ເພື່ອລົບລ້າງການຕັ້ງຄ່ານີ້.
ບັນທຶກເອກະສານແລະປິດມັນ.
ຮັບປະກັນຄວາມປອດໄພຂອງ Server FTP ກັບ SELinux
7. ດຽວນີ້, ໃຫ້ຕັ້ງຄ່າ SELinux boolean ດ້ານລຸ່ມເພື່ອອະນຸຍາດໃຫ້ FTP ອ່ານໄຟລ໌ໃນໄດເລກະທໍລີບ້ານຂອງຜູ້ໃຊ້. ໃຫ້ສັງເກດວ່າສິ່ງນີ້ໄດ້ເຮັດໃນເບື້ອງຕົ້ນໂດຍໃຊ້ ຄຳ ສັ່ງ:
# setsebool -P ftp_home_dir on
ເຖິງຢ່າງໃດກໍ່ຕາມ, ຄຳ ສັ່ງແນະ ນຳ ftp_home_dir
ຖືກປິດໃຊ້ງານໂດຍການ ກຳ ນົດໄວ້ໃນຕອນຕົ້ນດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນບົດລາຍງານຂໍ້ບົກພ່ອງນີ້: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.
ຕອນນີ້ພວກເຮົາຈະໃຊ້ ຄຳ ສັ່ງ semanage ເພື່ອ ກຳ ນົດກົດລະບຽບ SELinux ເພື່ອໃຫ້ FTP ສາມາດອ່ານ/ຂຽນໄດເລກະທໍລີເຮືອນຂອງຜູ້ໃຊ້.
# semanage boolean -m ftpd_full_access --on
ໃນຈຸດນີ້, ພວກເຮົາຕ້ອງເລີ່ມຕົ້ນ vsftpd ເພື່ອສົ່ງຜົນຕໍ່ການປ່ຽນແປງທັງ ໝົດ ທີ່ພວກເຮົາໄດ້ເຮັດມາຂ້າງເທິງ:
# systemctl restart vsftpd
ຂັ້ນຕອນທີ 4: ການທົດສອບ FTP Server
8. ຕອນນີ້ພວກເຮົາຈະທົດສອບ server server ໂດຍການສ້າງຜູ້ໃຊ້ FTP ດ້ວຍ ຄຳ ສັ່ງ useradd.
# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi # passwd ravi
ຫລັງຈາກນັ້ນ, ພວກເຮົາຕ້ອງເພີ່ມ ravi ຜູ້ໃຊ້ເຂົ້າໃນແຟ້ມເອກະສານ /etc/vsftpd.userlist ໂດຍໃຊ້ ຄຳ ສັ່ງແອັກໂກ້ດັ່ງຕໍ່ໄປນີ້:
# echo "ravi" | tee -a /etc/vsftpd.userlist # cat /etc/vsftpd.userlist
9. ດຽວນີ້ເຖິງເວລາແລ້ວທີ່ຈະທົດສອບວ່າການຕັ້ງຄ່າຂອງພວກເຮົາຂ້າງເທິງເຮັດວຽກຖືກຕ້ອງຫລືບໍ່. ເລີ່ມຕົ້ນໂດຍການທົດສອບການເຂົ້າສູ່ລະບົບທີ່ບໍ່ລະບຸຊື່, ພວກເຮົາສາມາດເບິ່ງຈາກ ໜ້າ ຈໍຂ້າງລຸ່ມນີ້ວ່າການເຂົ້າສູ່ລະບົບບໍ່ໄດ້ຮັບອະນຸຍາດ:
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : anonymous 530 Permission denied. Login failed. ftp>
10. ໃຫ້ກວດເບິ່ງອີກວ່າຜູ້ໃຊ້ທີ່ບໍ່ໄດ້ລະບຸຢູ່ໃນເອກະສານ /etc/vsftpd.userlist ຈະໄດ້ຮັບອະນຸຍາດເຂົ້າສູ່ລະບົບ, ເຊິ່ງມັນບໍ່ແມ່ນກໍລະນີທີ່ຢູ່ໃນ ໜ້າ ຈໍຂ້າງລຸ່ມນີ້:
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : aaronkilik 530 Permission denied. Login failed. ftp>
11. ດຽວນີ້ກວດເບິ່ງຄັ້ງສຸດທ້າຍຖ້າຜູ້ໃຊ້ລະບຸໃນແຟ້ມເອກະສານ /etc/vsftpd.userlist, ແມ່ນຖືກຈັດເຂົ້າໃນບັນຊີລາຍຊື່ເຮືອນຂອງລາວຫຼັງຈາກເຂົ້າສູ່ລະບົບ:
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : ravi 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls
ພຽງແຕ່ເປີດໃຊ້ຕົວເລືອກນີ້ເທົ່ານັ້ນຖ້າທ່ານຮູ້ຢ່າງແນ່ນອນວ່າທ່ານ ກຳ ລັງເຮັດຫຍັງຢູ່. ມັນເປັນສິ່ງ ສຳ ຄັນທີ່ຈະຕ້ອງສັງເກດວ່າການ ນຳ ໃຊ້ຄວາມປອດໄພເຫຼົ່ານີ້ບໍ່ແມ່ນສະເພາະເຈາະຈົງ, ພວກມັນ ນຳ ໃຊ້ກັບໂດເມນ FTP ທັງ ໝົດ ທີ່ສະ ເໜີ ໃຫ້ຜູ້ໃຊ້ໃນທ້ອງຖິ່ນເຂົ້າໄປໃນຄຸກ chroot ເຊັ່ນກັນ.
ດັ່ງນັ້ນ, ພວກເຮົາຈະພິຈາລະນາວິທີທີ່ປອດໄພກວ່າໃນການ ກຳ ນົດໄດເລກະທໍລີຮາກທ້ອງຖິ່ນທີ່ບໍ່ສາມາດຂຽນໄດ້ໃນພາກຕໍ່ໄປ.
ຂັ້ນຕອນທີ 5: ຕັ້ງຄ່າໄດເລກະທໍລີ ໜ້າ ທຳ ອິດຂອງຜູ້ໃຊ້ FTP
12. ເປີດເອກະສານການຕັ້ງຄ່າ vsftpd ອີກຄັ້ງແລະເລີ່ມຕົ້ນໂດຍໃຫ້ ຄຳ ເຫັນກັບຕົວເລືອກທີ່ບໍ່ປອດໄພດ້ານລຸ່ມ:
#allow_writeable_chroot=YES
ຫຼັງຈາກນັ້ນ, ສ້າງໄດເລກະທໍລີຮາກຂັ້ນທ້ອງຖິ່ນ ສຳ ລັບຜູ້ໃຊ້ ( ravi
, ຂອງທ່ານອາດຈະແຕກຕ່າງກັນ) ແລະເອົາສິດໃນການຂຽນອອກໃຫ້ຜູ້ໃຊ້ທຸກຄົນໃນໄດເລກະທໍລີນີ້:
# mkdir /home/ravi/ftp # chown nobody:nobody /home/ravi/ftp # chmod a-w /home/ravi/ftp
13. ຕໍ່ໄປ, ສ້າງໄດເລກະທໍລີພາຍໃຕ້ຮາກທ້ອງຖິ່ນທີ່ຜູ້ໃຊ້ຈະເກັບແຟ້ມເອກະສານຂອງລາວ:
# mkdir /home/ravi/ftp/files # chown ravi:ravi /home/ravi/ftp/files # chmod 0700 /home/ravi/ftp/files/
ຈາກນັ້ນຕື່ມ/ແກ້ໄຂຕົວເລືອກຕໍ່ໄປນີ້ໃນແຟ້ມ vsftpd config ດ້ວຍຄ່າເຫລົ່ານີ້:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
ບັນທຶກເອກະສານແລະປິດມັນ. ອີກເທື່ອ ໜຶ່ງ, ໃຫ້ເປີດບໍລິການ ໃໝ່ ດ້ວຍການຕັ້ງຄ່າ ໃໝ່:
# systemctl restart vsftpd
14. ດຽວນີ້ເຮັດການທົດສອບຂັ້ນສຸດທ້າຍອີກເທື່ອ ໜຶ່ງ ແລະເບິ່ງວ່າຜູ້ ນຳ ໃຊ້ລະບົບຮາກທີ່ຢູ່ໃນທ້ອງຖິ່ນແມ່ນໄດເລກະທໍລີ FTP ທີ່ພວກເຮົາສ້າງຂື້ນໃນໄດເລກະທໍລີບ້ານຂອງລາວ.
# ftp 192.168.56.10 Connected to 192.168.56.10 (192.168.56.10). 220 Welcome to TecMint.com FTP service. Name (192.168.56.10:root) : ravi 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls
ນັ້ນແມ່ນມັນ! ໃນບົດຂຽນນີ້, ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕິດຕັ້ງ, ການຕັ້ງຄ່າແລະຄວາມປອດໄພຂອງເຊີຟເວີ FTP ໃນ CentOS 7, ໃຊ້ພາກ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້ເພື່ອຂຽນກັບພວກເຮົາກ່ຽວກັບຄູ່ມືນີ້/ແບ່ງປັນຂໍ້ມູນທີ່ເປັນປະໂຫຍດກ່ຽວກັບຫົວຂໍ້ນີ້.
ໃນບົດຂຽນຕໍ່ໄປ, ພວກເຮົາຍັງຈະສະແດງວິທີການຮັກສາເຄື່ອງແມ່ຂ່າຍ FTP ໂດຍໃຊ້ການເຊື່ອມຕໍ່ SSL/TLS ໃນ CentOS 7, ຈົນກ່ວານັ້ນ, ຈົ່ງເຊື່ອມຕໍ່ກັບ TecMint.