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

รักษาความปลอดภัยการเชื่อมต่อ ProFTPD โดยใช้โปรโตคอล TLS/SSL บน RHEL/CentOS 7


โดยธรรมชาติแล้ว โปรโตคอล FTP ได้รับการออกแบบให้เป็นโปรโตคอลที่ไม่ปลอดภัย และข้อมูลและรหัสผ่านทั้งหมดจะถูกถ่ายโอนในรูปแบบข้อความธรรมดา ทำให้งานของบุคคลที่สามสามารถดักจับธุรกรรม FTP ไคลเอนต์-เซิร์ฟเวอร์ทั้งหมดได้อย่างง่ายดาย โดยเฉพาะชื่อผู้ใช้และ รหัสผ่านที่ใช้ในกระบวนการตรวจสอบสิทธิ์

ความต้องการ

  1. การติดตั้งเซิร์ฟเวอร์ ProFTPD บน RHEL/CentOS 7
  2. เปิดใช้งานบัญชีที่ไม่ระบุชื่อสำหรับเซิร์ฟเวอร์ Proftpd ใน RHEL/CentOS 7

บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับวิธีที่คุณสามารถรักษาความปลอดภัยและเข้ารหัสการสื่อสาร FTP บนเซิร์ฟเวอร์ ProFTPd ใน CentOS/RHEL 7 โดยใช้ TLS (Transport Layer Security) พร้อมด้วยส่วนขยาย FTPS ที่ชัดเจน (คิดว่า FTPS เหมือนกับว่า HTTPS คืออะไรสำหรับโปรโตคอล HTTP)

ขั้นตอนที่ 1: สร้างไฟล์การกำหนดค่าโมดูล Proftpd TLS

1. ตามที่กล่าวไว้ในบทช่วยสอน Proftpd ก่อนหน้านี้เกี่ยวกับบัญชีที่ไม่ระบุชื่อ คู่มือนี้จะใช้วิธีการเดียวกันในการจัดการไฟล์การกำหนดค่าในอนาคตของ Proftpd เป็นโมดูล ด้วยความช่วยเหลือของ enabled_mod และ < ไดเรกทอรี b>disabled_mod ซึ่งจะโฮสต์ความสามารถเพิ่มเติมของเซิร์ฟเวอร์ทั้งหมด

ดังนั้น ให้สร้างไฟล์ใหม่ด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบชื่อ tls.conf ในเส้นทาง disabled_mod Proftpd และเพิ่มคำสั่งต่อไปนี้

nano /etc/proftpd/disabled_mod/tls.conf

เพิ่มข้อความที่ตัดตอนมาจากการกำหนดค่าไฟล์ TLS ต่อไปนี้

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. หากคุณใช้เบราว์เซอร์หรือไคลเอนต์ FTP ที่ไม่รองรับการเชื่อมต่อ TLS ให้ใส่เครื่องหมายความคิดเห็นในบรรทัด TLSRquired on เพื่ออนุญาตการเชื่อมต่อ TLS และไม่ใช่ TLS ในเวลาเดียวกันและ หลีกเลี่ยงข้อความแสดงข้อผิดพลาดดังภาพหน้าจอด้านล่าง

ขั้นตอนที่ 2: สร้างไฟล์ใบรับรอง SSL สำหรับ TLS

3. หลังจากที่คุณสร้างไฟล์การกำหนดค่าโมดูล TLS แล้ว ที่จะเปิดใช้งาน FTP ผ่าน TLS บน Proftpd คุณต้องสร้างใบรับรอง SSL และคีย์เพื่อใช้การสื่อสารที่ปลอดภัยบนเซิร์ฟเวอร์ ProFTPD ด้วยความช่วยเหลือของแพ็คเกจ OpenSSL

yum install openssl

คุณสามารถใช้คำสั่งยาวคำสั่งเดียวเพื่อสร้างคู่ใบรับรอง SSL และคีย์ได้ แต่เพื่อลดความซับซ้อนของสิ่งต่าง ๆ คุณสามารถสร้างสคริปต์ทุบตีอย่างง่ายที่จะสร้างคู่ SSL ด้วยชื่อที่คุณต้องการและกำหนดสิทธิ์ที่ถูกต้องสำหรับไฟล์คีย์

