Very Secure FTP Daemon (vsftpd) adalah server FTP ringan untuk Linux. Topik ini memandu Anda melalui proses instalasi dan konfigurasi vsftpd pada Simple Application Server berbasis Linux, lalu memverifikasi koneksi menggunakan FileZilla.
FTP mentransmisikan data—termasuk kredensial—dalam bentuk teks biasa. Untuk beban kerja produksi yang memerlukan enkripsi, pertimbangkan SFTP atau FTPS sebagai gantinya. Panduan ini membahas vsftpd untuk kasus penggunaan di mana FTP merupakan kebutuhan spesifik.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Simple Application Server berbasis Linux. Lihat Buat server aplikasi sederhana.
Password yang telah ditetapkan untuk server. Lihat Tetapkan atau atur ulang password server.
FileZilla yang telah diinstal pada mesin lokal Anda. Unduh dari filezilla-project.org.
Mode koneksi dan otentikasi FTP
FTP beroperasi dalam dua mode koneksi:
Active mode: Klien mengirim informasi port-nya ke server, dan server memulai koneksi data.
Passive mode: Server membuka sebuah port dan mengirim informasi port tersebut ke klien, yang kemudian memulai koneksi. Panduan ini mengonfigurasi passive mode, yang bekerja lebih baik melalui firewall dan NAT.
FTP mendukung tiga mode otentikasi:
| Mode | Keamanan | Deskripsi |
|---|---|---|
| Anonymous user mode | Terendah | Tidak memerlukan username atau password. Hanya cocok untuk transfer file publik. Hindari di lingkungan produksi. |
| Local user mode | Sedang | Melakukan otentikasi terhadap pengguna Linux lokal. Dibahas dalam panduan ini. |
| Virtual user mode | Tertinggi | Menggunakan pengguna virtual yang terisolasi dari sistem. Memerlukan konfigurasi profesional. |
Panduan ini mencakup local user mode (direkomendasikan) dan anonymous user mode.
Langkah 1: Instal vsftpd
Periksa apakah vsftpd sudah terinstal. Beberapa server yang dideploy dengan application image menyertakan vsftpd pra-instal—menginstal ulang dapat menyebabkan konflik.
vsftpd -vJika output menampilkan nomor versi, berarti vsftpd sudah terinstal:
vsftpd: version 3.0.2Jika vsftpd sudah terinstal, dapatkan kredensial FTP dari dokumentasi application image Anda, lalu lewati ke Langkah 3: Buka port firewall.
Instal vsftpd. Contoh ini menggunakan CentOS 7. Untuk distribusi lain, lihat Build an FTP site on an ECS instance.
sudo yum install -y vsftpdPesan sukses akan mengonfirmasi instalasi.
Aktifkan vsftpd agar otomatis berjalan saat boot:
sudo systemctl enable vsftpd.serviceJalankan vsftpd:
sudo systemctl start vsftpd.serviceCatatanJika layanan gagal dijalankan dengan error
Job for vsftpd.service failed because the control process exited with error code, port 21 mungkin sedang digunakan. Jalankanlsof -i:21untuk mengidentifikasi proses tersebut, lalu jalankankill -9 <PID>untuk menghentikannya sebelum menjalankan ulang vsftpd.Verifikasi bahwa vsftpd sedang berjalan:
sudo netstat -antup | grep ftpJika port layanan FTP muncul dalam output, berarti vsftpd sedang berjalan.
Langkah 2: Konfigurasi mode akses
Pilih salah satu mode berikut. Local user mode direkomendasikan untuk keamanan yang lebih baik.
Local user mode (direkomendasikan)
Buat pengguna Linux khusus untuk akses FTP. Contoh ini menggunakan
ftptest.sudo adduser ftptestTetapkan password untuk pengguna tersebut:
sudo passwd ftptestIkuti prompt untuk memasukkan dan mengonfirmasi password.
Buat direktori FTP:
sudo mkdir /var/ftp/testTetapkan kepemilikan direktori kepada
ftptest:sudo chown -R ftptest:ftptest /var/ftp/testBuat cadangan file konfigurasi vsftpd sebelum mengedit:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bakBuka file konfigurasi untuk diedit:
CatatanJika Anda menginstal vsftpd dengan
apt install vsftpd, file konfigurasinya berada di/etc/vsftpd.confsebagai gantinya.sudo vim /etc/vsftpd/vsftpd.confTekan
iuntuk memasuki mode edit.Perbarui parameter berikut. Pastikan tidak ada baris ini yang dikomentari dengan
#, dan hindari spasi tambahan di akhir baris—spasi berlebih menyebabkan vsftpd gagal saat restart./etc/vsftpd/vsftpd.conf# Nonaktifkan login anonim anonymous_enable=NO # Izinkan pengguna lokal untuk login local_enable=YES # Dengarkan pada IPv4 listen=YESKomentari listener IPv6 dengan menambahkan
#di awal baris:#listen_ipv6=YESTambahkan parameter berikut di akhir file. Ganti
39.105.xx.xxdengan Alamat IP publik server Anda./etc/vsftpd/vsftpd.conf# Tetapkan direktori home untuk pengguna lokal setelah login local_root=/var/ftp/test # Batasi pengguna hanya pada direktori home mereka chroot_local_user=YES # Aktifkan daftar pengguna yang dikecualikan dari pembatasan chroot chroot_list_enable=YES # Lokasi file daftar pengecualian chroot_list_file=/etc/vsftpd/chroot_list # Aktifkan passive mode pasv_enable=YES allow_writeable_chroot=YES # Alamat IP publik server pasv_address=39.105.xx.xx # Range port passive mode (port bernomor tinggi mengurangi eksposur) pasv_min_port=50000 pasv_max_port=50010Tekan
Esc, lalu ketik:wqdan tekanEnteruntuk menyimpan dan keluar.Buat file daftar pengecualian chroot. Pengguna yang tercantum di sini tidak dibatasi pada direktori home. File ini wajib ada meskipun kosong.
sudo vim /etc/vsftpd/chroot_listTekan
iuntuk memasuki mode edit. Tambahkan username yang dikecualikan, satu per baris (biarkan file kosong jika tidak ada pengecualian). TekanEsc, lalu ketik:wqdan tekanEnteruntuk menyimpan dan keluar.Hentikan firewall sistem. vsftpd mengelola akses port melalui firewall Simple Application Server yang dikonfigurasi di Langkah 3.
sudo systemctl stop firewalldAktifkan otentikasi password dalam konfigurasi SSH:
sudo vi /etc/ssh/sshd_configCari
PasswordAuthenticationdi akhir file dan atur nilainya menjadiyes. TekanEsc, lalu ketik:wq!dan tekanEnteruntuk menyimpan dan keluar.Jalankan ulang vsftpd untuk menerapkan semua perubahan:
sudo systemctl restart vsftpd.service
Anonymous user mode
Mode anonim memungkinkan siapa pun terhubung tanpa password. Gunakan ini hanya untuk transfer file publik di lingkungan non-produksi.
Buka file konfigurasi vsftpd:
CatatanJika Anda menginstal vsftpd dengan
apt install vsftpd, file konfigurasinya berada di/etc/vsftpd.confsebagai gantinya.sudo vim /etc/vsftpd/vsftpd.confTekan
iuntuk memasuki mode edit.Tetapkan parameter berikut. Nilai default bervariasi tergantung distribusi Linux—pastikan kedua nilai berikut adalah
YESsetelah diedit. Pastikan tidak ada baris ini yang dikomentari dengan#, dan hindari spasi tambahan di akhir baris./etc/vsftpd/vsftpd.confanonymous_enable=YES anon_upload_enable=YES listen=YES listen_ipv6=NOTambahkan parameter berikut di akhir file. Ganti
39.105.xx.xxdengan Alamat IP publik server Anda./etc/vsftpd/vsftpd.conf# Aktifkan passive mode pasv_enable=YES # Range port passive mode pasv_min_port=50000 pasv_max_port=50010 # Alamat IP publik server pasv_address=39.105.xx.xxTekan
Esc, lalu ketik:wqdan tekanEnteruntuk menyimpan dan keluar.Berikan izin tulis pada direktori FTP default (
/var/ftp/pub):sudo chmod o+w /var/ftp/pub/Jalankan ulang vsftpd:
sudo systemctl restart vsftpd.service
Langkah 3: Buka port firewall
Tambahkan aturan masuk di firewall Simple Application Server untuk mengizinkan traffic FTP. Passive mode memerlukan port 21 dan range port passive. Lihat Manage a firewall untuk petunjuknya.
| Jenis aplikasi | Protokol | Range port |
|---|---|---|
| FTP | TCP | 21 |
| Custom | TCP | pasv_min_port–pasv_max_port (contoh: 50000/50010) |
Setelah menambahkan aturan, aturan tersebut akan muncul di halaman Firewall:

