- Pengantar
Apa itu FTP Server ?
FTP Server (File Transfer Protocol Server) adalah layanan jaringan yang digunakan untuk mentransfer file antara komputer client dan server melalui protokol FTP. FTP memungkinkan pengguna untuk mengunggah (upload) atau mengunduh (download) file ke/dari server. Layanan ini sering digunakan dalam lingkungan hosting, berbagi file, dan manajemen file jarak jauh.
Fungsi utama FTP Server
- Pertukaran File: Memfasilitasi pengiriman dan penerimaan file antar sistem.
- Manajemen File Jarak Jauh: Pengguna dapat mengelola file di server dari lokasi yang berbeda.
- Distribusi Data: Berguna untuk mendistribusikan file berukuran besar atau banyak file kepada banyak pengguna.
Kelebihan FTP
- Sederhana dan Mudah Digunakan: Konfigurasi dasar relatif mudah.
- Universal: Banyak client FTP tersedia di berbagai platform.
Kekurangan FTP (FTP standar)
- Tidak Aman (Clear Text): FTP standar mengirimkan data (termasuk username dan password) dalam bentuk teks biasa (plain text), sehingga rentan terhadap penyadapan. Ini adalah risiko keamanan yang serius.
Daftar isi
- Pengantar
- - Apa itu FTP Server?
- -
- Konfigurasi FTP Server
- - Langkah 1 - Instalasi vsftp
- - Langkah 2 - Konfigurasi vsftp dengan user anonymous
- - Langkah 3 - Konfigurasi vsftp dengan user authentication
- - Langkah 4 - Mengaktifkan FTP Pasif (Opsional)
- - Langkah 5 - Mengaktifkan TLS untuk Keamanan (Opsional)
- - Langkah 6 - Tips Keamanan Tambahan
- Konfigurasi FTP Server
Dalam panduan ini, kita akan menggunakan vsftpd (Very Secure FTP Daemon), yang dikenal sebagai salah satu FTP server yang ringan dan aman di Linux.
Langkah 1 – Instalasi vsftp
Login ke server dengan user root dan kemudian laukan update terlebih dahulu. Selalu lakukan pembaharuan daftar paket sistem sebelum menginstal paket baru.
root@ns100:~# apt update Hit:1 http://deb.debian.org/debian bookworm InRelease Get:2 http://security.debian.org/debian-security bookworm-security InRelease [48.0 kB] Get:3 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB] Get:4 http://security.debian.org/debian-security bookworm-security/non-free-firmware Sources [796 B] Get:5 http://security.debian.org/debian-security bookworm-security/main Sources [137 kB] Get:6 http://security.debian.org/debian-security bookworm-security/main amd64 Packages [265 kB] Get:7 http://security.debian.org/debian-security bookworm-security/main Translation-en [160 kB] Get:8 http://security.debian.org/debian-security bookworm-security/non-free-firmware amd64 Packages [688 B] Fetched 666 kB in 2s (315 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done root@ns100:~#
Instal paket vsftpd menggunakan perintah apt install dan konfirmasi instalasi dengan mengetik y dan tekan ENTER.
root@ns100:~# apt install vsftpd Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: ssl-cert The following NEW packages will be installed: ssl-cert vsftpd 0 upgraded, 2 newly installed, 0 to remove and 43 not upgraded. Need to get 163 kB of archives. After this operation, 417 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://deb.debian.org/debian bookworm/main amd64 ssl-cert all 1.1.2 [21.1 kB] Get:2 http://deb.debian.org/debian bookworm/main amd64 vsftpd amd64 3.0.3-13+b2 [142 kB] Fetched 163 kB in 0s (666 kB/s) Preconfiguring packages ... Selecting previously unselected package ssl-cert. (Reading database ... 33997 files and directories currently installed.) Preparing to unpack .../ssl-cert_1.1.2_all.deb ... Unpacking ssl-cert (1.1.2) ... Selecting previously unselected package vsftpd. Preparing to unpack .../vsftpd_3.0.3-13+b2_amd64.deb ... Unpacking vsftpd (3.0.3-13+b2) ... Setting up ssl-cert (1.1.2) ... Setting up vsftpd (3.0.3-13+b2) ... Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /lib/systemd/system/vsftpd.service. Processing triggers for man-db (2.11.2-2) ... root@ns100:~#
Setelah vsftpd terinstal, layanan vsftpd akan berjalan dan diaktifkan secara otomatis. Lakukan verifikasi layanan vsftpd menggunakan perintah berikut.
root@ns100:~# systemctl is-enabled vsftpd enabled root@ns100:~# systemctl status vsftpd ● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; preset: enabled) Active: active (running) since Fri 2025-05-30 08:49:52 WIB; 2min 57s ago Process: 1373 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS) Main PID: 1374 (vsftpd) Tasks: 1 (limit: 1331) Memory: 884.0K CPU: 4ms CGroup: /system.slice/vsftpd.service └─1374 /usr/sbin/vsftpd /etc/vsftpd.conf May 30 08:49:52 ns100.sekolah100.sch.id systemd[1]: Starting vsftpd.service - vsftpd FTP server... May 30 08:49:52 ns100.sekolah100.sch.id systemd[1]: Started vsftpd.service - vsftpd FTP server.
Langkah 2 – Konfigurasi vsftp dengan user anonymous
Anonymous FTP adalah sebuah metode dalam penggunaan program FTP (File Transfer Protocol) yang digunakan untuk masuk (mengakses) server tanpa harus memiliki akun terlebih dahulu. Aktivitas selanjutnya adalah user dapat menggunakan kata “Anonymous” sebagai username dan password agar bisa masuk kedalam folder atau directory secara anonim. Salah satu kegunaan dari Anonymous FTP merupakan cara umum untuk memberikan akses kepada pengguna untuk mengakses server agar dapat melihat, mengedit, menghapus, mengunduh (download), ataupun mengunggah (upload) file.
File konfigurasi utama vsftpd terletak di /etc/vsftpd.conf. Kita akan mengedit file ini untuk melakukan pengaturan FTP server. Cadangkan file konfigurasi asli sebelum mengeditnya
root@ns100:~# cp /etc/vsftpd.conf /etc/vsftpd.conf.asli
Buka file konfigurasi dengan editor teks nano
root@ns100:~# nano /etc/vsftpd.conf
Ubah dan sesuaikan baris-baris berikut ini
listen=NO listen_ipv6=YES anonymous_enable=YES anon_root=/srv/ftp anon_other_write_enable=YES no_anon_password=YES local_enable=YES write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO
Simpan perubahan dan keluar dari editor nano
Ubah hak akses agar user ftp (anonymous) punya akses penuh.
chmod 777 memberikan full access (read, write, execute) ke semua user. Gunakan dengan hati-hati, hanya di jaringan terpercaya.
root@ns100:~# mkdir /srv/ftp/pub root@ns100:~# chown nobody:nogroup /srv/ftp root@ns100:~# chown ftp:ftp /srv/ftp/pub/ root@ns100:~# chmod 775 /srv/ftp root@ns100:~# chmod 777 /srv/ftp/pub/
Restart Layanan vsftpd dan Cek status nya
root@ns100:~# systemctl restart vsftpd root@ns100:~# systemctl status vsftpd ● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; preset: enabled) Active: active (running) since Sun 2025-06-01 08:27:26 WIB; 7s ago Process: 2128 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS) Main PID: 2132 (vsftpd) Tasks: 1 (limit: 1331) Memory: 880.0K CPU: 4ms CGroup: /system.slice/vsftpd.service └─2132 /usr/sbin/vsftpd /etc/vsftpd.conf Jun 01 08:27:26 ns100.sekolah100.sch.id systemd[1]: Starting vsftpd.service - vsftpd FTP server... Jun 01 08:27:26 ns100.sekolah100.sch.id systemd[1]: Started vsftpd.service - vsftpd FTP server.
Pengujian user anonim menggunakan File Explorer Windows

