Praktikum FTP Server - Ubuntu 24.04

📌 Tujuan Praktikum

Setelah mengikuti praktikum ini, Anda diharapkan mampu:

  • Memahami fungsi dan cara kerja FTP Server
  • Menginstall dan mengkonfigurasi vsftpd sebagai FTP Server
  • Membuat user FTP untuk akses file
  • Mengkonfigurasi anonymous FTP dan user-based FTP
  • Menguji akses FTP menggunakan FileZilla atau command line
  • Menerapkan keamanan dasar FTP (chroot, firewall)
1. Fungsi FTP Server Teori

FTP (File Transfer Protocol) adalah protokol standar yang digunakan untuk mentransfer file antara client dan server melalui jaringan. FTP Server berfungsi sebagai tempat penyimpanan file yang dapat diakses oleh client untuk mengunggah (upload) dan mengunduh (download) file.

Analogi FTP Server:

FTP Server seperti "gudang file" di sebuah perusahaan. Karyawan (client) dapat menyimpan file (upload) ke gudang atau mengambil file (download) dari gudang sesuai dengan hak akses yang diberikan.

🔑 Fungsi Utama FTP Server

  • Upload File: Mengirim file dari client ke server
  • Download File: Mengambil file dari server ke client
  • Manajemen File: Membuat, menghapus, mengubah nama file/direktori
  • Manajemen User: Mengelola hak akses user (read, write, execute)
  • Berbagi File: Memungkinkan berbagi file antar pengguna
  • Backup Data: Menyimpan cadangan data secara terpusat

📋 Jenis-jenis FTP Server

JenisKeteranganKeamanan
Anonymous FTP User dapat login tanpa username/password Rendah
User-Based FTP User harus login dengan username dan password Sedang
FTP over SSL/TLS (FTPS) FTP dengan enkripsi SSL/TLS Tinggi
SFTP (SSH File Transfer Protocol) FTP melalui SSH (port 22) Tinggi
💡 Istilah Penting:
  • vsftpd: Very Secure FTP Daemon — FTP Server yang aman dan populer di Linux
  • Port 20: Port untuk data transfer (active mode)
  • Port 21: Port untuk kontrol/command
  • Active Mode: Server menghubungi client untuk transfer data
  • Passive Mode: Client menghubungi server untuk transfer data
2. Skenario & Topologi Desain

Pada praktikum ini, kita akan membangun sebuah FTP Server dengan spesifikasi berikut:

KomponenKeterangan
Sistem OperasiUbuntu Server 24.04 LTS
IP Address Server192.168.10.20/24
Gateway192.168.10.1
FTP Servervsftpd
User FTPftpuser (dengan password)
FTP Port21 (command) dan 20 (data)
ClientKomputer dengan FTP Client (FileZilla / command line)
Topologi Jaringan FTP Server
Gambar 1: Topologi Jaringan FTP Server
Keterangan Topologi:
  • Router → Gateway (192.168.10.1) dan sumber jaringan
  • Switch → Menghubungkan semua perangkat dalam satu jaringan
  • FTP Server → Server dengan IP 192.168.10.20 menjalankan vsftpd
  • Client → Komputer yang mengakses FTP Server untuk transfer file
3. Install vsftpd Step 1

vsftpd (Very Secure FTP Daemon) adalah FTP Server yang aman, stabil, dan cepat. vsftpd adalah pilihan terbaik untuk FTP Server di Linux.

📝 Langkah-langkah Install vsftpd

1. Update repository dan install vsftpd:

sudo apt update
sudo apt install vsftpd -y

2. Cek status vsftpd:

sudo systemctl status vsftpd
💡 Catatan: Untuk keluar dari tampilan status, tekan Ctrl + C atau q.

3. Aktifkan vsftpd agar berjalan otomatis saat boot:

sudo systemctl enable vsftpd

4. Cek versi vsftpd:

vsftpd -version
✅ vsftpd berhasil diinstall! FTP Server sudah berjalan di port 21.

📁 Struktur Konfigurasi vsftpd

File/FolderFungsi
/etc/vsftpd.confFile konfigurasi utama vsftpd
/etc/ftpusersDaftar user yang tidak diizinkan mengakses FTP
/etc/vsftpd.userlistDaftar user yang diizinkan/diblokir (userlist_deny)
/var/log/vsftpd.logLog aktivitas FTP Server
/srv/ftpDirektori default untuk anonymous FTP
4. Konfigurasi Dasar vsftpd Step 2

Konfigurasi dasar vsftpd untuk mengatur akses anonymous dan user-based FTP.

📝 Langkah-langkah Konfigurasi

1. Backup file konfigurasi asli:

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

2. Edit file konfigurasi:

sudo nano /etc/vsftpd.conf

3. Pastikan konfigurasi berikut ada (uncomment atau tambahkan):

# Pengaturan Dasar
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

# Pengaturan Direktori
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

# Pengaturan User
chroot_local_user=YES
allow_writeable_chroot=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

# Pengaturan Log
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES

# Pengaturan User List
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist

# Pengaturan Passive Mode
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=192.168.10.20
📖 Penjelasan Konfigurasi:
  • anonymous_enable=NO → Menonaktifkan akses anonymous
  • local_enable=YES → Mengizinkan user lokal login
  • write_enable=YES → Mengizinkan upload dan perubahan file
  • chroot_local_user=YES → Membatasi user hanya di home direktori
  • userlist_enable=YES → Mengaktifkan daftar user
  • userlist_deny=NO → User di userlist diizinkan (bukan diblokir)
  • pasv_min_port / max_port → Port untuk passive mode

4. Restart vsftpd:

sudo systemctl restart vsftpd
✅ Konfigurasi dasar vsftpd selesai!
5. Membuat User FTP Step 3

