ວິທີການຕິດຕັ້ງ, ການຕັ້ງຄ່າແລະຄວາມປອດໄພຂອງເຊີຟເວີ 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.