Langkah 4: Verifikasi koneksi FTP
Gunakan FileZilla untuk memastikan server FTP dapat diakses.
Contoh ini menggunakan FileZilla 3.64.0. Antarmuka mungkin berbeda pada versi lain.
Buka FileZilla.
Buka File > Site Manager.
Klik New site (N) di pojok kiri bawah dialog Site Manager.
Masukkan nama untuk situs baru dan konfigurasikan koneksi:

Parameter Nilai Name Nama situs kustom. Contoh: test-01.Protocol FTP Host Alamat IP publik server (contoh: 121.43.XX.XX)Port 21 Logon type Anonymous (untuk mode anonim) atau Normal (untuk mode pengguna lokal) Untuk mode pengguna lokal, atur Logon type ke Normal dan masukkan username serta password FTP.
Klik Connect.
Setelah terhubung, gunakan FileZilla untuk mengunggah, mengunduh, atau menghapus file. Antarmuka terbagi menjadi empat bagian:

| Bagian | Deskripsi |
|---|---|
| ① | Status koneksi, perintah, dan hasil tugas |
| ② | Mesin lokal: daftar direktori dan file |
| ③ | Server remote: daftar direktori FTP. Dalam mode anonim, direktori default adalah /pub. |
| ④ | Antrian transfer dan log tugas |
Referensi konfigurasi vsftpd
Direktori /etc/vsftpd berisi tiga file utama:
/etc/vsftpd/vsftpd.conf: file konfigurasi utama/etc/vsftpd/ftpusers: pengguna dalam file ini ditolak akses FTP-nya (blacklist)/etc/vsftpd/user_list: pengguna dalam file ini diizinkan akses FTP (daftar putih)
Parameter kontrol login
| Parameter | Deskripsi |
|---|---|
anonymous_enable=YES | Menerima pengguna anonim |
no_anon_password=YES | Melewati prompt password untuk pengguna anonim |
anon_root= | Direktori home untuk pengguna anonim |
local_enable=YES | Menerima pengguna lokal |
local_root= | Direktori home untuk pengguna lokal |
Parameter izin
| Parameter | Deskripsi |
|---|---|
write_enable=YES | Mengizinkan semua pengguna mengunggah file |
local_umask=022 | Mask izin file untuk unggahan pengguna lokal |
file_open_mode=0666 | Terapkan umask pada izin file yang diunggah |
anon_upload_enable=NO | Mengizinkan pengguna anonim mengunggah file |
anon_mkdir_write_enable=NO | Mengizinkan pengguna anonim membuat direktori |
anon_other_write_enable=NO | Mengizinkan pengguna anonim memodifikasi atau menghapus file |
chown_username=lightwiter | Pemilik yang ditetapkan untuk file yang diunggah oleh pengguna anonim |