#4-FTP Server

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.

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

  1. Buka aplikasi WinSCP, klik New Tab
  2. Klik New Site
  3. Pilih FTP
  4. Ketik IP Address  Server FTP
  5. Klik atau centang Anonymous login
  6. 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

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

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

  • 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.

Artikel & Tutorial

Terbaru

Topik

Kantor

Jl. dr. Wahidin Sudiro Husodo No.22,
Klaten Utara, Klaten 57432,
Jawa Tengah, INDONESIA.
Telp. 0272-321266

Terbaru

Galeri

Copyright © 2025  – TJKT SMK NEGERI 1 KLATEN – HYD