GNU/Linux >> Belajar Linux >  >> Cent OS

Cara mengkonfigurasi vsftpd untuk menggunakan SSL/TLS (FTPS) di CentOS/Ubuntu

Mengamankan FTP

Vsftpd adalah server ftp yang banyak digunakan, dan jika Anda mengaturnya di server Anda untuk mentransfer file, maka waspadalah terhadap masalah keamanan yang muncul. Protokol ftp memiliki keamanan yang lemah yang melekat pada desainnya. Ini mentransfer semua data dalam teks biasa (tidak terenkripsi), dan di jaringan publik/tidak aman, ini adalah sesuatu yang terlalu berisiko.

Untuk memperbaiki masalah ini, kami memiliki FTPS. Ini mengamankan komunikasi FTP dengan mengenkripsinya dengan SSL/TLS. Dan postingan ini menunjukkan cara mengatur enkripsi SSL dengan vsftpd.

Instal vsftpd

Vsftpd tersedia di repositori default semua distro utama termasuk debian, ubuntu, centos dan fedora dan dapat diinstal tanpa kerumitan. Hanya ada satu file konfigurasi bernama vsftpd.conf yang berada di direktori /etc.

# ubuntu/debian
$ sudo apt-get install vsftpd
# centos/fedora
# sudo yum install vsftpd

Sisanya adalah mengkonfigurasi vsftpd untuk menggunakan enkripsi ssl untuk komunikasi ftp. Ini hanya proses 2 langkah.

Buat sertifikat SSL

Langkah pertama adalah membuat sertifikat ssl dan file kunci yang akan digunakan vsftpd untuk enkripsi. Parameter konfigurasi "rsa_cert_file" akan menyimpan jalur ke file sertifikat. Itu memang memiliki nilai default yang dapat ditemukan di halaman manual.

$ man vsftpd.conf | grep rsa_cert_file -A 5
       rsa_cert_file
              This option specifies the location of the RSA certificate to
              use for SSL encrypted connections.
              Default: /usr/share/ssl/certs/vsftpd.pem

Ini berbeda di Ubuntu dan CentOS. Kita dapat menyimpannya di lokasi manapun yang kita suka.
Buat sertifikat ssl dengan perintah openssl. Kami menyatukan sertifikat dan kunci dalam satu file.

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Jawab pertanyaan berikut dan dalam beberapa detik file sertifikat akan siap. Outputnya akan terlihat seperti ini

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Generating a 1024 bit RSA private key
.............++++++
....++++++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:NY
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Konfigurasi Vsftpd untuk SSL

Tugas selanjutnya adalah mengonfigurasi vsftpd untuk menggunakan sertifikat ssl ini untuk enkripsi. File vsftpd.conf dapat ditemukan di lokasi berikut

# Ubuntu/Debian
/etc/vsftpd.conf 

# CentOS/Fedora
/etc/vsftpd/vsftpd.conf

Buka file vsftpd.conf, dan edit seperti gambar di bawah

Berikut ini akan memberi tahu vsftpd lokasi file sertifikat/kunci yang akan digunakan.

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

Tambahkan opsi berikut untuk mengaktifkan SSL. Ini akan mengaktifkan SSL dan memaksa enkripsi untuk transfer data serta login.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Baris berikut akan memberi tahu vsftpd untuk menggunakan TLS bila berlaku, yang lebih aman daripada SSL pendahulunya.

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

Semua arahan konfigurasi yang diperlukan telah ditambahkan. Simpan file dan mulai ulang vsftpd

# service vsftpd restart
# or
# sudo /etc/init.d/vsftpd restart

Uji SSL di vsftpd

Sekarang pengaturan kami selesai, saatnya untuk mengujinya.

Pertama-tama coba sambungkan menggunakan perintah ftp biasa dan itu akan gagal meminta enkripsi.

$ ftp 192.168.1.5
Connected to 192.168.1.5.
220 (vsFTPd 2.2.2)
Name (192.168.1.5:enlightened): pal
530 Non-anonymous sessions must use encryption.
Login failed.
ftp>

Selanjutnya verifikasi bahwa enkripsi SSL berfungsi dengan baik. Klien ftp Gui seperti FileZilla dapat menggunakan FTPS, tetapi demi kenyamanan, kita akan menggunakan alat baris perintah yang disebut curl, dan berikut adalah perintah yang sangat sederhana yang harus terhubung ke server FTPS dan membuat daftar file

$ curl --ftp-ssl --insecure --ftp-port 192.168.1.2:6003 --user pal:pal ftp://192.168.1.5
-rw-r--r--    1 0        0               0 Jan 03 06:10 abcd.txt
-rw-r--r--    1 0        0               0 Jan 03 06:10 cdefg.txt

File-file itu ada di direktori home sobat pengguna di server ftp. Pastikan Anda memiliki beberapa file di rumah server untuk membuatnya terdaftar dan diverifikasi. Jika tidak, curl hanya akan kembali kosong.
Berikut adalah penjelasan singkat tentang opsi curl yang kami gunakan.

ftp-ssl : Tells curl to use ftps

insecure : Tells curl not to use any ssl certificate to authenticate and just connect right away.

ftp-port : Tells curl that we are in ACTIVE mode. In ACTIVE mode the client has to tell the server the hostname and port number to connect back to. If you have configured passive mode ftp, then do not use this.

user : Specifies the username and password joined with a colon.

The last thing is the ftp url.

Jika Anda tidak menentukan port ftp pada koneksi ftp mode AKTIF, Anda akan mendapatkan kesalahan "Tidak ada rute ke host
".

Jika Anda mendapatkan "bind() gagal, kami kehabisan port!" kesalahan maka cukup ubah nomor port.

Anda juga dapat menggunakan url seperti ini

$ curl ftps://192.168.1.5 ...

Tapi kemudian curl akan mencoba menyambung ke port 990 dan kecuali Anda telah mengonfigurasi vsftpd untuk melayani pada port itu, itu tidak akan berfungsi.

Jika curl gagal terhubung ke vsftpd atau membuat daftar file dengan benar, gunakan opsi verbose (-v) dan lihat detail lebih lanjut tentang apa yang salah lalu perbaiki.

Catatan Tambahan

FTPS mengamankan FTP dengan menambahkan enkripsi SSL ke saluran komunikasi. Cara lain yang disarankan untuk membuat koneksi aman adalah dengan menggunakan SFTP (SSH File Transfer Protocol). Paket OpenSSH populer yang menyediakan layanan ssh, juga menyediakan SFTP tanpa memerlukan pengaturan atau konfigurasi tambahan. Namun tidak semua klien FTP dan alat pengembangan web mendukung SFTP.


Cent OS
  1. Cara Mengonfigurasi PureFTPd Untuk Menerima Sesi TLS Di CentOS 6.2

  2. Cara Mengonfigurasi Autofs di CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

  3. Cara Mengamankan vsFTPd Dengan SSL/TLS

  1. Cara Menginstal dan Mengonfigurasi server FTP (vsftpd) dengan SSL/TLS di Ubuntu 20.04

  2. Cara Konfigurasi OpenSSH di CentOS 7

  3. Bagaimana Mengkonfigurasi VSFTPD dengan koneksi terenkripsi SSL/TLS?

  1. Cara Mengonfigurasi Klien FreeIPA di Ubuntu 18.04 / CentOS 7

  2. Cara Mengkonfigurasi server DHCP di CentOS 7 / Ubuntu 18.04 / 16.04 / Debian 9

  3. Cara Menggunakan Garam di Centos 8