Buat user khusus untuk akses FTP dan atur direktori home-nya.

📝 Langkah-langkah Membuat User FTP

1. Buat user baru:

sudo useradd -m -s /bin/bash ftpuser
sudo passwd ftpuser

Masukkan password untuk user ftpuser (misal: P@ssw0rd123)

2. Tambahkan user ke userlist vsftpd:

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

3. Buat direktori khusus untuk FTP dan set permission:

sudo mkdir -p /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod 755 /home/ftpuser/ftp

4. Buat file test untuk pengujian:

sudo echo "Selamat datang di FTP Server SMK TKJ!" | sudo tee /home/ftpuser/ftp/welcome.txt
sudo echo "File ini adalah contoh file untuk test FTP" | sudo tee /home/ftpuser/ftp/test.txt
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/*

5. Restart vsftpd:

sudo systemctl restart vsftpd
💡 Catatan: User ftpuser hanya bisa mengakses direktori /home/ftpuser/ftp karena konfigurasi chroot_local_user=YES.
✅ User FTP berhasil dibuat!
  • Username: ftpuser
  • Password: [password yang Anda buat]
  • Direktori: /home/ftpuser/ftp
6. Konfigurasi Anonymous FTP (Opsional) Step 4

Anonymous FTP memungkinkan user mengakses FTP tanpa username dan password. Cocok untuk berbagi file publik.

💡 Catatan: Bagian ini opsional. Jika tidak membutuhkan anonymous FTP, lewati bagian ini.

📝 Langkah-langkah Konfigurasi Anonymous FTP

1. Edit file konfigurasi vsftpd:

sudo nano /etc/vsftpd.conf

2. Ubah konfigurasi berikut:

anonymous_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

3. Buat direktori anonymous:

sudo mkdir -p /srv/ftp/pub
sudo echo "Selamat datang di Anonymous FTP Server SMK TKJ!" | sudo tee /srv/ftp/pub/welcome.txt
sudo chown ftp:ftp /srv/ftp/pub -R

4. Restart vsftpd:

sudo systemctl restart vsftpd
✅ Anonymous FTP berhasil dikonfigurasi!

Akses: ftp://192.168.10.20 (tanpa username/password)

7. Konfigurasi Firewall Step 5

Buka port yang dibutuhkan untuk FTP Server pada firewall.

📝 Langkah-langkah Konfigurasi Firewall

1. Buka port 21 untuk FTP:

sudo ufw allow 21/tcp

2. Buka port 20 untuk data transfer:

sudo ufw allow 20/tcp

3. Buka port range untuk passive mode (30000-31000):

sudo ufw allow 30000:31000/tcp

4. Aktifkan firewall (jika belum):

sudo ufw enable

5. Cek status firewall:

sudo ufw status numbered
✅ Firewall berhasil dikonfigurasi!
  • Port 21 (FTP Command) ✅
  • Port 20 (FTP Data) ✅
  • Port 30000-31000 (Passive Mode) ✅
8. Pengujian FTP Server Step 6

Lakukan pengujian untuk memastikan FTP Server berjalan dengan baik.

8.1 Uji dari Command Line (Linux/Windows)

1. Koneksi ke FTP Server:

ftp 192.168.10.20

Login dengan username ftpuser dan password yang sudah dibuat.

2. Perintah dasar FTP:

ls          # Melihat daftar file
cd pub      # Masuk ke direktori pub
get test.txt # Download file
put file.txt # Upload file
bye         # Keluar dari FTP

8.2 Uji dengan FileZilla (GUI)

1. Buka FileZilla Client

2. Isi field:

  • Host: 192.168.10.20
  • Username: ftpuser
  • Password: [password yang dibuat]
  • Port: 21

3. Klik Quickconnect

Jika berhasil, akan muncul daftar file di server.

8.3 Uji via Browser

Buka browser dan ketik alamat: ftp://192.168.10.20

Login dengan username dan password FTP.

Atau untuk anonymous: ftp://192.168.10.20 (tanpa login)

⚠️ Troubleshooting:
  • Connection refused: Pastikan vsftpd berjalan sudo systemctl status vsftpd
  • Login incorrect: Periksa username dan password
  • 530 Permission denied: Periksa konfigurasi userlist_file
  • 425 Can't open data connection: Periksa firewall dan passive mode
✅ FTP Server berhasil diuji!
9. Keamanan FTP Server Step 7

Beberapa langkah untuk meningkatkan keamanan FTP Server.

📝 Rekomendasi Keamanan

1. Batasi user yang dapat mengakses FTP:

sudo nano /etc/vsftpd.userlist

Tambahkan hanya user yang diizinkan:

ftpuser
user2
user3

2. Nonaktifkan anonymous FTP jika tidak diperlukan:

anonymous_enable=NO

3. Batasi jumlah koneksi per IP:

# Tambahkan di /etc/vsftpd.conf
max_per_ip=5
max_clients=50

4. Aktifkan logging untuk monitoring:

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES

5. Gunakan FTPS (FTP over SSL) untuk keamanan ekstra:

# Generate sertifikat SSL
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
 -keyout /etc/ssl/private/vsftpd.key \
 -out /etc/ssl/certs/vsftpd.crt

# Tambahkan di /etc/vsftpd.conf
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
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

Restart vsftpd setelah perubahan:

sudo systemctl restart vsftpd
✅ Keamanan FTP Server berhasil diterapkan!
10. Kesimpulan Selesai

Dalam praktikum ini, Anda telah berhasil melakukan:

Selanjutnya:

Setelah FTP Server berhasil, Anda dapat melanjutkan ke materi berikutnya: Konfigurasi MAIL Server untuk layanan email.