วิธีรักษาความปลอดภัยเซิร์ฟเวอร์ FTP โดยใช้ SSL/TLS สำหรับการถ่ายโอนไฟล์อย่างปลอดภัยใน CentOS 7
จากการออกแบบเดิม FTP (File Transfer Protocol) ไม่ปลอดภัย ซึ่งหมายความว่าจะไม่เข้ารหัสข้อมูลที่ส่งระหว่างสองเครื่อง พร้อมด้วยข้อมูลรับรองของผู้ใช้ สิ่งนี้ก่อให้เกิดภัยคุกคามครั้งใหญ่ต่อข้อมูลรวมถึงความปลอดภัยของเซิร์ฟเวอร์
ในบทช่วยสอนนี้ เราจะอธิบายวิธีเปิดใช้งานบริการเข้ารหัสข้อมูลด้วยตนเองในเซิร์ฟเวอร์ FTP ใน CentOS/RHEL 7 และ Fedora เราจะดำเนินการตามขั้นตอนต่างๆ ในการรักษาความปลอดภัยบริการ VSFTPD (Very Secure FTP Daemon) โดยใช้ใบรับรอง SSL/TLS
ข้อกำหนดเบื้องต้น:
- คุณต้องติดตั้งและกำหนดค่าเซิร์ฟเวอร์ FTP ใน CentOS 7
ก่อนที่เราจะเริ่มต้น โปรดทราบว่าคำสั่งทั้งหมดในบทช่วยสอนนี้จะทำงานเป็น รูท ไม่เช่นนั้น ให้ใช้คำสั่ง sudo เพื่อรับสิทธิ์รูท หากคุณไม่ได้ควบคุมเซิร์ฟเวอร์โดยใช้บัญชีรูท
ขั้นตอนที่ 1 การสร้างใบรับรอง SSL/TLS และคีย์ส่วนตัว
1. เราต้องเริ่มต้นด้วยการสร้างไดเรกทอรีย่อยภายใต้: /etc/ssl/
ซึ่งเราจะจัดเก็บใบรับรอง SSL/TLS และไฟล์คีย์ : :
mkdir /etc/ssl/private
2. จากนั้นเรียกใช้คำสั่งด้านล่างเพื่อสร้างใบรับรองและคีย์สำหรับ vsftpd ในไฟล์เดียว นี่คือคำอธิบายของแต่ละแฟล็กที่ใช้
- req – เป็นคำสั่งสำหรับการจัดการ X.509 Certificate Signing Request (CSR)
- x509 – หมายถึงการจัดการข้อมูลใบรับรอง X.509
- วัน – กำหนดจำนวนวันที่ใบรับรองสามารถใช้ได้
- newkey – ระบุตัวประมวลผลคีย์ใบรับรอง
- rsa:2048 – ตัวประมวลผลคีย์ RSA จะสร้างคีย์ส่วนตัว 2048 บิต
- keyout – ตั้งค่าไฟล์จัดเก็บคีย์
- ออก – ตั้งค่าไฟล์การจัดเก็บใบรับรอง โปรดทราบว่าทั้งใบรับรองและคีย์จะถูกจัดเก็บไว้ในไฟล์เดียวกัน: /etc/ssl/private/vsftpd.pem
openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048
คำสั่งข้างต้นจะขอให้คุณตอบคำถามด้านล่าง อย่าลืมใช้ค่าที่เกี่ยวข้องกับสถานการณ์ของคุณ
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email
ขั้นตอนที่ 2 การกำหนดค่า VSFTPD เพื่อใช้ SSL/TLS
3. ก่อนที่เราจะดำเนินการกำหนดค่า VSFTPD เรามาเปิดพอร์ต 990 และ 40000-50000 เพื่ออนุญาตการเชื่อมต่อ TLS และช่วงพอร์ตของพอร์ตแบบพาสซีฟ เพื่อกำหนดในไฟล์คอนฟิกูเรชัน VSFTPD ตามลำดับ:
firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload
4. ตอนนี้ ให้เปิดไฟล์กำหนดค่า VSFTPD และระบุรายละเอียด SSL ในนั้น:
vi /etc/vsftpd/vsftpd.conf
มองหาตัวเลือก ssl_enable และตั้งค่าเป็น YES
เพื่อเปิดใช้งานการใช้ SSL นอกจากนี้ เนื่องจาก TSL มีความปลอดภัยมากกว่า SSL เราจึงจำกัด VSFTPD ให้ใช้ TLS ให้ใช้ตัวเลือก ssl_tlsv1_2 แทน:
ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
5. จากนั้น เพิ่มบรรทัดด้านล่างเพื่อกำหนดตำแหน่งของใบรับรอง SSL และไฟล์คีย์:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
6. ต่อไป เราต้องป้องกันไม่ให้ผู้ใช้ที่ไม่ระบุชื่อใช้ SSL จากนั้นบังคับให้การเข้าสู่ระบบที่ไม่ระบุชื่อทั้งหมดใช้การเชื่อมต่อ SSL ที่ปลอดภัยสำหรับการถ่ายโอนข้อมูลและส่งรหัสผ่านระหว่างการเข้าสู่ระบบ:
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
7. นอกจากนี้ เราสามารถเพิ่มตัวเลือกด้านล่างเพื่อเพิ่มความปลอดภัยของเซิร์ฟเวอร์ FTP เมื่อตัวเลือก require_ssl_reuse ถูกตั้งค่าเป็น YES
ดังนั้นการเชื่อมต่อข้อมูล SSL ทั้งหมดจะต้องแสดงการใช้เซสชัน SSL ซ้ำ พิสูจน์ว่าพวกเขารู้ความลับหลักเดียวกันกับช่องควบคุม
ดังนั้นเราจึงต้องปิดมัน
require_ssl_reuse=NO
ขอย้ำอีกครั้งว่า เราต้องเลือก VSFTPD การเข้ารหัส SSL ที่จะอนุญาตให้มีการเชื่อมต่อ SSL ที่เข้ารหัสด้วยตัวเลือก ssl_ciphers สิ่งนี้สามารถจำกัดความพยายามของผู้โจมตีที่พยายามบังคับการเข้ารหัสโดยเฉพาะซึ่งอาจค้นพบช่องโหว่ใน:
ssl_ciphers=HIGH
8. ตอนนี้ ให้ตั้งค่าช่วงพอร์ต (พอร์ตต่ำสุดและสูงสุด) ของพอร์ตแบบพาสซีฟ
pasv_min_port=40000
pasv_max_port=50000
9. คุณสามารถเลือกอนุญาตการแก้ไขข้อบกพร่อง SSL ซึ่งหมายความว่าการวินิจฉัยการเชื่อมต่อ openSSL จะถูกบันทึกลงในไฟล์บันทึก VSFTPD ด้วยตัวเลือก debug_ssl:
debug_ssl=YES
บันทึกการเปลี่ยนแปลงทั้งหมดและปิดไฟล์ จากนั้นมาเริ่มบริการ VSFTPD ใหม่:
systemctl restart vsftpd
ขั้นตอนที่ 3: การทดสอบเซิร์ฟเวอร์ FTP ด้วยการเชื่อมต่อ SSL/TLS
10. หลังจากทำการกำหนดค่าข้างต้นทั้งหมดแล้ว ให้ทดสอบว่า VSFTPD ใช้การเชื่อมต่อ SSL/TLS หรือไม่ โดยพยายามใช้ 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
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>
จากภาพหน้าจอด้านบน เราจะเห็นว่ามีข้อผิดพลาดแจ้งว่า VSFTPD สามารถอนุญาตให้ผู้ใช้เข้าสู่ระบบจากไคลเอนต์ที่รองรับบริการเข้ารหัสเท่านั้น
บรรทัดคำสั่งไม่มีบริการเข้ารหัสซึ่งทำให้เกิดข้อผิดพลาด ดังนั้น เพื่อเชื่อมต่อกับเซิร์ฟเวอร์อย่างปลอดภัย เราจำเป็นต้องมีไคลเอ็นต์ FTP ที่รองรับการเชื่อมต่อ SSL/TLS เช่น FileZilla
ขั้นตอนที่ 4: ติดตั้ง FileZilla เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ FTP อย่างปลอดภัย
11. FileZilla เป็นไคลเอ็นต์ FTP ข้ามแพลตฟอร์มที่ทันสมัย ได้รับความนิยม และที่สำคัญ ซึ่งสนับสนุนการเชื่อมต่อ SSL/TLS ตามค่าเริ่มต้น
หากต้องการติดตั้ง FileZilla ใน Linux ให้รันคำสั่งด้านล่าง:
--------- On CentOS/RHEL/Fedora ---------
yum install epel-release filezilla
--------- On Debian/Ubuntu ---------
sudo apt-get install filezilla
12. เมื่อการติดตั้งเสร็จสิ้น (หรือหากคุณได้ติดตั้งไว้แล้ว) ให้เปิดมันและไปที่ File=>Sites Manager หรือ (กด Ctrl+S
) เพื่อรับอินเทอร์เฟซ Site Manager ด้านล่าง
คลิกที่ปุ่ม ไซต์ใหม่ เพื่อเพิ่มรายละเอียดการเชื่อมต่อไซต์/โฮสต์ใหม่
13. ถัดไป ตั้งชื่อโฮสต์/ไซต์ เพิ่มที่อยู่ IP กำหนดโปรโตคอลที่จะใช้ การเข้ารหัสและประเภทการเข้าสู่ระบบตามภาพหน้าจอด้านล่าง (ใช้ค่าที่นำไปใช้กับสถานการณ์ของคุณ):
Host: 192.168.56.10
Protocol: FTP – File Transfer Protocol
Encryption: Require explicit FTP over #recommended
Logon Type: Ask for password #recommended
User: username
14. จากนั้นคลิกที่ เชื่อมต่อ เพื่อป้อนรหัสผ่านอีกครั้ง จากนั้นตรวจสอบใบรับรองที่ใช้สำหรับการเชื่อมต่อ SSL/TLS และคลิก ตกลง
หนึ่งครั้ง เพิ่มเติมเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ FTP:
ในขั้นตอนนี้ เราควรเข้าสู่ระบบเซิร์ฟเวอร์ FTP ผ่านการเชื่อมต่อ TLS ได้สำเร็จ ตรวจสอบส่วนสถานะการเชื่อมต่อเพื่อดูข้อมูลเพิ่มเติมจากอินเทอร์เฟซด้านล่าง
15. สุดท้ายแต่ไม่ท้ายสุด ลองถ่ายโอนไฟล์จากเครื่องท้องถิ่นไปยังเซิร์ฟเวอร์ FTP ในโฟลเดอร์ไฟล์ ลองดูที่ด้านล่างสุดของอินเทอร์เฟซ FileZilla เพื่อดู รายงานเกี่ยวกับการถ่ายโอนไฟล์
นั่นคือทั้งหมด! โปรดจำไว้เสมอว่า FTP นั้นไม่ปลอดภัยตามค่าเริ่มต้น เว้นแต่เราจะกำหนดค่าให้ใช้การเชื่อมต่อ SSL/TLS ตามที่เราแสดงให้คุณเห็นในบทช่วยสอนนี้ แบ่งปันความคิดของคุณเกี่ยวกับบทช่วยสอน/หัวข้อนี้ผ่านแบบฟอร์มคำติชมด้านล่าง