FTP Server VSFTPD Rocky Linux 9
FTP Server VSFTPD Rocky Linux 9

Bangun FTP Server dengan VSFTPD di Rocky Linux 9 (SSL/TLS)

Kebutuhan untuk berbagi dan mentransfer file secara internal masih sangat tinggi. Meskipun banyak layanan cloud tersedia, FTP server tetap menjadi solusi andal terutama untuk keperluan backup, sinkronisasi antar server, atau akses file di jaringan lokal.

Namun, menggunakan FTP standar tanpa enkripsi sangat berbahaya karena data (termasuk username dan password) dikirim dalam bentuk teks biasa.

Artikel ini akan memandu membangun FTP server yang aman menggunakan VSFTPD (Very Secure FTP Daemon) di Rocky Linux 9.

Kita akan mengonfigurasinya dengan SSL/TLS sehingga koneksi terlindungi dari penyadapan.

Mengapa Memilih VSFTPD?

VSFTPD adalah server FTP default di Rocky Linux dan banyak distribusi lainnya.

Sesuai namanya, perangkat lunak ini dirancang dengan fokus utama pada keamanan, performa tinggi, dan stabilitas. VSFTPD mendukung enkripsi SSL/TLS, virtual user, serta konfigurasi chroot yang membatasi pengguna hanya pada direktori home-nya.

Install VSFTPD

Sebelum memulai, pastikan sistem Rocky Linux 9 sudah dalam kondisi terbaru.

sudo dnf update -y && sudo dnf upgrade -y

Instal paket VSFTPD

sudo dnf install vsftpd -y

Aktifkan dan jalankan service vsftpd.

sudo systemctl enable --now vsftpd

Cek status service vsftd

sudo systemctl status vsftpd
vsftpd.service - Vsftpd ftp daemon
     Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; preset: disabled)
     Active: active (running) since Mon 2026-05-18 23:42:42 CST; 34s ago
    Process: 98883 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
   Main PID: 98884 (vsftpd)
      Tasks: 1 (limit: 12326)
     Memory: 860.0K (peak: 1.2M)
        CPU: 4ms
     CGroup: /system.slice/vsftpd.service
             └─98884 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Konfigurasi VSFTPD

File konfigurasi VSFTPD terletak di /etc/vsftpd/vsftpd.conf. Backup dulu file aslinya, lalu buka dengan teks editor.

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudo nano /etc/vsftpd/vsftpd.conf

