File Transfer Protocol (FTP) adalah protokol jaringan standar yang digunakan untuk mentransfer file antara client dan server melalui jaringan komputer. Ada beberapa aplikasi FTP server yang tersedia untuk Linux, yaitu PureFTPd, ProFTPd, dan vsftpd.
Artikel ini membahas tentang cara install FTP server dengan vsftpd (very secure FTP daemon) di Debian 9. vsftpd dirancang untuk sistem operasi Unix-like, termasuk Linux. Beberapa website besar yang menggunakan vsftpd sebagai FTP server:
-
- ftp.redhat.com
- ftp.suse.com
- ftp.debian.org
- ftp.freebsd.org
- ftp.gnu.org
- ftp.gnome.org
- ftp.kernel.org
0. Install vsftpd di Debian 9
Install paket vsftpd.
apt install vsftpd -y
1. Setting vsftpd
Backup terlebih dahulu file setting vsftpd.conf, sebagai cadangan jika terjadi kesalahan. Lalu buka file settingnya.
cp /etc/vsftpd.conf /etc/vsftpd.conf.default
nano /etc/vsftpd.conf
Cara setting write_enable, aktifkan dengan menghapus karakter # dan ubah nilainya menjadi YES. Opsi ini agar dapat melakukan penulisan file (upload/create/delete) di server.
write_enable=YES
Restart service dan cek statusnya.
systemctl restart vsftpd
systemctl status vsftpd
Uji konfigurasi dengan menggunakan aplikasi FTP client seperti FileZilla di PC client. Login menggunakan username dan password yang terdapat di sistem server dan upload file.
FileZilla, uji upload file
Chroot Jail
Membatasi user agar tidak bisa mengakses direktori lain kecuali direktori home milik sendiri. Jika opsi belum ada, tambahkan di baris paling bawah.
chroot_local_user=YES
allow_writeable_chroot=YES
Restart service dan cek statusnya.
systemctl restart vsftpd
systemctl status vsftpd
Login kembali ke FTP server, jika chroot jail berhasil, user hanya bisa mengakses direktori home sendiri atau alamat remote site dari /home/user berubah menjadi /.
FileZilla, chroot jail
Local Root
Default direktori saat login FTP adalah direktori home (/home/user). Direktori root si user bisa diarahkan ke direktori lain, misalnya untuk kebutuhan document root website /var/www/user. Lakukan setting local root.
user_sub_token=$USER
local_root=/var/www/$USER
Buat direktori sesuai nama user di /var/www dan buat file di dalamnya untuk menguji bahwa file tersebut berada di direktori /var/www/user.
mkdir -p /var/www/user
cd /var/www/user
touch dir_var_www_user.txt
chown -R user:user /var/www/user
chmod -R 755 /var/www/user
Restart service dan cek statusnya.
systemctl restart vsftpd
systemctl status vsftpd
Login ke FTP server dan lihat file yang ada di direktori.
FileZilla, local root
Passive Mode
vsftpd dapat menggunakan port mana saja untuk koneksi passive FTP. Tentukan minimum dan maximum dari port yang akan digunakan.
pasv_enable=YES
pasv_min_port=10090
pasv_max_port=10100
FTP over TLS
Pada log FileZilla terdapat pesan Status: Insecure server, it does not support FTP over TLS, yang artinya data belum dienkripsi.
Membuat SSL key untuk mendukung enkripsi data.
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Tampil pertanyaan untuk identitas pemilik sertifikat SSL.
Country Name (2 letter code) [AU]:ID
State or Province Name (full name) [Some-State]:Sulawesi Selatan
Locality Name (eg, city) []:Makassar
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MusaAmin.Web.ID
Organizational Unit Name (eg, section) []:Labs MusaAmin.Web.ID
Common Name (e.g. server FQDN or YOUR name) []:www.musaamin.web.id
Email Address []:hai@musaamin.web.id
Tambah atau ubah setting SSL/TLS.
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
ssl_ciphers=HIGH
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
Restart service vsftpd dan uji apakah SSL/TLS sudah aktif.
systemctl restart vsftpd
systemctl status vsftpd
FileZilla, TLS connection status
sumber : https://musaamin.web.id/cara-install-ftp-server-dengan-vsftpd-di-debian-9-server/