สร้างไฟล์ bash ชื่อ proftpd_gen_ssl บน /usr/local/bin/ หรือบนเส้นทางของระบบปฏิบัติการอื่น ๆ (กำหนดโดยตัวแปร ` PATH ).

nano /usr/local/bin/proftpd_gen_ssl

เพิ่มเนื้อหาต่อไปนี้ลงไป

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4. หลังจากที่คุณสร้างไฟล์ด้านบนแล้ว ให้กำหนดสิทธิ์ในการดำเนินการให้กับไฟล์ดังกล่าว ตรวจสอบให้แน่ใจว่าไดเร็กทอรี /etc/ssl/private มีอยู่ และเรียกใช้สคริปต์เพื่อสร้างใบรับรอง SSL และคีย์ คู่

chmod +x /usr/local/bin/proftpd_gen_ssl
mkdir -p /etc/ssl/private
proftpd_gen_ssl

ระบุใบรับรอง SSL พร้อมข้อมูลที่แจ้งที่จำเป็นซึ่งอธิบายได้ในตัว แต่ให้ความสนใจกับ ชื่อทั่วไป เพื่อให้ตรงกับ ชื่อโดเมนที่ผ่านการรับรองโดยสมบูรณ์FQDN โฮสต์ของคุณ ข>.

ขั้นตอนที่ 3: เปิดใช้งาน TLS บนเซิร์ฟเวอร์ ProFTPD

5. เนื่องจากไฟล์การกำหนดค่า TLS ที่สร้างขึ้นก่อนหน้านี้ได้ชี้ไปยังใบรับรอง SSL และไฟล์คีย์ที่ถูกต้องแล้ว สิ่งเดียวที่เหลืออยู่คือการเปิดใช้งานโมดูล TLS โดยการสร้าง ลิงก์สัญลักษณ์ ของ tls.conf ไปยังไดเรกทอรี enabled-mod และ รีสตาร์ท ProFTPD daemon เพื่อใช้การเปลี่ยนแปลง

ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
systemctl restart proftpd

6. หากต้องการปิดใช้งานโมดูล TLS เพียงลบ tls.conf symlink ออกจากไดเร็กทอรี enabled_mod และรีสตาร์ทเซิร์ฟเวอร์ ProFTPD เพื่อใช้การเปลี่ยนแปลง

rm /etc/proftpd/enabled_mod/tls.conf
systemctl restart proftpd

ขั้นตอนที่ 4: เปิดไฟร์วอลล์เพื่ออนุญาต FTP ผ่านการสื่อสาร TLS

7. เพื่อให้ไคลเอนต์เข้าถึง ProFTPD และถ่ายโอนไฟล์อย่างปลอดภัยใน โหมดพาสซีฟ คุณต้องเปิดช่วงพอร์ตทั้งหมดระหว่าง 1024 และ 65534 บนไฟร์วอลล์ RHEL/CentOS โดยใช้คำสั่งต่อไปนี้

firewall-cmd --add-port=1024-65534/tcp  
firewall-cmd --add-port=1024-65534/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --reload

แค่นั้นแหละ. ขณะนี้ระบบของคุณพร้อมที่จะยอมรับการสื่อสาร FTP ผ่าน TLS จากฝั่งไคลเอ็นต์แล้ว

ขั้นตอนที่ 5: เข้าถึง ProFTPD ผ่าน TLS จากไคลเอนต์

8. เว็บเบราว์เซอร์มักจะไม่รองรับ FTP ในตัวผ่านโปรโตคอล TLS ดังนั้นธุรกรรมทั้งหมดจะถูกส่งผ่าน FTP ที่ไม่ได้เข้ารหัส หนึ่งในไคลเอนต์ FTP ที่ยอดเยี่ยมที่สุดคือ FileZilla ซึ่งเป็นโอเพ่นซอร์สทั้งหมดและสามารถทำงานบนระบบปฏิบัติการหลักเกือบทั้งหมด

หากต้องการเข้าถึง FTP ผ่าน TLS จาก FileZilla ให้เปิด Site Manager เลือก FTP บน โปรโตคอล และ ต้องการ FTP ที่ชัดเจนผ่าน TLS บน เมนูแบบเลื่อนลง การเข้ารหัส เลือก ประเภทการเข้าสู่ระบบ เป็น ปกติ ป้อนข้อมูลประจำตัว FTP ของคุณ และกด เชื่อมต่อ เพื่อสื่อสาร กับเซิร์ฟเวอร์

9. หากนี่เป็นครั้งแรกที่คุณเชื่อมต่อกับเซิร์ฟเวอร์ ProFTPD ป๊อปอัปพร้อมใบรับรองใหม่ควรปรากฏขึ้น ทำเครื่องหมายในช่อง ที่ระบุว่า เชื่อถือใบรับรองเสมอสำหรับอนาคต เซสชัน และกด ตกลง เพื่อยอมรับใบรับรองและตรวจสอบสิทธิ์ไปยังเซิร์ฟเวอร์ ProFTPD

หากคุณวางแผนที่จะใช้ไคลเอนต์อื่นที่ไม่ใช่ FileZilla เพื่อเข้าถึงทรัพยากร FTP อย่างปลอดภัย ตรวจสอบให้แน่ใจว่าไคลเอนต์เหล่านั้นรองรับ FTP ผ่านโปรโตคอล TLS ตัวอย่างที่ดีสำหรับไคลเอ็นต์ FTP ที่สามารถพูด FTPS ได้ ได้แก่ WinSCP สำหรับแพลตฟอร์ม Windows และ gFTP หรือ LFTP (บรรทัดคำสั่ง) สำหรับ NIX