Pernah lupa dokumen penting di komputer rumah Anda, dan Anda sedang bekerja di kantor? Atau apakah Anda hanya ingin berbagi file dengan seseorang yang duduk di sebelah Anda? Server FTP seperti Very Secure FTP Daemon (VSFTPD) adalah solusi sempurna.
Dalam tutorial ini, Anda akan mempelajari cara menginstal dan mengonfigurasi server FPT menggunakan VSFTPD di server Linux sehingga Anda dapat berbagi file antar komputer dengan aman.
Baca terus dan jangan biarkan file Anda menjadi captive di komputer rumah Anda lagi!
Prasyarat
Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut ini.
- Mesin Linux – Tutorial ini menggunakan Ubuntu 20.04 LTS, tetapi semua distribusi Linux akan berfungsi.
- Pengguna non-root dengan hak istimewa sudo.
Menginstal VSFTPD di Ubuntu
VSFTPD adalah server FTP untuk sistem mirip Unix tetapi tidak diinstal secara default. Menginstal VSFTPD di Ubuntu mirip dengan cara Anda menginstal paket lain. Mulailah tutorial ini dengan memperbarui pengelola paket APT Anda sebelum menginstal VSFTPD.
1. Jalankan apt update
perintah untuk memperbarui APT. Perintah ini mengambil daftar paket dari repositori yang dikonfigurasi dan memperbarui cache paket lokal.
sudo apt update -y
2. Selanjutnya, jalankan apt install
perintah di bawah ini untuk menginstal VSFTPD pada mesin Anda. Perintah ini juga akan menarik semua dependensi yang diperlukan untuk layanan FTP.
Secara default, paket VSFTPD tersedia di sebagian besar distribusi modern berbasis Debian. Jadi Anda dapat menginstalnya tanpa repositori paket tambahan dan biarkan APT mengurus sisanya.
3. Terakhir, jalankan systemctl
perintah di bawah ini untuk memverifikasi bahwa layanan VSFTPD berjalan dan dikonfigurasi dengan benar.
sudo systemctl status vsftpd
Anda akan melihat output seperti di bawah ini, yang menunjukkan vsftpd.service aktif (berjalan) dan mendengarkan permintaan.
Membuka Port untuk Koneksi Klien FTP
Sekarang setelah Anda menginstal VSFTPD versi terbaru, Anda sekarang dapat mengonfigurasi firewall Anda. Anda akan menggunakan UFW, alat konfigurasi firewall default untuk Ubuntu, untuk menambahkan aturan firewall guna membuka port untuk koneksi klien FTP yang aman.
1. Jalankan ufw status
perintah untuk melihat aturan firewall mana yang sedang aktif.
sudo ufw status
Di bawah, Anda dapat melihat bahwa firewall aktif tetapi tidak memiliki aturan untuk mengizinkan koneksi apa pun secara default.
2. Selanjutnya, jalankan ufw allow
perintah di bawah ini untuk mengizinkan ketiga port melalui firewall. VSFTPD membutuhkan koneksi FTP pada port 20
, 21
, dan 990
.
sudo ufw allow 20,21,990/tcp
3. Jalankan ufw
perintah di bawah ini untuk membuka 40000:50000
jangkauan pelabuhan.
VSFTPD membutuhkan rentang port 40000:50000 untuk dibuka sehingga klien FTP dapat membuat koneksi data ke server dalam mode pasif.
sudo ufw allow 40000:50000/tcp
4. Terakhir, jalankan ufw status verbose
perintah di bawah ini untuk memverifikasi bahwa aturan firewall Anda aktif dan memeriksa kesalahan.
sudo ufw status verbose
Mengonfigurasi Server VSFTDP
Anda telah berhasil mengizinkan lalu lintas melalui firewall, tetapi Anda harus mengonfigurasi server VSFTPD Anda sebelum menggunakannya.
/etc/vsftpd.conf file adalah file konfigurasi utama untuk VSFTPD. Tetapi Anda juga dapat mengkonfigurasi server FTP Anda melalui perintah lain jika Anda lebih suka melakukan sesuatu secara dinamis. Atau jika Anda lebih suka menentukan aturan yang tidak tersedia di file konfigurasi.
Selama mengedit file /etc/vsftpd.conf, batalkan komentar setiap direktif untuk mengaktifkannya dengan menghapus simbol # di depannya.
1. Jalankan sudo cp
perintah di bawah ini untuk mencadangkan file konfigurasi asli (/etc/vsftpd.conf /etc/vsftpd.conf.bak
).
Anda harus selalu mencadangkan file konfigurasi penting apa pun sebelum bermain-main.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
2. Selanjutnya, buka /etc/vsftpd.conf
file di editor teks favorit Anda. Demo ini menggunakan nano
untuk mengedit file konfigurasi.
sudo nano /etc/vsftpd.conf
3. Cari dan ubah anonymous_enable nilai arahan ke TIDAK. Pengguna anonim biasanya digunakan untuk berbagi file publik. Anda tidak ingin pengguna anonim itu di server Anda. Sebagai gantinya, Anda ingin server FPT Anda aman.
Setel nilai direktif local_enable ke YA untuk memungkinkan orang dengan akun di server Anda mentransfer file melalui FTP. Dengan konfigurasi ini, hanya pengguna yang berwenang yang dapat masuk ke server FTP Anda.
4. Sekarang, ubah write_enable arahan ke YA sehingga pengguna Anda dapat mengunggah dan menyimpan file ke server FTP Anda. Arahan ini adalah yang paling penting, karena mengontrol akses ke fungsi unggah.
5. Ubah chroot_local_user arahan ke YA karena pengguna FPT Anda tidak boleh dijalankan sebagai root. Membuat pengguna baru yang mungkin memiliki hak istimewa untuk digunakan oleh layanan FTP jauh lebih aman (Anda akan mempelajari cara membuat pengguna khusus nanti).
Jika arahan ini tidak diaktifkan, pengguna FPT akan memiliki akses ke semua yang ada di server, bahkan direktori root. Perilaku ini bisa menjadi masalah keamanan BESAR.
Dengan konfigurasi ini, pengguna Anda hanya dapat mengakses folder yang Anda tentukan (direktori beranda pengguna dalam banyak kasus).
Namun ketika nilai direktif chroot_local_user disetel ke YES, direktif write_enable (langkah empat) tidak akan berfungsi karena syscall chroot() menolak akses penulisan (bila diaktifkan).
Sebagai solusi, tambahkan arahan di bawah ini ke vsftpd.conf . Anda file, sehingga arahan write_enable akan berfungsi terlepas dari nilai arahan chroot_local_user.
allowed_writeable_chroot=YES
6. Selanjutnya, tambahkan arahan di bawah ini ke vsftpd.conf . Anda file untuk mengaktifkan koneksi FTP pasif.
VSFTPD dapat menggunakan port apa pun di atas 1024 yang tidak ditempati oleh layanan lain untuk koneksi FTP pasif. Demo ini menggunakan rentang port yang Anda atur di bagian “Membuka Port untuk Koneksi Klien FTP” (langkah ketiga).
pasv_min_port=35000
pasv_max_port=40000
7. Tambahkan baris berikut di bagian bawah vsftpd.conf file untuk mengizinkan hanya pengguna yang berwenang untuk masuk ke server FTP.
userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file.
userlist_deny=NO
8. Terakhir, simpan dan tutup vsftpd.conf file, dan jalankan perintah di bawah ini ke restart
vsftpd
. Anda server untuk menerapkan perubahan.
sudo service vsftpd restart
Membuat Pengguna Khusus untuk Menggunakan Layanan FTP
Anda sekarang telah mengonfigurasi server VSFTPD Anda, tetapi Anda memerlukan pengguna khusus untuk menggunakan layanan FTP alih-alih pengguna root. Anda akan membuat direktori di dalam direktori home pengguna sehingga direktori tersebut mudah diakses.
1. Jalankan adduser
perintah di bawah ini untuk membuat pengguna baru. Anda dapat memilih nama pengguna yang Anda inginkan, tetapi demo ini membuat pengguna bernama ata
. Tapi ingat untuk tidak menduplikasi pengguna di tempat lain di server Anda.
sudo adduser ata
Berikan kata sandi yang aman dan catat itu. Anda akan menggunakan kata sandi ini untuk terhubung ke server FTP Anda.
Anda juga harus memberikan beberapa detail untuk pengguna baru atau menyimpan detail default dengan menekan ENTER. Ketik Y dan tekan ENTER untuk mengonfirmasi informasi pengguna.
2. Selanjutnya, jalankan perintah di bawah ini untuk menambahkan ata
pengguna ke vsftpd.userlist
mengajukan.
Seperti yang Anda ingat, file ini menentukan pengguna mana yang diizinkan untuk masuk melalui FTP ketika nilai direktif userlist_deny disetel ke NO. Pada titik ini, hanya pengguna ata yang dapat masuk ke server FTP Anda, dan semua pengguna anonim lainnya akan ditolak aksesnya.
echo "ata" | sudo tee -a /etc/vsftpd.userlist
3. Jalankan perintah berikut untuk mengatur izin yang tepat untuk /home/ata/ftp
new yang baru direktori.
Perintah di bawah ini memastikan bahwa hanya pengguna FTP khusus Anda yang memiliki akses ke direktori /home/ata/ftp, dan mengizinkan pengguna untuk mentransfer file ke/dari direktori tersebut.
# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user)
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp
4. Sekarang, jalankan chown
perintah untuk mengatur pemilik dan grup /home/ata/ftp/upload
direktori ke pengguna FTP Anda (ata
). Perintah juga menetapkan izin yang benar untuk /home/ata/ftp/upload
direktori.
sudo chown ata:ata /home/ata/ftp/upload
5. Jalankan echo
perintah di bawah ini untuk membuat file pengujian dasar bernama ata.txt
.
Perintah di bawah ini membuat file baru bernama ata.txt di direktori FTP Anda dan menyertakan beberapa teks (file uji vsftpd) dalam file teks.
echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt
Pada titik ini, Anda telah sepenuhnya mengonfigurasi server FPT Anda, dan pengguna Anda dapat terhubung ke sana.
Menghubungkan ke Server FTP
Setelah mengonfigurasi pengguna FTP khusus, akhirnya tiba saatnya untuk terhubung ke server FTP Anda. Namun pertama-tama Anda akan mencoba menghubungkan ke server FTP Anda menggunakan pengguna anonim untuk menguji apakah server FTP Anda aman.
1. Jalankan ftp -p
perintah di bawah ini untuk terhubung ke server FTP Anda. Ganti your-server-ip
dengan alamat IP server Anda yang sebenarnya.
ftp -p your-server-ip
Coba masuk sebagai pengguna anonim, dan Anda akan melihat pesan kesalahan berikut. Output ini mengkonfirmasi bahwa server FTP Anda aman karena hanya pengguna FTP khusus Anda yang dapat mengakses server Anda.
2. Jalankan bye
perintah untuk keluar dari klien FTP.
bye
3. Jalankan kembali ftp
perintah di bawah ini seperti yang Anda lakukan pada langkah pertama. Tapi kali ini, login sebagai pengguna FTP khusus Anda (ata).
ftp -p your-server-ip
Anda akan mendapatkan pesan 230 Login berhasil seperti yang ditunjukkan di bawah ini, yang mengonfirmasi bahwa server FTP Anda berfungsi sebagaimana mestinya.
4. Sekarang, jalankan setiap perintah di bawah ini untuk mengonfirmasi ata.txt file ada di ftp/upload direktori.
ata.txt file yang Anda buat sebelumnya di bagian “Membuat Pengguna Khusus untuk Menggunakan Layanan FTP” (langkah lima).
# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls
5. Jalankan get
perintah di bawah ini untuk mengunduh file (ata.txt
) dari server FTP Anda dan simpan ke mesin lokal Anda.
get ata.txt
Di bawah, Anda dapat melihat pesan konfirmasi yang mengatakan Transfer selesai.
6. Selanjutnya, jalankan put
perintah di bawah ini untuk mengunggah ata.txt
file dari mesin lokal Anda sebagai file baru bernama ata2.txt
ke server FTP Anda.
put ata.txt ata2.txt
7. Terakhir, jalankan kembali ls
perintah untuk membuat daftar semua file di direktori saat ini dan memverifikasi bahwa ata2.txt telah berhasil diunggah oleh pengguna Anda.
ls
Jika transfer file sebelumnya (langkah tujuh hingga delapan) berhasil, Anda akan melihat dua file teks:satu bernama ata.txt dan lainnya bernama ata2.txt, seperti yang ditunjukkan di bawah ini.
Menonaktifkan Akses Shell
Saat Anda membuat pengguna FTP baru, server FTP Anda secara otomatis mengizinkan pengguna tersebut untuk masuk dan menjalankan shell. Akibatnya, selain mengunggah dan mengunduh file, pengguna Anda juga dapat menjalankan perintah sistem yang berpotensi berbahaya di server FTP Anda.
Saat Anda tidak menggunakan server FTP, Anda dapat menonaktifkan akses shell untuk mencegah pengguna masuk menggunakan SSH. Melakukannya sangat penting jika Anda mengaktifkan login tanpa kata sandi untuk pengguna FTP khusus Anda.
1. Buka terminal lain di server Anda, dan jalankan perintah di bawah ini ke ssh
ke server FPT menggunakan pengguna FTP khusus (ata
).
ssh [email protected]
Seperti yang ditunjukkan di bawah ini, Anda dapat berhasil masuk menggunakan nama pengguna ata dengan kata sandi yang Anda buat sebelumnya di bagian “Membuat Pengguna Khusus untuk Menggunakan Layanan FTP”.
Perilaku ini menunjukkan bahwa pengguna ata dapat menjalankan perintah apa pun di server Anda, termasuk mengubah konfigurasi server. Pengguna FTP yang disusupi dapat melakukan lebih banyak kerusakan daripada pengguna anonim.
2. Selanjutnya, jalankan perintah di bawah ini untuk membuat skrip shell baru bernama ftponly.sh
di /bin direktori server FPT Anda. Skrip ini menonaktifkan login FTP apa pun dari pengguna FTP khusus Anda untuk server FTP Anda. Script kemudian mencetak (echo
) pesan peringatan ke layar yang mengatakan This account is limited to FTP access only
.
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly .sh
3. Jalankan chmod
di bawah ini perintah untuk mengatur izin yang benar pada skrip shell baru ini (/bin/ftponly
). Perintah ini membuat skrip dapat dieksekusi dan memungkinkan pengguna FTP Anda (ata) untuk menjalankannya.
sudo chmod a+x /bin/ftponly
4. Sekarang, jalankan perintah di bawah ini untuk menambahkan jalur skrip shell baru (ftponly
) di /etc/shells
. Anda mengajukan. Tindakan ini memastikan bahwa setiap login yang Anda coba dengan pengguna ata Anda ditolak sejak /bin/ftponly
skrip akan dieksekusi sebagai gantinya.
echo "/bin/ftponly" | sudo tee -a /etc/shells
5. Jalankan usermod
perintah di bawah ini untuk mengubah shell pengguna FTP Anda (ata) saat ini menjadi /bin/ftponly
kerang.
sudo usermod ata -s /bin/ftponly
6. Terakhir, jalankan perintah di bawah ini ke SSH ke server FPT Anda menggunakan pengguna FTP Anda (ata
).
ssh [email protected]
Seperti yang ditunjukkan di bawah ini, pengguna FTP khusus Anda tidak dapat SSH ke server FTP Anda. Perilaku ini diharapkan karena /bin/ftponly skrip shell mencetak pesan peringatan dan menutup koneksi SSH (tertutup).
Kesimpulan
Dalam tutorial ini, Anda telah belajar cara menginstal dan mengkonfigurasi server FTP di Ubuntu Linux menggunakan VSFTPD. Anda juga telah mempelajari cara mengonfigurasi pengguna FTP dengan akses terbatas dan membatasi akses shell pengguna FTP.
Pada titik ini, Anda harus memiliki server FTP yang berfungsi dengan akses terbatas.
Dengan pengetahuan baru ini, Anda sekarang dapat mengonfigurasi server FTP Anda di AWS EC2, atau Anda dapat mulai menyiapkan Server FTP di Raspberry Pi Anda. Mana yang akan Anda pilih untuk mulai dikerjakan?