GNU/Linux >> Belajar Linux >  >> Debian

Cara Setup Server FTP dengan VSFTPD di Debian 9

FTP (File Transfer Protocol) adalah protokol jaringan standar yang digunakan untuk mentransfer file ke dan dari jaringan jarak jauh. Untuk transfer data yang lebih aman dan lebih cepat, gunakan SCPor SFTP.

Ada banyak server FTP open-source yang tersedia untuk Linux. Yang paling populer dan banyak digunakan adalah PureFTPd, ProFTPD, dan vsftpd.

Tutorial ini menjelaskan cara menginstal dan mengkonfigurasi vsftpd (Very Secure Ftp Daemon) di Debian 9. vsftpd server FTP yang stabil, aman, dan cepat. Kami juga akan menunjukkan cara mengonfigurasi vsftpd untuk membatasi pengguna ke direktori home mereka dan mengenkripsi seluruh transmisi dengan SSL/TLS.

Prasyarat #

Pengguna yang Anda masuki harus memiliki hak sudo untuk dapat menginstal paket.

Menginstal vsftpd di Debian 9 #

Paket vsftpd tersedia di repositori Debian. Instalasi cukup mudah:

sudo apt updatesudo apt install vsftpd

Layanan vsftpd akan otomatis dimulai setelah proses instalasi selesai. Verifikasi dengan mencetak status layanan:

sudo systemctl status vsftpd

Outputnya akan terlihat seperti di bawah ini, menunjukkan bahwa layanan vsftpd aktif dan berjalan:

● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago
 Main PID: 1394 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

Konfigurasi vsftpd #

Server vsftpd dapat dikonfigurasi dengan memodifikasi vsftpd.conf file, ditemukan di /etc direktori.

Sebagian besar pengaturan didokumentasikan dengan baik di dalam file konfigurasi. Untuk semua opsi yang tersedia, kunjungi halaman vsftpd resmi.

Di bagian berikut, kita akan membahas beberapa pengaturan penting yang diperlukan untuk mengonfigurasi instalasi vsftpd yang aman.

Mulailah dengan membuka file konfigurasi vsftpd:

sudo nano /etc/vsftpd.conf

1. Akses FTP #

Temukan anonymous_enable dan local_enable arahan dan verifikasi konfigurasi Anda cocok dengan baris di bawah ini:

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

Ini memastikan bahwa hanya pengguna lokal yang dapat mengakses server FTP.

2. Mengaktifkan unggahan #

Batalkan komentar pada write_enable pengaturan untuk mengizinkan perubahan pada sistem file seperti mengunggah dan menghapus file.

/etc/vsftpd.conf
write_enable=YES

3. Penjara Chroot #

Untuk mencegah pengguna FTP mengakses file apa pun di luar direktori home mereka, batalkan komentar chroot pengaturan.

/etc/vsftpd.conf
chroot_local_user=YES

Secara default untuk mencegah kerentanan keamanan, ketika chroot diaktifkan vsftpd akan menolak untuk mengunggah file jika direktori tempat pengguna terkunci dapat ditulis.

Gunakan salah satu metode di bawah ini untuk mengizinkan unggahan saat chroot diaktifkan.

  • Metode 1. - Metode yang disarankan untuk mengizinkan pengunggahan adalah dengan tetap mengaktifkan chroot dan mengonfigurasi direktori FTP. Dalam tutorial ini, kita akan membuat ftp direktori di dalam rumah pengguna yang akan berfungsi sebagai chroot dan uploads . yang dapat ditulis direktori untuk mengunggah file.

    /etc/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Metode 2. - Pilihan lain adalah menambahkan direktif berikut dalam file konfigurasi vsftpd. Gunakan opsi ini jika Anda harus memberikan akses yang dapat ditulis kepada pengguna Anda ke direktori home-nya.

    /etc/vsftpd.conf
    allow_writeable_chroot=YES

4. Koneksi FTP Pasif #

vsftpd dapat menggunakan port apa saja untuk koneksi FTP pasif. Kami akan menentukan kisaran minimum dan maksimum port dan kemudian membuka jangkauan di firewall kami.

Tambahkan baris berikut ke file konfigurasi:

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. Membatasi Login Pengguna #

Untuk mengizinkan hanya pengguna tertentu yang masuk ke server FTP, tambahkan baris berikut di akhir file:

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Ketika opsi ini diaktifkan, Anda perlu secara eksplisit menentukan pengguna mana yang dapat masuk dengan menambahkan nama pengguna ke /etc/vsftpd.user_list file (satu pengguna per baris).

6. Mengamankan Transmisi dengan SSL/TLS #

