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

วิธีรักษาความปลอดภัยเซิร์ฟเวอร์ FTP โดยใช้ SSL/TLS สำหรับการถ่ายโอนไฟล์อย่างปลอดภัยใน CentOS 7


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

ในบทช่วยสอนนี้ เราจะอธิบายวิธีเปิดใช้งานบริการเข้ารหัสข้อมูลด้วยตนเองในเซิร์ฟเวอร์ FTP ใน CentOS/RHEL 7 และ Fedora เราจะดำเนินการตามขั้นตอนต่างๆ ในการรักษาความปลอดภัยบริการ VSFTPD (Very Secure FTP Daemon) โดยใช้ใบรับรอง SSL/TLS

ข้อกำหนดเบื้องต้น:

  1. คุณต้องติดตั้งและกำหนดค่าเซิร์ฟเวอร์ FTP ใน CentOS 7

ก่อนที่เราจะเริ่มต้น โปรดทราบว่าคำสั่งทั้งหมดในบทช่วยสอนนี้จะทำงานเป็น รูท ไม่เช่นนั้น ให้ใช้คำสั่ง sudo เพื่อรับสิทธิ์รูท หากคุณไม่ได้ควบคุมเซิร์ฟเวอร์โดยใช้บัญชีรูท

ขั้นตอนที่ 1 การสร้างใบรับรอง SSL/TLS และคีย์ส่วนตัว

1. เราต้องเริ่มต้นด้วยการสร้างไดเรกทอรีย่อยภายใต้: /etc/ssl/ ซึ่งเราจะจัดเก็บใบรับรอง SSL/TLS และไฟล์คีย์ : :

mkdir /etc/ssl/private

2. จากนั้นเรียกใช้คำสั่งด้านล่างเพื่อสร้างใบรับรองและคีย์สำหรับ vsftpd ในไฟล์เดียว นี่คือคำอธิบายของแต่ละแฟล็กที่ใช้

  1. req – เป็นคำสั่งสำหรับการจัดการ X.509 Certificate Signing Request (CSR)
  2. x509 – หมายถึงการจัดการข้อมูลใบรับรอง X.509
  3. วัน – กำหนดจำนวนวันที่ใบรับรองสามารถใช้ได้
  4. newkey – ระบุตัวประมวลผลคีย์ใบรับรอง
  5. rsa:2048 – ตัวประมวลผลคีย์ RSA จะสร้างคีย์ส่วนตัว 2048 บิต
  6. keyout – ตั้งค่าไฟล์จัดเก็บคีย์
  7. ออก – ตั้งค่าไฟล์การจัดเก็บใบรับรอง โปรดทราบว่าทั้งใบรับรองและคีย์จะถูกจัดเก็บไว้ในไฟล์เดียวกัน: /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 ตามที่เราแสดงให้คุณเห็นในบทช่วยสอนนี้ แบ่งปันความคิดของคุณเกี่ยวกับบทช่วยสอน/หัวข้อนี้ผ่านแบบฟอร์มคำติชมด้านล่าง