GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengkonfigurasi VSFTPD FTPS dengan SSL/TLS di Ubuntu 18.04

FTP, akronim dari File Transfer Protocol, digunakan untuk mentransfer file antara komputer dan server dalam jaringan komputer tertentu. Protokol FTP menggunakan cara transfer data yang tidak aman dan harus dibatasi pada jaringan yang Anda percayai. Sebagai gantinya, kita harus memiliki FTPS (File Transfer Protocol with SSL) yang menggunakan koneksi aman SSL antara kedua ujungnya atau menggunakan SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol).

Tutorial ini memberikan langkah-langkah terperinci tentang cara mengkonfigurasi server vsftpd aman dengan SSL/TLS di Ubuntu 18.04 dan menghubungkan ke server menggunakan terminal dan alat GUI.

Instal server VSFTPD

Ada beberapa server FTP yang tersedia di Linux. Kita akan menginstal vsftp. Untuk melakukannya di Ubuntu 18.04 kita ketik perintah berikut di terminal:

sudo apt install vsftpd

Setelah vsftpd diinstal, file konfigurasi defaultnya terletak di /etc/vsftpd.conf. Untuk membuat perubahan dengan file itu dan menguji konfigurasi khusus, kami membuat cadangan file ini terlebih dahulu. Untuk melakukannya, Anda dapat menjalankan:

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Kemudian kita buat file vsftpd.conf dengan perintah berikut:

sudo vim /etc/vsftpd.conf

dan tambahkan baris berikut ke file:vsftpsft

 listen=NO
 listen_ipv6=YES
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 dirmessage_enable=YES
 use_localtime=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chroot_local_user=YES
 secure_chroot_dir=/var/run/vsftpd/empty
 pam_service_name=vsftpd
 pasv_enable=Yes
 pasv_min_port=10000
 pasv_max_port=11000
 user_sub_token=$USER
 local_root=/home/$USER/ftp
 userlist_enable=YES
 userlist_file=/etc/vsftpd.userlist
 userlist_deny=NO

Perhatikan bahwa ini adalah konfigurasi yang paling umum digunakan dan Anda bebas mengubahnya sesuai kebutuhan Anda.

Ubuntu 18.04 hadir dengan ufw (Firewall tidak rumit) yang sudah diinstal dan diaktifkan. Anda dapat memeriksa apakah ufw berjalan di mesin Anda dengan perintah ini:

sudo service ufw status

Jika sedang berjalan dan Anda akan membiarkannya berjalan, Anda harus mengizinkan lalu lintas masuk ke port FTP (20,21 untuk koneksi aktif dan 10000-10100 untuk yang pasif). Untuk melakukannya, Anda dapat menjalankan:

sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

Jika berhasil, outputnya akan seperti di bawah ini:

Rules updated
Rules updated (v6)

Setelah semua langkah ini selesai, kita perlu me-restart server vsftpd dengan perintah berikut:

sudo service vsftpd restart

Membuat pengguna untuk terhubung ke server FTP

Setelah server vsftp diinstal dan dikonfigurasi sesuai dengan kebutuhan kita, kita tidak perlu membuat pengguna (misalnya ftpsuer) untuk terhubung ke server ftp. Untuk melakukannya, Anda dapat menjalankan:

sudo useradd -m ftpuser

Buat kata sandi untuk pengguna yang baru dibuat dengan perintah di bawah ini:

sudo passwd ftpuser

Setelah Anda akan diminta untuk memasukkan kata sandi UNIX baru dan ketik ulang agar perubahan diterapkan. Output yang berhasil terlihat seperti ini:

passwd: password updated successfully

Siapkan direktori pengguna FTP

Salah satu tindakan terpenting yang perlu dilakukan untuk mengamankan koneksi FTP adalah membatasi pengguna ke direktori home mereka sehingga mereka tidak memiliki akses ke direktori lain sama sekali. Untuk melakukannya di vsftpd kita perlu mengaktifkan chroot di file konfigurasi, yang sudah kita lakukan di bagian konfigurasi artikel (chroot_local_user=YES ). Cara keamanan direktori vsftpd mengasumsikan pengguna tidak memiliki akses tulis ke sana. Tetapi jika kami memberikan akses FTP ke pengguna yang ada dan mereka menggunakan shell untuk menggunakan server, mereka mungkin perlu memiliki akses tulis ke folder rumah mereka. Untuk menghindari kurangnya keamanan dan juga memiliki akses FTP yang tepat untuk pengguna, kami membuat folder ftp di direktori home pengguna dan menambahkannya ke konfigurasi vsftpd sebagai root lokal saat menghubungkan melalui FTP. Kita juga perlu mengubah kepemilikan direktori dan menghapus akses tulis. Untuk melakukannya, Anda dapat menjalankan:

sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp

kemudian tambahkan/ubah baris berikut di file konfigurasi vsftpd /etc/vsftpd.conf

user_sub_token=$USER 
local_root=/home/$USER/ftp

Setelah langkah-langkah ini selesai, kita perlu membuat folder lain di /home/ftpuser/ftp dan menetapkan kepemilikannya kepada pengguna

sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

Untuk menguji apakah kita dapat melihat file di direktori home pengguna setelah terhubung ke server FTP, kita akan membuat file tes di direktori itu dan menambahkan beberapa teks di dalamnya. Untuk melakukannya, Anda dapat menjalankan:

echo "test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Untuk mengizinkan atau menolak akses pengguna tertentu ke vsftpd, kita dapat menggunakan file daftar pengguna dan menambahkan catatan yang sesuai dalam file konfigurasi vsftpd. Untuk melakukannya, Anda dapat menjalankan yang berikut:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Jika userlist_deny disetel ke NO, hanya pengguna yang ditambahkan ke file yang dapat mengakses server FTP dan jika disetel ke YA, pengguna yang tercantum dalam file tidak akan memiliki akses ke server FTP dan orang lain akan memiliki akses. Tambahkan nama pengguna ke file yang disebutkan di atas dengan perintah di bawah ini:

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

Konfigurasikan SSL untuk VSFTPD

Karena data (bahkan kredensial) yang ditransfer melalui FTP tidak dienkripsi, kami dapat mengaktifkan TLS/SSL untuk memberikan tingkat keamanan lain ke server FTP kami. Untuk membuat sertifikat menggunakan openssl, jalankan perintah berikut:

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

di mana -days 365 adalah untuk menambahkan sertifikat selama satu tahun dan menambahkan nilai yang sama untuk flag -out, -keyout untuk menemukan kunci pribadi dan sertifikat dalam file yang sama. Anda akan diminta untuk menambahkan semua informasi yang diperlukan untuk membuat sertifikat, seperti yang ditunjukkan di bawah ini

Generating a 2048 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) [AU]:AU
State or Province Name (full name) [Some-State]:SY
Locality Name (eg, city) []:Sydney
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu
Email Address []:[email protected]

Setelah sertifikat dibuat, kita perlu menambahkannya ke file konfigurasi vsftpd dan mengaktifkan SSL. Untuk melakukannya, tambahkan baris berikut ke file yang disebutkan:

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

Setelah itu, kita perlu menolak koneksi anonim melalui SSL dan meminta SSL untuk transfer data dan login. Untuk melakukannya tambahkan baris berikut ke /etc/vsftpd.conf berkas:

 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES

Setelah baris di atas ditambahkan, kami akan mengonfigurasi server untuk menggunakan TLS, yang merupakan penerus SSL yang lebih disukai. Untuk melakukannya, tambahkan baris berikut dalam file yang sama:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Setelah semua langkah, file konfigurasi vsftpd kita akan terlihat seperti ini:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Setelah ada perubahan dalam file konfigurasi vsftpd, kita perlu me-restart layanan dengan perintah berikut:

sudo service vsftpd restart

Anda juga dapat mengonfigurasi vsftpd untuk menggunakan sertifikat letsencrypt untuk sftp tetapi pastikan Anda memiliki domain untuk divalidasi. Anda dapat menambahkan variabel path dalam konfigurasi vsftpd di mana ssl cert dan private disimpan sebagai kunci.

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem
rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

Menghubungkan ke server FTP

Ada dua metode untuk terhubung ke server ftp:

  • menggunakan terminal
  • menggunakan klien FTP dengan GUI

Hubungkan menggunakan terminal

Untuk terhubung ke server ftp melalui baris perintah ketik perintah berikut di terminal:

ftp ubuntu

Dimana ubuntu adalah nama host dari mesin tempat server ftp diinstal. Pastikan mesin server ftp dapat diakses melalui nama hostnya dari mesin yang Anda coba sambungkan.

Setelah terhubung, Anda akan diminta memasukkan nama pengguna dan kata sandi untuk menghubungkan ke server ftp:

Connected to ubuntu.
220 (vsFTPd 3.0.3)
Name (ubuntu:ubuntu): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Ketik ls untuk memeriksa apakah file tes yang dibuat sebelum ada di sana:

Perintah
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files
226 Directory send OK.

Hubungkan menggunakan klien FTP dengan GUI

Kami akan menggunakan Filezilla untuk terhubung ke server FTP kami yang diinstal di Linux. Untuk melakukannya, buka klien Filezilla di komputer Anda dan masukkan alamat IP server FTP, kredensial ftpuser untuk terhubung dan tekan tombol sambungkan seperti yang ditunjukkan pada gambar di bawah. Anda akan diminta untuk menambahkan sertifikat ke tepercaya, setelah itu Anda akan dapat terhubung ke server FTP.

Setelah menghubungkan kita dapat melihat bahwa test.txt yang kita buat sebelumnya ada di sana.

Bacaan Terkait:

  • Cara Menyiapkan Server SFTP MySecureShell di Ubuntu 18.04
  • 5 Langkah untuk Menginstal dan Mengatur ProFTPD di Debian 9 Stretch
  • 12 Perintah lftp untuk Mengelola File dengan Contoh

Seperti yang dapat Anda pelajari dari artikel, menginstal server vsftpd dan menghubungkannya sangat mudah dan dapat dilakukan dalam beberapa langkah. Poin utama di sini adalah mengamankan server ftp melalui file konfigurasinya seperti chroot pengguna ke direktori home-nya, menonaktifkan login anonim dan menambahkan umask lokal serta izin baca dan tulis pengguna.


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

  2. Instal Vsftpd dengan SSL/TLS di Ubuntu 20.04

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

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

  2. Instal Vsftpd dengan SSL / TLS di Ubuntu 20.04 - Prosedur Terbaik?

  3. Cara Mengamankan vsFTPd Dengan SSL/TLS

  1. Cara Menginstal Server FTP Di Ubuntu dengan vsftpd

  2. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 20.04

  3. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 18.04