Cara Mengamankan Server FTP Menggunakan SSL/TLS untuk Transfer File Aman di CentOS 7


Berdasarkan desain aslinya, FTP (File Transfer Protocol) tidak aman, artinya ia tidak mengenkripsi data yang dikirimkan antara dua mesin, beserta kredensial pengguna. Hal ini menimbulkan ancaman besar terhadap data serta keamanan server.

Dalam tutorial ini, kami akan menjelaskan cara mengaktifkan layanan enkripsi data secara manual di server FTP di CentOS/RHEL 7 dan Fedora; kita akan melalui berbagai langkah untuk mengamankan layanan VSFTPD (Daemon FTP Sangat Aman) menggunakan sertifikat SSL/TLS.

Prasyarat:

  1. Anda harus menginstal dan mengkonfigurasi server FTP di CentOS 7

Sebelum kita mulai, perhatikan bahwa semua perintah dalam tutorial ini akan dijalankan sebagai root, jika tidak, gunakan perintah sudo untuk mendapatkan hak akses root jika Anda tidak mengontrol server menggunakan akun root.

Langkah 1. Menghasilkan Sertifikat SSL/TLS dan Kunci Pribadi

1. Kita perlu memulai dengan membuat subdirektori di bawah: /etc/ssl/ tempat kita akan menyimpan sertifikat dan file kunci SSL/TLS :

mkdir /etc/ssl/private

2. Kemudian jalankan perintah di bawah ini untuk membuat sertifikat dan kunci vsftpd dalam satu file, berikut penjelasan setiap flag yang digunakan.

  1. req – adalah perintah untuk manajemen Permintaan Penandatanganan Sertifikat (CSR) X.509.
  2. x509 – berarti pengelolaan data sertifikat X.509.
  3. hari – menentukan jumlah hari validitas sertifikat.
  4. newkey – menentukan pemroses kunci sertifikat.
  5. rsa:2048 – Pemroses kunci RSA, akan menghasilkan kunci pribadi 2048 bit.
  6. keyout – menyetel file penyimpanan kunci.
  7. keluar – mengatur file penyimpanan sertifikat, perhatikan bahwa sertifikat dan kunci disimpan dalam file yang sama: /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

Perintah di atas akan meminta Anda menjawab pertanyaan di bawah ini, ingatlah untuk menggunakan nilai yang sesuai dengan skenario Anda.

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 

Langkah 2. Mengonfigurasi VSFTPD Untuk Menggunakan SSL/TLS

3. Sebelum kita melakukan konfigurasi VSFTPD apa pun, mari kita buka port 990 dan 40000-50000 untuk mengizinkan koneksi TLS dan rentang port dari port pasif untuk mendefinisikan masing-masing dalam file konfigurasi VSFTPD:

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

4. Sekarang, buka file konfigurasi VSFTPD dan tentukan detail SSL di dalamnya:

vi /etc/vsftpd/vsftpd.conf

Cari opsi ssl_enable dan tetapkan nilainya menjadi YES untuk mengaktifkan penggunaan SSL, selain itu, karena TSL lebih aman daripada SSL, kami akan membatasi VSFTPD untuk menggunakan TLS sebagai gantinya, gunakan opsi ssl_tlsv1_2:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Lalu, tambahkan baris di bawah ini untuk menentukan lokasi sertifikat SSL dan file kunci:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6. Selanjutnya, kita harus mencegah pengguna anonim menggunakan SSL, lalu memaksa semua login non-anonim untuk menggunakan koneksi SSL aman untuk transfer data dan mengirimkan kata sandi saat login:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Selain itu, kami dapat menambahkan opsi di bawah ini untuk meningkatkan keamanan server FTP. Jika opsi require_ssl_reuse disetel ke YES, maka semua koneksi data SSL diperlukan untuk menunjukkan penggunaan kembali sesi SSL; membuktikan bahwa mereka mengetahui rahasia utama yang sama dengan saluran kontrol.

Oleh karena itu, kita harus mematikannya.

require_ssl_reuse=NO

Sekali lagi, kita perlu memilih cipher SSL mana yang akan diizinkan VSFTPD untuk koneksi SSL terenkripsi dengan opsi ssl_ciphers. Hal ini dapat sangat membatasi upaya penyerang yang mencoba memaksakan sandi tertentu yang mungkin mereka temukan kerentanannya:

ssl_ciphers=HIGH

8. Sekarang, atur rentang port (port min dan maks) dari port pasif.

pasv_min_port=40000
pasv_max_port=50000

9. Secara opsional, izinkan debugging SSL, artinya diagnostik koneksi openSSL dicatat ke file log VSFTPD dengan opsi debug_ssl:

debug_ssl=YES

Simpan semua perubahan dan tutup file. Lalu mari kita restart layanan VSFTPD:

systemctl restart vsftpd

Langkah 3: Menguji server FTP Dengan Koneksi SSL/TLS

10. Setelah melakukan semua konfigurasi di atas, uji apakah VSFTPD menggunakan koneksi SSL/TLS dengan mencoba menggunakan FTP dari baris perintah sebagai berikut:

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>

Dari tangkapan layar di atas, kita dapat melihat bahwa ada kesalahan yang memberi tahu kita bahwa VSFTPD hanya dapat mengizinkan pengguna untuk masuk dari klien yang mendukung layanan enkripsi.

Baris perintah tidak menawarkan layanan enkripsi sehingga menghasilkan kesalahan. Jadi, untuk terhubung ke server dengan aman, kita memerlukan klien FTP yang mendukung koneksi SSL/TLS seperti FileZilla.

Langkah 4: Instal FileZilla untuk Terhubung dengan Aman ke Server FTP

11. FileZilla adalah klien FTP lintas platform yang modern, populer, dan penting, yang mendukung koneksi SSL/TLS secara default.

Untuk menginstal FileZilla di Linux, jalankan perintah di bawah ini:

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Debian/Ubuntu ---------
sudo apt-get install  filezilla   

12. Ketika instalasi selesai (atau jika Anda sudah menginstalnya), buka dan buka File=>Sites Manager atau (tekan Ctrl+S ) untuk mendapatkan antarmuka Pengelola Situs di bawah.

Klik tombol Situs Baru untuk menambahkan detail koneksi situs/host baru.

13. Selanjutnya, tetapkan nama host/situs, tambahkan alamat IP, tentukan protokol yang akan digunakan, enkripsi, dan jenis logon seperti pada cuplikan layar di bawah ini (gunakan nilai yang sesuai dengan skenario Anda):

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. Kemudian klik Hubungkan untuk memasukkan kata sandi lagi, lalu verifikasi sertifikat yang digunakan untuk koneksi SSL/TLS dan klik OK sekali lebih lanjut untuk terhubung ke server FTP:

Pada tahap ini, kita seharusnya sudah berhasil login ke server FTP melalui koneksi TLS, periksa bagian status koneksi untuk informasi lebih lanjut dari antarmuka di bawah ini.

15. Terakhir, coba transfer file dari mesin lokal ke server FTP di folder file, lihat bagian bawah antarmuka FileZilla untuk melihatnya laporan tentang transfer file.

Itu saja! Ingatlah selalu bahwa FTP tidak aman secara default, kecuali kami mengonfigurasinya untuk menggunakan koneksi SSL/TLS seperti yang kami tunjukkan dalam tutorial ini. Bagikan pendapat Anda tentang tutorial/topik ini melalui formulir umpan balik di bawah.