Dalam artikel ini saya akan mendemonstrasikan bagaimana kita dapat mengatur server FTP di Raspberry Pi yang dapat digunakan untuk berbagi file di seluruh perangkat Anda. Kami akan menggunakan vsFTPd karena sangat stabil, aman, dan server FTP yang sangat cepat. Saya juga akan menunjukkan cara mengonfigurasi vsFTPd untuk membatasi pengguna ke direktori HOME mereka, bersama dengan mengenkripsi seluruh koneksi menggunakan SSL/TLS.
Jika Anda ingin mengikuti materi ini, Anda harus menginstal OS Raspberry Pi di Raspberry Pi Anda. Menjalankan server FTP tidak memerlukan antarmuka grafis, jadi saya sarankan untuk menginstal Raspberry Pi OS Lite dengan layanan SSH diaktifkan, mengaktifkan akses jarak jauh.
Instalasi vsFTPd tanpa Raspberry Pi
Paket vsftpd tersedia dari repositori resmi Raspberry Pi OS, sehingga dapat diinstal dengan perintah berikut:
sudo apt update
sudo apt install vsftpd
Setelah instalasi, layanan server FTP akan mulai secara otomatis. Untuk memeriksa status layanan ini, jalankan:
sudo systemctl status vsftpd
Pengembalian dari perintah ini harus mengembalikan "Aktif:aktif (berjalan) sejak...", sesuatu seperti:
vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-05-23 07:02:41 BST; 14s ago
...
Cara Bermigrasi Dari CentOS 8 ke Rocky Linux 8/Alma Linux 8
Konfigurasikan server FTP dengan vsFTPd
Konfigurasi vsFTPd dilakukan melalui file /etc/vsftpd.conf .
Sebagian besar pengaturan didokumentasikan dengan baik, dalam bahasa Inggris, dalam file konfigurasi. Jika Anda ingin mengevaluasi semua opsi yang tersedia, saya merekomendasikan situs web resmi di:Halaman Manual VSFTPD.CONF
1. Akses server FTP
Untuk memastikan bahwa hanya pengguna sistem operasi lokal yang dapat mengakses server FTP, cari entri anonymous_enable dan local_enable dalam file konfigurasi, biarkan sebagai berikut:
anonymous_enable=NO
local_enable=YES
2. Mengaktifkan unggahan
Temukan dan batalkan komentar pada setelan write_enable untuk mengizinkan perubahan sistem file, memungkinkan pengguna mengunggah dan menghapus file:
write_enable=YES
3. Sangkar chroot
Untuk mencegah pengguna FTP mengakses file di luar folder asal mereka, kita harus membuat chroot jail, menghapus komentar pada pengaturan chroot_local_user :
chroot_local_user=YES
Saat fungsi chroot diaktifkan, vsFTPd akan menonaktifkan unggahan file jika direktori pengguna terkunci.
Gunakan salah satu opsi di bawah ini untuk meninggalkan lingkungan chroot dalam mode tulis.
Opsi 1 – cara yang disarankan untuk mengaktifkan pengunggahan file dan membiarkan chroot aktif, mengonfigurasi direktori FTP. Dalam contoh berikut, saya akan membuat direktori ftp di dalam folder home pengguna, yang akan berfungsi sebagai folder yang digunakan oleh chroot dan memungkinkan file untuk diunggah ke dalamnya.
user_sub_token=$USER
local_root=/home/$USER/ftp
Opsi 2 – Alternatif lain adalah menambahkan pengaturan allow_writeable_chroot di file vsftpd.conf. Opsi ini akan mengaktifkan opsi untuk menulis ke folder beranda pengguna.
allow_writeable_chroot=YES
4. Koneksi pasif di server FTP
Secara default, vsFTPd menggunakan mode aktif. Untuk menggunakan mode pasif, atur jarak minimum dan maksimum port yang digunakan.
pasv_min_port=30000
pasv_max_port=31000
vsFTPd dapat menggunakan port apa pun dalam mode pasif. Saat mode pasif diaktifkan, klien FTP membuka koneksi pada port acak saat menghubungkan ke server FTP, pada interval yang Anda tetapkan di file konfigurasi.
5. Batasi login untuk pengguna tertentu
Kita dapat mengonfigurasi vsFTPd untuk mengizinkan hanya beberapa pengguna yang masuk. Untuk melakukan konfigurasi ini, tambahkan baris berikut ke file pengaturan:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
Saat setelan ini diaktifkan, Anda harus menentukan pengguna mana yang dapat masuk, menambahkan nama pengguna mereka di file /etc/vsftpd.user_list, dengan satu pengguna per baris.
6. Transmisi aman dengan SSL/TLS
Untuk mengenkripsi transmisi FTP dengan SSL/TLS, Anda harus memiliki sertifikat SSL dan mengkonfigurasi server FTP untuk menggunakannya. Kami dapat menggunakan sertifikat SSL yang sudah ada yang ditandatangani oleh penerbit bersertifikat, atau membuat sertifikat yang ditandatangani sendiri.
Jika Anda memiliki domain, atau subdomain yang menunjuk ke IP server FTP Anda, Anda dapat membuat sertifikat SSL gratis menggunakan Let's Encrypt. Jika Anda belum pernah menggunakannya sebelumnya, ikuti dokumentasi resmi:Memulai – Mari Enkripsi – Sertifikat SSL/TLS Gratis
Dalam artikel ini, kami akan membuat kunci yang ditandatangani sendiri menggunakan perintah openssl.
Jalankan perintah di bawah ini untuk membuat kunci pribadi (sertifikat) 2048-bit, ditandatangani sendiri, 10 tahun yang berlaku selama 10 tahun. Kunci publik dan pribadi akan disimpan dalam file yang sama.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Setelah membuat kunci, buka kembali file pengaturan vsFTPd:
sudo nano /etc/vsftpd.conf
Temukan pengaturan rsa_cert_file dan rsa_private_key_file dengan mengubah nilainya ke file pem dan atur pengaturan ssl_enable ke YA.
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
Jika pengaturan ini tidak dikonfigurasi dengan benar, server FTP hanya akan menggunakan TLS untuk mengamankan koneksi.
Boot ulang atau server FTP
Ketika pengaturan di atas dilakukan, file pengaturan vsFTPd akan terlihat seperti ini (tanpa komentar):
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES allow_writeable_chroot=YES pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES
Simpan file dan mulai ulang layanan vsFTPd agar perubahan pada file ini diterapkan:
sudo systemctl restart vsftpd
Membuka Firewall
Jika Anda menggunakan UFW Firewall dalam distribusi Anda, Anda harus melepaskan lalu lintas FTP, membuka port 20 (data FTP), 21 (perintah FTP) dan 30000-31000 (port mode pasif), menggunakan perintah berikut:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Sekarang, baca ulang aturan UFW, nonaktifkan dan aktifkan kembali.
sudo ufw disable
sudo ufw enable
Buat pengguna untuk FTP
Untuk menguji server FTP kami, kami akan membuat pengguna.
- Jika Anda sudah memiliki pengguna yang akan digunakan dan Anda hanya ingin memberinya akses, lewati langkah pertama.
- Jika Anda telah menyetel allow_writeable_chroot=YES di file konfigurasi Anda, lewati langkah ketiga.
01. Buat pengguna bernama novouserftp:
sudo adduser novouserftp
Saat diminta, setel sandi pengguna.
02. Tambahkan pengguna ke daftar mereka yang dapat menggunakan server FTP.
echo "novouserftp" | sudo tee -a /etc/vsftpd.user_list
03. Buat direktori FTP dan atur izin yang benar.
sudo mkdir -p /home/novouserftp/ftp/upload
sudo chmod 550 /home/novouserftp/ftp
sudo chmod 750 /home/novouserftp/ftp/upload
sudo chown -R novouserftp: / home / novouserftp / ftp
Seperti yang telah dibahas sebelumnya, pengguna akan dapat mengunggah file di folder ftp/upload dari direktori home mereka.
Pada titik ini, server FTP Anda berfungsi penuh dan Anda dapat menghubungkannya menggunakan klien FTP seperti FileZilla!
Nonaktifkan akses shell
Secara default, ketika pengguna dibuat, jika tidak ada konfigurasi tambahan yang dilakukan, pengguna ini memiliki akses SSH ke server. Untuk menonaktifkan akses ini, buat shell baru yang hanya menampilkan pesan yang memberi tahu pengguna bahwa akun ini terbatas hanya untuk akses FTP.
Buat shell /bin/ftponly dan membuatnya dapat dieksekusi.
echo -e '#!/bin/sh echo "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Tambahkan shell baru ke daftar shell yang valid di file /etc/shells :
echo "/bin/ftponly" | sudo tee -a /etc/shells
Ubah shell pengguna yang dibuat menjadi /bin/ftponly:
sudo usermod novouserftp -s / bin / ftponly
Gunakan perintah terakhir ini untuk semua pengguna yang hanya memiliki akses ke server FTP.
Kesimpulan
Semoga jelas cara menginstal dan mengkonfigurasi server FTP yang cepat dan aman di sistem Raspberry Pi Anda.