Pengujian user anonim menggunakan browser Chrome di Windows

Pengujian user anonim menggunakan CMD di client Windows
C:\Users\Administrator>ftp 172.16.100.1 Connected to 172.16.100.1. 220 (vsFTPd 3.0.3) User (172.16.100.1:(none)): anonymous 230 Login successful. ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. pub 226 Directory send OK. ftp: 5 bytes received in 0,00Seconds 5000,00Kbytes/sec. ftp> bye 221 Goodbye.
Pengujian user anonim menggunakan aplikasi WinSCP Windows
- Buka aplikasi WinSCP, klik New Tab
- Klik New Site
- Pilih FTP
- Ketik IP Address Server FTP
- Klik atau centang Anonymous login
- Klik tombol Login

Setelah bisa masuk ke server FTP dengan user anonim, klik direktori pub lalu coba lakukan drag and drop beberapa file.

Upload file ke direktori pub berhasil.

Menghapus file di FTP server

Berhasil menghapus file di FTP server

Langkah 3 – Konfigurasi vsftp dengan user authentication
Edit file konfigurasi lagi
root@ns100:~# nano /etc/vsftpd.conf
Ubah dan sesuaikan kembali baris-baris berikut ini
listen=NO listen_ipv6=YES anonymous_enable=NO #anon_root=/srv/ftp #anon_other_write_enable=YES #no_anon_password=YES local_enable=YES write_enable=YES #anon_upload_enable=YES #anon_mkdir_write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO # userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO # chroot_local_user=YES user_sub_token=$USER local_root=/home/$USER/ftp
Penjelasan :
- anonymous_enable=NO : menonaktifkan login anonim.
- local_enable=YES : mengizinkan pengguna lokal login.
- write_enable=YES : mengizinkan upload file.
- userlist_enable=YES : mengijinkan daftar user
- userlist_file=/etc/vsftpd.userlist : daftar user yang diijinkan disimpan di fle vsftpd.userlist
- chroot_local_user=YES : membatasi pengguna ke direktori home mereka.
- local_root=/home/$USER/ftp : mengatur root FTP ke folder ftp di dalam home user masing-masing.
Buat pengguna atau user baru FTP
root@ns100:~# adduser haryadi Adding user `haryadi' ... Adding new group `haryadi' (1001) ... Adding new user `haryadi' (1001) with group `haryadi (1001)' ... Creating home directory `/home/haryadi' ... Copying files from `/etc/skel' ... New password: [ketik password disini] Retype new password: [ulangi ketik password yang sama] passwd: password updated successfully Changing the user information for haryadi Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y Adding new user `haryadi' to supplemental / extra groups `users' ... Adding user `haryadi' to group `users' ...
Anda akan diminta untuk mengatur password dan informasi pengguna lainnya. Anda bisa menekan Enter untuk melewati sebagian besar informasi tersebut jika tidak diperlukan.
Lakukan pengaturan hak akses file dan direktori untuk user authentication FTP
root@ns100:~# mkdir /home/haryadi/ftp root@ns100:~# chown nobody:nogroup /home/haryadi/ftp root@ns100:~# chmod a-w /home/haryadi/ftp root@ns100:~# mkdir /home/haryadi/ftp/files root@ns100:~# chown haryadi:haryadi /home/haryadi/ftp/files
Tambahkan user FTP ke file vsftpd.userlist
root@ns100:~# echo "haryadi" | tee -a /etc/vsftpd.userlist
haryadi
Pengujian user authentication menggunakan CMD di Windows

