GNU/Linux >> Belajar Linux >  >> Linux

Menyiapkan server FTP dengan vsFTPd di Raspberry Pi

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.


Linux
  1. Cara Menginstal Server FTP di Rocky Linux 8 Dengan VSFTPD

  2. Mudah vsFTPD – Server FTP dengan pengguna virtual di Debian 8 Jessie

  3. Mengapa chroot_local_user dari vsftpd tidak aman?

  1. Belajar Linux dengan Raspberry Pi

  2. Cara Menginstal Server FTP di CentOS 7 Dengan VSFTPD

  3. Cara Menginstal Server FTP Di Ubuntu dengan vsftpd

  1. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 20.04

  2. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 18.04

  3. Cara Setup Server FTP dengan VSFTPD di CentOS 7