ค้นหาเว็บไซต์

วิธีการติดตั้ง กำหนดค่า และรักษาความปลอดภัยเซิร์ฟเวอร์ FTP ใน RHEL 8


FTP (ย่อมาจาก “File Transfer Protocol ”) เป็นโปรโตคอลเครือข่ายมาตรฐานและเก่าที่ใช้สำหรับการถ่ายโอนไฟล์ระหว่างไคลเอนต์และเซิร์ฟเวอร์บนเครือข่ายคอมพิวเตอร์ มันถูกสร้างขึ้นบนสถาปัตยกรรมโมเดลไคลเอนต์-เซิร์ฟเวอร์ ซึ่งให้การเข้าถึงไฟล์และไดเร็กทอรีผ่านทางไคลเอนต์ FTP เพื่ออัพโหลดไฟล์ไปยังเซิร์ฟเวอร์ เช่นเดียวกับการดาวน์โหลดไฟล์จากเซิร์ฟเวอร์

ในบทความก่อนหน้านี้ เราได้อธิบายวิธีการติดตั้ง กำหนดค่า และรักษาความปลอดภัยเซิร์ฟเวอร์ FTP ใน CentOS/RHEL 7 สำหรับการถ่ายโอนไฟล์คอมพิวเตอร์ระหว่างไคลเอนต์และเซิร์ฟเวอร์บนเครือข่ายคอมพิวเตอร์

ในบทความนี้ เราจะอธิบายวิธีการติดตั้ง กำหนดค่า และรักษาความปลอดภัยเซิร์ฟเวอร์ FTP บน RHEL 8 สำหรับการแชร์ไฟล์พื้นฐานระหว่างคอมพิวเตอร์

ติดตั้งเซิร์ฟเวอร์ FTP บน RHEL 8

1. หากต้องการติดตั้งแพ็คเกจ FTP ที่ปลอดภัย ให้ใช้คำสั่ง dnf ต่อไปนี้

dnf install vsftpd

2. เมื่อการติดตั้งเสร็จสมบูรณ์ คุณต้องเริ่มบริการ vsftpd ในระหว่างนี้ เปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตระบบ จากนั้นตรวจสอบสถานะโดยใช้คำสั่ง systemctl ต่อไปนี้

systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd

3. ถัดไป คุณต้องเปิดพอร์ต FTP 21 บนไฟร์วอลล์ระบบเพื่ออนุญาตการเข้าถึงบริการ FTP จากระบบภายนอก

firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-port=45073/tcp
firewall-cmd --reload

กำหนดค่าเซิร์ฟเวอร์ FTP บน RHEL 8

4. ในการกำหนดค่าเซิร์ฟเวอร์ FTP คุณต้องสำรองข้อมูลไฟล์การกำหนดค่า FTP หลัก /etc/vsftpd/vsftpd.conf โดยใช้คำสั่งคัดลอกต่อไปนี้

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

5. จากนั้นเปิดไฟล์การกำหนดค่าโดยใช้โปรแกรมแก้ไขบรรทัดคำสั่งที่คุณชื่นชอบ

vi /etc/vsftpd/vsftpd.conf

ตั้งค่าพารามิเตอร์ต่อไปนี้ด้วยค่าที่สอดคล้องกันเหล่านี้ (ดู man vsftpd.conf สำหรับความหมายของพารามิเตอร์การกำหนดค่า):

anonymous_enable=NO             
local_enable=YES		
write_enable=YES		
local_umask=022		        
dirmessage_enable=YES	        
xferlog_enable=YES		
connect_from_port_20=YES        
xferlog_std_format=YES          
listen=NO   			
listen_ipv6=YES		        
pam_service_name=vsftpd        

6. ถัดไป คุณต้องกำหนดค่า FTP เพื่ออนุญาต/ปฏิเสธผู้ใช้ในการเข้าถึงบริการ FTP ตามไฟล์รายชื่อผู้ใช้ /etc/vsftpd.userlist

ตามค่าเริ่มต้น ผู้ใช้ที่อยู่ในไฟล์ /etc/vsftpd.userlist จะถูกปฏิเสธการเข้าถึงโดยตั้งค่าตัวเลือก userlist_deny เป็น YES หาก userlist_enable =ใช่ ช่วยให้สามารถเข้าถึงได้

