Cara Membuat FTP Server di Ubuntu VPS

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.

mempersiapkan-ubuntu-vps-untuk-ftp

Setelah itu, install vsftpd daemon menggunakan perintah di bawah ini:

sudo apt-get install vsftpd

Pesan konfirmasi akan muncul dan meminta Anda untuk mengetikkan dan tekan Enter untuk melanjutkan penginstallan.

menginstall-vsftpd-di-ubuntu-vps

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.

filezilla-site-manager

Klik tombol New Site pada jendela yang dituju untuk memasukkan informasi server FTP Ubuntu.

menambahkan-ubuntu-ftp-server-di-filezilla

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.

password-pengguna-ftp-filezilla

Anda harus melakukan verifikasi sertifikat SSL server FTP Anda pada VPS Ubuntu.

Setelah mengonfirmasi, direktori root dengan file tes akan tampil di layar Anda.

berhasil-terhubung-ke-ubuntu-ftp-server

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.

Author
Penulis

Ariata C.

Ariata suka sekali menulis dan menerjemahkan, dan sekarang ini bekerja sebagai translator di Hostinger Indonesia. Lewat artikel dan tutorial yang diterbitkan di blog Hostinger, Ariata ingin membagikan pengetahuan tentang website, WordPress, dan hal terkait hosting lainnya kepada para pembaca.