Pengujian user authentication menggunakan Browser Chrome di Windows


Pengujian user authentication menggunakan aplikasi WinSCP di Windows

Proses upload file berhasil

- Langkah 4 - Mengaktifkan FTP Pasif (Opsional)
Edit kembali /etc/vsftpd.conf dan tambahkan di akhir
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=50000
root@ns100:~# systemctl restart vsftpd
- Langkah 5 - Mengaktifkan TLS untuk Keamanan (Opsional)
Buat Sertifikat SSL
root@ns100:~# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /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]:ID State or Province Name (full name) [Some-State]:Jawa Tengah Locality Name (eg, city) []:Klaten Organization Name (eg, company) [Internet Widgits Pty Ltd]:SMKN 1 KLATEN Organizational Unit Name (eg, section) []:TJKT Common Name (e.g. server FQDN or YOUR name) []:sekolah100.sch.id Email Address []:haryadi@smkn1klaten.sch.id root@ns100:~#
Edit kembali file konfigurasi vsftpd.conf dan sesuaikan baris-baris berikut ini
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
require_ssl_reuse=NO
ssl_ciphers=HIGH
root@ns100:~# systemctl restart vsftpd
Pengujian FTP TLS



- Langkah 6 - Tips Keamanan Tambahan
- Batasi pengguna atau user FTP tertentu, Tambahkan ke /etc/vsftpd.userlist dan pastikan userlist_enable=YES serta userlist_file=/etc/vsftpd.userlist di konfigurasi.
- Nonaktifkan shell login
Jika hanya ingin user digunakan untuk FTP
root@ns100:~# usermod -s /usr/sbin/nologin haryadi
- Gunakan SFTP (SSH-based FTP) jika keamanan adalah prioritas utama.