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.

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.