แต่การตั้งค่าพารามิเตอร์ userlist_deny=NO จะเปลี่ยนการตั้งค่า ซึ่งหมายความว่าเฉพาะผู้ใช้ที่ระบุไว้อย่างชัดเจนใน userlist_file=/etc/vsftpd.userlist เท่านั้นที่จะได้รับอนุญาตให้เข้าสู่ระบบ

ดังนั้น ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์การกำหนดค่า vsftpd.conf ของคุณ (หรือหากมีอยู่แล้ว ให้ยกเลิกการใส่เครื่องหมายข้อคิดเห็นและตั้งค่าตามที่แสดง):

userlist_enable=YES                   # allow access to list of usernames from the userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

7. ตอนนี้เพิ่มบรรทัดต่อไปนี้ในไฟล์การกำหนดค่า vsftpd.conf ของคุณเพื่อจำกัดผู้ใช้ FTP ไว้ที่โฮมไดเร็กทอรีของตน

chroot_local_user=YES		#means local users will be placed in a chroot jail, their home directory after login by default settings.
user_sub_token=$USER         	
local_root=/home/$USER/ftp   	

บันทึกการเปลี่ยนแปลงในไฟล์และปิด

8. ตั้งค่ากฎบูลีน SELinux ต่อไปนี้เพื่อเปิดใช้งาน FTP เพื่ออ่าน/เขียนไฟล์ในโฮมไดเร็กตอรี่ของผู้ใช้

semanage boolean -m ftpd_full_access --on

9. ในที่สุดก็รีสตาร์ทบริการ vsftpd เพื่อให้ส่งผลต่อการเปลี่ยนแปลงทั้งหมดที่เราทำข้างต้น:

systemctl restart vsftpd

การทดสอบเซิร์ฟเวอร์ FTP บน RHEL 8

10. หากต้องการทดสอบว่าการตั้งค่า FTP ข้างต้นทำงานได้ดีหรือไม่ ให้เริ่มต้นด้วยการสร้างผู้ใช้ FTP ด้วยคำสั่ง useradd และสร้างรหัสผ่านสำหรับผู้ใช้นั้น

useradd -m -c "Tecmint HowTos" -s /bin/bash tecmint
passwd tecmint

11. จากนั้นเพิ่มผู้ใช้ tecmint ไปยังไฟล์ /etc/vsftpd.userlist โดยใช้คำสั่ง echo ดังต่อไปนี้

echo "tecmint" | tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

12. จากนั้นสร้างไดเร็กทอรีรากในเครื่องทางเลือกสำหรับผู้ใช้ (tecmint ของคุณอาจจะแตกต่างออกไป) และตั้งค่าการอนุญาตที่เหมาะสมในไดเร็กทอรีนี้

mkdir -p /home/tecmint/ftp
chown nobody:nobody /home/tecmint/ftp
chmod a-w /home/tecmint/ftp

13. ถัดไป สร้างไดเร็กทอรีภายในตำแหน่งรูทในเครื่อง ซึ่งผู้ใช้จะเก็บไฟล์ของเขา/เธอ

mkdir /home/tecmint/ftp/files
chown tecmint:tecmint /home/tecmint/ftp/files
chmod 0700 /home/tecmint/ftp/files/

14. ตอนนี้เชื่อมต่อกับเซิร์ฟเวอร์ FTP โดยใช้ไคลเอนต์ FTP ดังต่อไปนี้

ftp [email 
ผลลัพธ์ตัวอย่าง
Connected to 192.168.56.100
220 Welcome to TecMint.com FTP service.
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

แค่นั้นแหละ! ในบทความนี้ เราได้อธิบายวิธีการติดตั้ง กำหนดค่า ตลอดจนรักษาความปลอดภัยเซิร์ฟเวอร์ FTP ใน RHEL 8 ในบทความถัดไป เราจะแสดงวิธีรักษาความปลอดภัยเซิร์ฟเวอร์ FTP โดยใช้การเชื่อมต่อ SSL/TLS ถึงตอนนั้นจงอยู่กับเรา