Amankan Koneksi ProFTPD Menggunakan Protokol TLS/SSL di RHEL/CentOS 7


Berdasarkan sifatnya, protokol FTP dirancang sebagai protokol yang tidak aman dan semua data serta kata sandi ditransfer dalam bentuk teks biasa, membuat tugas pihak ketiga sangat mudah untuk mencegat semua transaksi server-klien FTP, terutama nama pengguna dan kata sandi yang digunakan dalam proses otentikasi.

Persyaratan

  1. Menginstal Server ProFTPD di RHEL/CentOS 7
  2. Aktifkan Akun Anonim untuk Server Proftpd di RHEL/CentOS 7

Tutorial ini akan memandu Anda tentang cara mengamankan dan mengenkripsi komunikasi FTP di Server ProFTPd di CentOS/RHEL 7 , menggunakan TLS (Transport Layer Security) dengan ekstensi FTPS Eksplisit (anggaplah FTPS seperti HTTPS untuk Protokol HTTP).

Langkah 1: Buat File Konfigurasi Modul TLS Proftpd

1. Seperti yang dibahas dalam tutorial Proftpd sebelumnya mengenai akun Anonim, panduan ini juga akan menggunakan pendekatan yang sama dalam mengelola file konfigurasi Proftpd di masa mendatang sebagai modul, dengan bantuan enabled_mod dan < direktori b>disabled_mod, yang akan menampung semua kemampuan server yang diperluas.

Jadi, buat file baru dengan editor teks favorit Anda bernama tls.conf di jalur Proftpd disabled_mod dan tambahkan arahan berikut.

nano /etc/proftpd/disabled_mod/tls.conf

Tambahkan kutipan konfigurasi file TLS berikut.

<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. Jika Anda menggunakan browser atau Klien FTP yang tidak mendukung koneksi TLS, beri komentar pada baris TLSRequired on untuk mengizinkan koneksi TLS dan non-TLS secara bersamaan dan hindari pesan error seperti pada screenshot di bawah ini.

Langkah 2: Buat File Sertifikat SSL untuk TLS

3. Setelah Anda membuat file konfigurasi modul TLS. yang akan mengaktifkan FTP melalui TLS di Proftpd, Anda perlu membuat Sertifikat dan Kunci SSL untuk menggunakan komunikasi aman melalui Server ProFTPD dengan bantuan paket OpenSSL.

yum install openssl

Anda dapat menggunakan satu perintah panjang untuk menghasilkan Sertifikat SSL dan pasangan Kunci, tetapi untuk menyederhanakan, Anda dapat membuat skrip bash sederhana yang akan menghasilkan pasangan SSL dengan nama yang Anda inginkan dan memberikan izin yang benar untuk file Kunci.

Buat file bash bernama proftpd_gen_ssl di /usr/local/bin/ atau di jalur sistem lain yang dapat dieksekusi (ditentukan oleh variabel ` PATH ).

nano /usr/local/bin/proftpd_gen_ssl

Tambahkan konten berikut ke dalamnya.

#!/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. Setelah Anda membuat file di atas, tetapkan file tersebut dengan izin eksekusi, pastikan direktori /etc/ssl/private ada dan jalankan skrip untuk membuat Sertifikat dan Kunci SSL berpasangan.

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

Berikan Sertifikat SSL dengan informasi yang diminta dan cukup jelas, namun perhatikan Nama Umum agar cocok dengan Nama Domain yang Sepenuhnya Memenuhi SyaratFQDN.

Langkah 3: Aktifkan TLS di Server ProFTPD

5. Karena file Konfigurasi TLS yang dibuat sebelumnya sudah mengarah ke file Sertifikat dan Kunci SSL yang benar, satu-satunya hal yang tersisa adalah mengaktifkan modul TLS dengan membuat tautan simbolis dari tls.conf ke direktori enabled-mod dan restart daemon ProFTPD untuk menerapkan perubahan.

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

6. Untuk menonaktifkan modul TLS cukup hapus symlink tls.conf dari direktori enabled_mod dan mulai ulang server ProFTPD untuk menerapkan perubahan.

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

Langkah 4: Buka Firewall untuk mengizinkan FTP melalui Komunikasi TLS

7. Agar klien dapat mengakses ProFTPD dan mengamankan file transfer dalam Mode Pasif Anda harus membuka seluruh rentang port antara 1024 dan 65534 di RHEL/CentOS Firewall, menggunakan perintah berikut.

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

Itu dia. Sekarang sistem Anda siap menerima komunikasi FTP melalui TLS dari sisi Klien.

Langkah 5: Akses ProFTPD melalui TLS dari Klien

8. Browser web biasanya tidak memiliki dukungan bawaan untuk FTP melalui protokol TLS, sehingga semua transaksi dikirimkan melalui FTP yang tidak terenkripsi. Salah satu Klien FTP terbaik adalah FileZilla, yang sepenuhnya Open Source dan dapat berjalan di hampir semua Sistem Operasi utama.

Untuk mengakses FTP melalui TLS dari FileZilla, buka Pengelola Situs, pilih FTP pada Protokol dan Memerlukan FTP eksplisit melalui TLS pada menu tarik-turun Enkripsi, pilih Jenis Logon Anda sebagai Normal, masukkan kredensial FTP Anda dan tekan Hubungkan untuk berkomunikasi dengan servernya.

9. Jika ini pertama kalinya Anda terhubung ke Server ProFTPD, pop-up dengan Sertifikat baru akan muncul, centang kotak yang bertuliskan Selalu percayai sertifikat untuk masa depan sesi dan tekan OK untuk menerima Sertifikat dan mengautentikasi ke server ProFTPD.

Jika Anda berencana menggunakan klien lain selain FileZilla untuk mengakses sumber daya FTP dengan aman, pastikan klien tersebut mendukung FTP melalui protokol TLS. Beberapa contoh bagus untuk klien FTP yang dapat menggunakan FTPS adalah WinSCP untuk Platform Windows dan gFTP atau LFTP (baris perintah) untuk NIX.