Sesuaikan atau pastikan baris-baris berikut ini tidak dikomentari (hapus tanda # jika ada).

# Disable anonymous access (security requirement)
anonymous_enable=NO

# Allow local system users to log in
local_enable=YES

# Enable write operations (uploads, deletes)
write_enable=YES

# Jail users to their home directories
chroot_local_user=YES

# Required for chroot to work with writable home dirs
allow_writeable_chroot=YES

Konfigurasi Firewall FTP Server

Akftifkan dan jalankan firewalld.

sudo systemctl enable --now firewalld

FTP memerlukan aturan firewall khusus karena menggunakan banyak port. Rocky Linux 9 menggunakan firewalld secara default.

# Allow FTP service (port 21)
sudo firewall-cmd --permanent --add-service=ftp

# Allow passive mode port range
sudo firewall-cmd --permanent --add-port=40000-40100/tcp

# Reload firewall to apply changes
sudo firewall-cmd --reload

Cek daftar rule firewalld

sudo firewall-cmd --list-all
Output:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client ftp ssh
  ports: 40000-40100/tcp 990/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Manajemen Pengguna dan Kontrol Akses

Buat user FTP khusus yang terisolasi dari akun sistem.

# Create user with home directory
sudo useradd -m -d /var/ftp/ftpuser -s /sbin/nologin ftpuser

# Set password
sudo passwd ftpuser

Mengatur Permission

Konfigurasikan owner dan permission direktori.

# Set ownership
sudo chown ftpuser:ftpuser /var/ftp/ftpuser

# Create upload directory with proper permissions
sudo mkdir /var/ftp/ftpuser/uploads
sudo chown ftpuser:ftpuser /var/ftp/ftpuser/uploads
sudo chmod 755 /var/ftp/ftpuser/uploads

Membatasi Akses Pengguna dengan user_list

Untuk keamanan yang lebih ketat, gunakan fitur user list VSFTPD untuk mengontrol secara eksplisit siapa yang dapat terhubung.

# Enable userlist checking
sudo nano /etc/vsftpd/vsftpd.conf

Tambahkan konfigurasi userlist

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

Buat file user_list dan tambahkan user yang diizinkan.

sudo nano /etc/vsftpd/user_list

Tambahkan satu user per baris.

ftpuser

Konfigurasi PAM

Buka konfigurasi PAM vsftpd untuk menonaktifkan auth pam_shells.so

nano /etc/pam.d/vsftpd

Tambahkan comment # untuk menonaktifkan.

#auth       required    pam_shells.so

Implementasikan FTP Over TLS (FTPS)

Buka kembali file konfigurasi /etc/vsftpd/vsftpd.conf dan tambahkan baris berikut di bagian bawah file untuk mengaktifkan SSL/TLS.

sudo nano /etc/vsftpd/vsftpd.conf

Tambahkan pada bagian paling bawah.

# Enable SSL 
ssl_enable=YES 
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt 
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key 

# Force TLS for data and login 
force_local_data_ssl=YES 
force_local_logins_ssl=YES 

# TLS version configuration 
ssl_tlsv1=YES 
ssl_sslv2=NO 
ssl_sslv3=NO 

# Require SSL for uploads 
require_ssl_reuse=NO
ssl_ciphers=HIGH

Generate SSL Certificate

Buat sertifikat self-signed untuk pengujian (gunakan sertifikat yang self-signed CA yang tepat di lingkungan produksi).

sudo mkdir /etc/vsftpd/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/vsftpd/ssl/vsftpd.key \
  -out /etc/vsftpd/ssl/vsftpd.crt

Perbarui firewall untuk mengizinkan FTPS (port 990 untuk TLS implisit)

sudo firewall-cmd --permanent --add-port=990/tcp
sudo firewall-cmd --reload

Restart service vsftpd untuk memperbarui konfigurasi

sudo systemctl restart vsftpd

Performance dan Connection Tuning

Tambahkan pengaturan ini untuk mengoptimalkan beban kerja.

sudo nano /etc/vsftpd/vsftpd.conf

Tambahkan dibagian paling bawah.

# Passive mode port range (required for firewall configuration)
pasv_min_port=40000
pasv_max_port=40100

# Connection limits
max_clients=10
max_per_ip=3

# Enable logging for troubleshooting
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

Simpan perubahan dan restart service VSFTPD untuk menerapkan konfigurasi baru.

sudo systemctl restart vsftpd

Pengujian FTP Server

Install ftp client.

sudo dnf install ftp

Uji secara localhost menggunakan FTP Client, pastikan tidak bisa

ftp localhost

Atau uji dari remote machine.

ftp IP_Public

Untuk pengujian FTPS, gunakan klien yang mendukung TLS seperti FileZilla, WinSCP. Konfigurasikan agar menggunakan FTP eksplisit melalui TLS dan sambungkan ke port 21.

Konfigurasi FTP Client Explicit encryption
Konfigurasi FTP Client Explicit encryption

Pemantauan dan Pemeliharaan

Siapkan pemantauan dasar untuk melacak kesehatan server FTP.

# Monitor active connections
sudo netstat -tnlp | grep vsftpd

# Check resource usage
ps aux | grep vsftpd

# Review recent authentication attempts
sudo grep "FTP" /var/log/secure

Jadwalkan peninjauan rutin terhadap log FTP dan pola akses pengguna. Hapus akun yang tidak digunakan dan ganti sertifikat SSL sebelum kedaluwarsa.

Kesimpulan

Kini telah memiliki FTP server yang aman menggunakan VSFTPD di Rocky Linux 9. Dengan mengaktifkan SSL/TLS, kamu melindungi data sensitif dari penyadapan selama proses transfer.

Konfigurasi ini merupakan fondasi dasar yang siap dikembangkan lebih lanjut, misalnya dengan menerapkan virtual user untuk manajemen akses yang lebih fleksibel dan terisolasi sepenuhnya dari user sistem.