Cara Membuat FTP Server di Ubuntu VPS
Pengenalan
Tutorial kali ini akan menjelaskan cara membuat FTP server di Ubuntu VPS. Server vsftpd akan digunakan, yang secara luas dianggap sebagai server FTP tercepat dan teraman untuk sistem seperti UNIX.
FTP atau File Transfer Protocol berfungsi untuk mengirim dan menerima file melalui koneksi jaringan. Dengan memanfaatkan framework klien/server dan keamanan SSL/TLS, FTP memperbolehkan pengguna berbagi file untuk (dan menerima dari) remote komputer melalui transfer data yang aman, efisien, dan dapat diandalkan (menggunakan protokol TCP/IP).
FTP berfungsi seperti halnya HTTP atau SMTP; hanya saja FTP bertanggung jawab atas keamanan pengiriman file dari pengirim ke penerima, bukan halaman web dari server ke pengguna atau surat elektronik melalui internet. Tutorial ini akan membantu pengguna memahami dan membuat FTP server di Ubuntu 16.04.
Penting! Tutorial ini ditulis berdasarkan pada penggunaan Ubuntu 16.04. Namun, Anda dapat melakukan langkah-langkah berikut ini pada saat membuat FTP server di Ubuntu 14.04.
Langkah 1 – Menginstall Vsftpd
Lakukan update terlebih dulu sebelum melakukan langkah selanjutnya, yaitu penginstall vsftpd daemon. Untuk memulainya, jalankan perintah di bawah ini:
sudo apt-get update
Tunggu sampai prosesnya selesai. Anda akan melihat konfirmasi segera setelah update selesai.
Setelah itu, install vsftpd daemon menggunakan perintah di bawah ini:
sudo apt-get install vsftpd
Pesan konfirmasi akan muncul dan meminta Anda untuk mengetikkan Y dan tekan Enter untuk melanjutkan penginstallan.
Setelah penginstallan selesai, buat backup dari file agar kita bisa memulai dengan file konfigurasi kosong:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
Sekarang kita sudah siap ke langkah selanjutnya dan konfigurasikan firewall.
Langkah 2 – Memperbolehkan FTP traffic dari firewall
Agar server FTP dapat berkomunikasi dengan dunia luar, maka Anda harus membuat jalan melalui firewall. Pertama-tama, cari tahu apakah firewall diaktifkan pada mesin atau tidak. Jalankan perintah di bawah ini untuk memverifikasi status:
sudo ufw status
Jika Anda melihat pesan berikut ini:
ufw: command not found
Maka itu berarti firewall tidak terinstall dan Anda bisa melanjutkan langkah berikutnya.
Hanya saja, apabila output menunjukkan aturan yang telah dibuat atau pesan yang menyatakan bahwa status firewall aktif, maka Anda harus memverifikasi apakah FTP traffic akan berfungsi. Buka port 20 dan 21 untuk FTP traffic; port 40000-50000 akan disimpan untuk kisaran port pasif yang pada akhirnya akan diatur di dalam file konfigurasi, dan port 990 akan digunakan ketika TLS diaktifkan. Jalankan perintah di bawah ini:
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 990/tcp sudo ufw allow 40000:50000/tcp
Lihat kembali status:
sudo ufw status
Seharusnya output akan terlihat seperti ini:
Output Status: active To Action From -- ------ ---- 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)
Kita telah membuka semua port yang penting. Kini kita bisa melanjutkan langkah berikutnya.
Langkah 3 – Membuat direktori pengguna
Karena langkah ketiga adalah membuat FTP server di Ubuntu, maka kita akan memilih pengguna yang hendak memanfaatkan akses FTP. Agar lebih mudah, kami akan menambahkan pengguna baru. Untuk melakukannya, gunakan perintah di bawah ini:
sudo adduser alex
Jika diminta, masukkan password untuk pengguna dan lengkapi semua informasi yang dibutuhkan. Idealnya, FTP harus dibatasi pada satu direktori khusus karena alasan keamanan. Vsftpd menggunakan chroot jails untuk melakukannya.
Dengan mengaktifkan chroot, pengguna lokal dibatasi pada direktori home mereka (secara default). Akan tetapi, karena keamanan vsftpd, bisa jadi pengguna tidak dapat menulis pada direktori.
Kami tidak akan menghapus hak menulis dari folder utama, melainkan kami hendak membuat direktori FTP yang akan berfungsi sebagai chroot bersamaan dengan direktori file yang dapat ditulisi yang akan bertanggung jawab untuk menyimpan file terkait. Gunakan perintah di bawah ini untuk membuat folder FTP:
sudo mkdir /home/alex/ftp
Buat kepemilikan dengan menggunakan:
sudo chown nobody:nogroup /home/alex/ftp
Terakhir, hapus izin menulis:
sudo chmod a-w /home/alex/ftp
Sekarang, gunakan perintah berikut ini untuk memverifikasi izin:
sudo ls -la /home/alex/ftp
Output seharusnya terlihat seperti ini:
total 8 dr-xr-xr-x 2 nobody nogroup 4096 Jun 29 11:32 . drwxr-xr-x 3 alex alex 4096 Jun 29 11:32 ..
Langkah berikutnya, kami akan membuat file yang menyimpan direktori dan menentukan kepemilikan:
sudo mkdir /home/alex/ftp/files sudo chown alex:alex /home/alex/ftp/files
Lalu, tambahkan file tes ke direktori yang akan digunakan ketika kita ingin mengetes hal apa pun nantinya:
echo "vsftpd sample file" | sudo tee /home/alex/ftp/files/sample.txt
Langkah 4 – Mengonfigurasikan vsftpd
Sebagai langkah berikutnya untuk setup server FTP di VPS Ubuntu, kita akan mengonfigurasikan vsftpd dan akses FTP kami. Di tutorial ini, kita akan memperbolehkan satu pengguna untuk terhubung degan FTP menggunakan akun shell lokal. Dua kunci konfigurasi yang dibutuhkan dalam langkah ini telah dibuat di dalam file konfigurasi (vsftpd.conf). Lakukan verifikasi terlebih dulu bahwa file konfigurasi memiliki pengaturan yang sesuai dengan apa yang disebutkan di bawah ini menggunakan nano command:
sudo nano /etc/vsftpd.conf
. . . # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES . . .
Di dalam file yang sama, kami akan menghapus # dan mengaktifkan write_enable:
. . . write_enable=YES . . ..
Chroot juga tidak akan bisa dikomentari untuk memastikan bahwa pengguna yang terhubung via FTP hanya bisa mengakses file di dalam direktori yang diizinkan:
. . . chroot_local_user=YES . . .
Beberapa value baru juga harus ditambahkan secara manual. Anda hanya perlu menempel (paste) value tersebut pada bagian bawah file. Pertama-tama, user_sub_token akan ditambahkan ke dalam path direktori local-root. Hal ini memperbolehkan konfigurasi digunakan oleh pengguna saat ini dan pengguna lainnya yang ditambahkan setelahnya:
user_sub_token=$USER local_root=/home/$USER/ftp
Untuk memastikan bahwa sejumlah besar koneksi tersedia, maka kami akan membatasi jumlah port yang digunakan dalam file konfigurasi:
pasv_min_port=40000 pasv_max_port=50000
Di tutorial ini, kami berencana untuk menyediakan akses berdasarkan kasus per kasus. Oleh karena itu, buatlah konfigurasi dengan memberikan akses hanya kepada pengguna yang secara eksplisit telah ditambahkan ke dalam daftar:
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Flag userlist_deny berfungsi untuk mengalihkan (toggling) logika; ketika diatur ke “NO”, hanya pengguna yang sudah ada dalam daftar yang diberikan izin untuk mengakses. Setelah itu, klik CTR+X dan konfirmasi perubahan file.
Kita akan lanjut pada langkah berikutnya, yaitu pembuatan dan penambahan pengguna ke file:
echo "alex" | sudo tee -a /etc/vsftpd.userlist
Jalankan perintah di bawah ini untuk memverifikasi bahwa pengguna benar-benar aktif:
cat /etc/vsftpd.userlist
Output harus “alex” seperti yang ditunjukkan dalam screnshot berikut ini:
Restart daemon menggunakan perintah di bawah ini untuk memuat perubahan konfigurasi:
sudo systemctl restart vsftpd
Langkah 5 – Mengamankan FTP
Secara standar, FTP tidak melakukan enkripsi data mana pun. Karena itulah, kita akan menggunakan TTL/SSL agar segalanya lebih cepat. Sebagai langkah pertama, kita harus membuat sertifikat SSL dan menggunakannya untuk mengamankan FTP server Ubuntu. Untuk memulainya, gunakan perintah di bawah ini:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Flag -days membuat sertifikat tersebut valid untuk setahun dan kita telah menyertakan 2048-bit private RSA key di dalam perintah yang sama. Ketika diminta, masukkan infomasi pribadi yang bersangkutan pada kolom yang telah disediakan.
Setelah membuat sertifikat, buka konfigurasi file sekali lagi:
sudo nano /etc/vsftpd.conf
Akhir dari file tersebut harus memuat dua bari yang diawali dengan “_rsa“. Beri komentar pada kedua baris tersebut:
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Sebagai gantinya, kita akan mengarahkan file konfigurasi ke sertifikat yang baru saja dibuat. Tambahkan baris berikut ini:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Sekarang kita akan mengaktifkan SSL dan memastikan bahwa hanya klien yang sudah mengaktifkan SSL yang dapat menghubungi kami. Ubah value ssl_enable ke YES:
ssl_enable=YES
Tambahkan baris berikut ini untuk membuat keamanan yang lebih baik: (Koneksi tak dikenal tidak akan diperbolehkan melewati SSL)
allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES
Konfigurasikan server untuk menggunakan TLS dengan:
ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
Kita akan menambahkan 2 opsi lagi. Pertama, penggunaan kembali SSL tidak begitu berpengaruh karena hanya akan membuat sebagian besar aplikasi FTP rusak. Kedua, kita akan menggunakan high encryption cipher suites, yang mana itu berarti bahwa panjang key sama dengan (atau lebih besar dari) 128 bit.
require_ssl_reuse=NO ssl_ciphers=HIGH
Restart sekali lagi untuk menerapkan konfigurasi baru:
sudo systemctl restart vsftpd
Selamat! Anda sudah melakukan konfigurasi server FTP pada VPS Ubuntu Anda agar bisa digunakan secara bersamaan dengan protokol SSL/TLS.
Langkah 6 – Mengetes koneksi dengan FileZilla
Sekarang ini, sebagian besar aplikasi FTP mendukung konfigurasi enkripsi TLS. Oleh karena itu, akan lebih baik jika Anda mengetes apakah server FTP Ubuntu Anda berfungsi sebagaimana mestinya. Kami akan menggunakan aplikasi FTP FileZilla untuk mengetes koneksi. Buka FileZilla, klik pada ikon Site Manager.
Klik tombol New Site pada jendela yang dituju untuk memasukkan informasi server FTP Ubuntu.
Lengkapi semua informasi yang dibutuhkan dengan rincian server FTP Ubuntu yang baru saja dibuat. Karena kita mengonfigurasikannya untuk menggunakan TLS, maka kita juga akan menandakan enkripsi tersebut ke explicit FTP over TLS. Konfigurasi akhir akan terlihat seperti ini:
Setelah itu, klik Connect dan layar yang meminta Anda untuk memasukkan password pengguna FTP akan muncul.
Anda harus melakukan verifikasi sertifikat SSL server FTP Anda pada VPS Ubuntu.
Setelah mengonfirmasi, direktori root dengan file tes akan tampil di layar Anda.
Selesai! Sekarang Anda sudah bisa mentransfer berbagai file dari komputer ke server FTP Ubuntu dan sebaliknya.
Kesimpulan
Kami telah menyajikan langkah demi langkah dalam tutorial ini agar pengguna lokal dapat mentransfer file dengan aman melalui FTP dengan SSL/TLS pada server FTP Ubuntu. Kami juga telah menyediakan cara mengetes koneksi menggunakan FileZilla untuk memastikan bahwa semuanya berfungsi normal.