Untuk mengenkripsi transmisi FTP dengan SSL/TLS, Anda harus memiliki sertifikat SSL dan mengonfigurasi server FTP untuk menggunakannya.

Anda dapat menggunakan sertifikat SSL yang sudah ada yang ditandatangani oleh Otoritas Sertifikat tepercaya atau membuat sertifikat yang ditandatangani sendiri.

Jika Anda memiliki domain atau subdomain yang mengarah ke alamat IP server FTP, Anda dapat dengan mudah membuat sertifikat Let's EncryptSSL gratis.

Dalam tutorial ini, kami akan membuat sertifikat SSL yang ditandatangani sendiri menggunakan openssl perintah.

Perintah berikut akan membuat kunci pribadi 2048-bit dan sertifikat yang ditandatangani sendiri yang berlaku selama 10 tahun. Kunci pribadi dan sertifikat 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 sertifikat SSL dibuat, buka file konfigurasi vsftpd:

sudo nano /etc/vsftpd.conf

Temukan rsa_cert_file dan rsa_private_key_file direktif, ubah nilainya menjadi pam jalur file dan atur ssl_enable arahan ke YES :

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Jika tidak ditentukan sebaliknya, server FTP hanya akan menggunakan TLS untuk membuat koneksi yang aman.

Mulai ulang Layanan vsftpd #

Setelah Anda selesai mengedit, file konfigurasi vsftpd (tidak termasuk komentar) akan terlihat seperti ini:

/spdrpd.conf
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
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Simpan file dan mulai ulang layanan vsftpd agar perubahan diterapkan:

sudo systemctl restart vsftpd

Membuka Firewall #

Jika Anda menjalankan firewall UFW, Anda harus mengizinkan lalu lintas FTP.

Untuk membuka port 21 (port perintah FTP), port 20 (port data FTP) dan 30000-31000 (Rentang port pasif), jalankan perintah berikut:

sudo ufw allow 20:21/tcpsudo ufw allow 30000:31000/tcp

Untuk menghindari terkunci kami juga akan membuka port 22 :

sudo ufw allow OpenSSH

Muat ulang aturan UFW dengan menonaktifkan dan mengaktifkan kembali UFW:

sudo ufw disablesudo ufw enable

Untuk memverifikasi perubahan, jalankan:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20:21/tcp (v6)             ALLOW       Anywhere (v6)
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

Membuat Pengguna FTP #

Untuk menguji server FTP kami, kami akan membuat pengguna baru.

  • Jika Anda sudah memiliki pengguna yang ingin Anda beri akses FTP lewati langkah pertama.
  • Jika Anda menyetel allow_writeable_chroot=YES di file konfigurasi Anda lewati langkah ke-3.
  1. Buat pengguna baru bernama newftpuser :

    sudo adduser newftpuser
  2. Tambahkan pengguna ke daftar pengguna FTP yang diizinkan:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Buat pohon direktori FTP dan atur izin yang benar:

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Seperti yang telah dibahas di bagian sebelumnya, pengguna akan dapat mengunggah filenya ke ftp/upload direktori.

Pada titik ini, server FTP Anda berfungsi penuh dan Anda seharusnya dapat terhubung ke server Anda menggunakan klien FTP apa pun yang dapat dikonfigurasi untuk menggunakan enkripsi TLS seperti FileZilla.

Menonaktifkan Akses Shell #

Secara default, saat membuat pengguna, jika tidak ditentukan secara eksplisit, pengguna akan memiliki akses SSH ke server.

Untuk menonaktifkan akses shell, kita akan membuat shell baru yang hanya akan mencetak pesan yang memberitahu pengguna bahwa akun mereka terbatas pada akses FTP saja.

Buat /bin/ftponly shell dan membuatnya dapat dieksekusi:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponlysudo chmod a+x /bin/ftponly

Tambahkan shell baru ke daftar shell yang valid di /etc/shells berkas:

echo "/bin/ftponly" | sudo tee -a /etc/shells

Ubah shell pengguna menjadi /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Gunakan perintah yang sama untuk mengubah shell dari semua pengguna yang hanya ingin Anda berikan akses FTP.


Debian
  1. Cara Setup Server Rsyslog di Debian 11

  2. Cara Menginstal Server FTP vsftpd dan Mengamankannya dengan TLS di Debian 11

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

  1. Cara Menginstal Server FTP di CentOS 7 Dengan VSFTPD

  2. Cara mengatur vsftpd di Debian

  3. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 20.04

  1. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 18.04

  2. Cara Setup Server FTP dengan VSFTPD di CentOS 7

  3. Cara Setup Server FTP dengan VSFTPD di CentOS 8