Vsftpd adalah akronim dari Very Secure FTP Daemon:ini adalah salah satu server ftp yang paling banyak digunakan di Linux dan sistem operasi mirip Unix lainnya. Ini adalah open source dan dirilis di bawah lisensi GPL, dan mendukung pengguna virtual dan SSL untuk enkripsi
data. Dalam tutorial ini kita akan melihat cara menginstal dan mengkonfigurasinya di Linux.
Dalam tutorial ini Anda akan belajar :
- Cara menginstal vsftpd di Debian 10
- Cara mengonfigurasi vsftpd
- Cara menyiapkan penggunaan anonim
- Cara mengatur login dengan pengguna lokal
- Cara menyiapkan pengguna virtual
- Cara menyiapkan ufw untuk mengizinkan lalu lintas masuk
Cara mengatur vsftpd di Debian
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Debian 10 (Buster) |
Perangkat Lunak | vsftpd, openssl, libpam-pwdfile |
Lainnya | Izin root untuk menginstal dan mengonfigurasi vsftpd |
Konvensi | # – mengharuskan perintah-linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo command$ – mengharuskan perintah-linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Pemasangan
Vsftpd tersedia di repositori resmi Debian, oleh karena itu untuk menginstalnya kita dapat menggunakan manajer paket favorit kita; ini hanya masalah sinkronisasi repositori dan menginstal paket. Kedua hal tersebut dapat dilakukan dengan
menjalankan perintah berikut:
$ sudo apt-get update && sudo apt-get install vsftpd
Beberapa detik dan paket akan diinstal pada sistem Debian kami. Skrip instalasi yang disertakan dalam paket juga akan membantu memulai vsftpd service secara otomatis tetapi kita harus ingat untuk me-restart atau memuat ulang layanan setiap kali kita mengubah file konfigurasi. Untuk dapat menggunakan pengguna virtual fitur yang disediakan oleh vsftpd kita juga perlu menginstal paket lain:
$ sudo apt-get install libpam-pwdfile
Kita akan melihat penggunaannya di bagian khusus dari tutorial ini.
Setelah paket yang dibutuhkan terinstal, kita dapat melanjutkan lebih jauh dan mengkonfigurasi vsftpd:kita akan melihat bagaimana melakukannya di bagian selanjutnya dari tutorial ini.
Penyiapan Vsftpd
File konfigurasi vsftpd adalah /etc/vsftpd.conf
. Jika kita membukanya kita bisa melihat berbagai arahan yang sudah terkandung di dalamnya. Mari kita lihat apa yang paling relevan untuk kasus yang paling umum.
Aktifkan login anonim
Akses yang tidak diautentikasi ke server, sebagai pengguna anonim, dinonaktifkan secara default. Untuk mengaktifkannya, kita harus menggunakan anonymous_enable
direktif, yang pada file konfigurasi ditempatkan pada baris 25
. Yang harus kita lakukan adalah mengaturnya pada YES
:
harus mengubah instruksi menjadi:
anonymous_enable=YES
Arahan lain yang mungkin ingin kita ubah adalah yang memungkinkan kita mengatur direktori di mana vsftpd akan mencoba menavigasi setelah akses anonim. Arahan yang memungkinkan kita mengontrol pengaturan ini adalah anon_root
. Katakanlah kita ingin pengguna anonim mengakses /srv/ftp
direktori secara default, kami akan menulis:
anon_root=/srv/ftp
Semua login anonim dipetakan secara internal ke pengguna yang dirancang, yang secara default adalah ftp
. Untuk mengubah pemetaan ini kita harus menggunakan ftp_username
dan atur ke nama pengguna yang ingin kita petakan pengguna anonim.
Secara default, pengguna anonim tidak akan diizinkan untuk menulis apa pun di server, karena alasan keamanan yang jelas. Jika Anda ingin mengubah perilaku ini (tidak disarankan) ada beberapa opsi yang perlu diubah. Pertama-tama write_enable
general umum direktif harus disetel ke YES
. Arahan ini dikomentari pada baris 31
dari file konfigurasi, jadi yang harus Anda lakukan adalah menghapus komentar.
# Uncomment this to enable any form of FTP write command. write_enable=YES
Setelah arahan ini diaktifkan, yang harus kita lakukan adalah mengerjakan dua opsi lain:anon_upload_enable
dan anon_mkdir_write_enable
. Ketika yang pertama disetel ke YES
pengguna anonim akan dapat mengunggah file, tetapi hanya jika pengguna yang dipetakan (seperti yang kami katakan, ftp, secara default) memiliki izin menulis pada direktori tujuan. Untuk mengaktifkan opsi ini, yang harus kita lakukan adalah menghapus komentar dari baris 40
dari file konfigurasi:
# Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. anon_upload_enable=YES
anon_mkdir_write_enable
direktif, sebagai gantinya, ketika disetel ke YES
memungkinkan pengguna anonim untuk membuat direktori baru di server, pada kondisi yang sama seperti yang kita lihat di atas (pengguna yang mendasari di server harus memiliki izin menulis di direktori induk). Arahan terletak di baris 44
dari file konfigurasi:
# Uncomment this if you want the anonymous FTP user to be able to create # new directories. anon_mkdir_write_enable=YES
Sekali lagi, karena variabel sudah disetel ke YES
, agar relevan, yang harus kita lakukan adalah menghapus komentar darinya.
Untuk mengizinkan pengguna anonim melakukan juga jenis operasi penulisan lainnya, seperti misalnya mengganti nama atau menghapus direktori, kita harus menggunakan direktif lain yang tidak ada dalam file konfigurasi, anon_other_write_enable
dan atur ke YES
jika yang di atas adalah perilaku yang kita inginkan:
anon_other_write_enable=YES
Login yang diautentikasi
Untuk mengizinkan pengguna sistem lokal mengakses server ftp dengan kata sandi sistem mereka, tombol local_enable
direktif harus disetel ke YES
:ini adalah default pada sistem Debian. Arahan dapat ditemukan pada baris 28
daemon
file konfigurasi:
# Uncomment this to allow local users to log in. local_enable=YES
Secara default, ketika pengguna lokal berhasil mengautentikasi, dia akan memiliki direktori home sendiri sebagai root. Namun, dimungkinkan untuk menentukan titik awal alternatif dengan menggunakan local_root
pengarahan. Direktif ini tidak ada dalam file konfigurasi, jadi kita harus menambahkannya jika ingin menggunakannya. Untuk mengatur /srv/ftp
direktori sebagai root lokal, misalnya, kita akan menulis:
local_root=/srv/ftp
Chroot pengguna lokal
Sebagai tindakan keamanan, dimungkinkan untuk chroot setiap pengguna yang diautentikasi di direktori home-nya sendiri. Untuk menyelesaikan tugas ini kita harus menggunakan chroot_local_user
arahan:
chroot_local_user=YES
Ketika fitur ini diaktifkan, dimungkinkan untuk menentukan daftar pengecualian, (daftar pengguna yang tidak boleh di-chroot) menggunakan arahan berikut:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Direktif pertama diperlukan untuk mengaktifkan fitur, yang lain untuk menentukan lokasi file yang berisi daftar pengecualian . File harus dibuat jika belum ada, jika tidak login akan gagal.
Sebagai tindakan keamanan, ketika pengguna di-chroot, pengguna tidak boleh menulis ke direktori tingkat atas chroot. Jika demikian, dalam versi vsftpd terbaru, pengguna tidak akan dapat masuk, dan server akan merespons dengan pesan berikut:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Masalah ini pada dasarnya dapat diselesaikan dengan dua cara. Yang pertama ini jelas terdiri dari memperbaiki izin , menolak akses tulis pengguna ke direktori tingkat atas chroot dan membiarkan mereka menulis hanya pada sub-direktori.
Cara kedua untuk menyelesaikan masalah, jika Anda tidak peduli dengan kemungkinan implikasi keamanan, adalah dengan lewati batasan ini , menggunakan arahan berikut:
allow_writeable_chroot=YES
Berbicara tentang izin, penting untuk diingat bahwa umask default untuk pengguna lokal disetel ke 077
. Jika pengaturan ini dianggap terlalu membatasi, Anda dapat mengubahnya menggunakan local_umask
pengarahan. Arahan ini dikomentari pada baris 35
dari file konfigurasi:
# Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) #local_umask=022
Masuk dengan pengguna virtual
Salah satu fitur bagus yang ditawarkan oleh vsftpd adalah kemungkinan untuk masuk menggunakan pengguna virtual . Pengguna virtual adalah pengguna yang tidak benar-benar ada di sistem, tetapi hanya dalam konteks aplikasi sftpd. Untuk mengaktifkan fitur ini kita harus menggunakan arahan berikut:
guest_enable=YES
Saat fitur aktif, semua login non-anonim (bahkan pengguna nyata/lokal) dipetakan ke pengguna yang ditentukan dengan guest_username
direktif, yang secara default, seperti yang sudah kita lihat adalah ftp .
Langkah selanjutnya adalah membuat file yang berisi username dan password pengguna virtual. Untuk menghasilkan kata sandi hash, kita dapat menggunakan openssl
dan jalankan perintah berikut:
$ openssl passwd -1 Password: Verifying - Password: $1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.
sandi perintah openssl digunakan untuk menghasilkan kata sandi hash (md5). Pada contoh di atas, kami diminta untuk meng-hash password dan konfirmasinya. Akhirnya kata sandi hash dibuat dan ditampilkan di layar.
Username beserta password harus dimasukkan ke dalam sebuah file, misalkan /etc/virtual_users.pwd
, dalam format berikut:
username:hashed_password
Jadi seandainya pengguna virtual kita disebut "linuxconfig", kita akan menulis:
linuxconfig:$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.
Operasi harus diulang untuk setiap pengguna virtual yang ingin kita konfigurasi.
Sekarang kita harus membuat pam layanan yang akan digunakan oleh vsftpd untuk mengotentikasi pengguna virtual. Kami akan memberi nama file vsftpd_virtual
dan letakkan di /etc/pam.d
direktori. Isinya adalah sebagai berikut:
#%PAM-1.0 auth required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd account required pam_permit.so
Seperti yang Anda lihat, kami menentukan jalur file yang berisi nama pengguna dan kata sandi pengguna virtual di baris pertama. Yang perlu kita lakukan sekarang adalah menginstruksikan vsftpd untuk menggunakan "layanan" pam ini. Kita dapat melakukannya dengan pam_service_name
arahan:
pam_service_name=vsftpd_virtual
Pada titik ini kita dapat menyimpan file konfigurasi, memulai ulang daemon dan memverifikasi bahwa kita dapat login dengan pengguna virtual yang baru saja kita buat.
Mengaktifkan dukungan SSL untuk enkripsi data
Secara default, dukungan SSL dinonaktifkan pada vsftpd, jadi data yang ditransfer tidak akan dienkripsi. Untuk mengaktifkan dukungan SSL, kita harus menggunakan arahan berikut, terletak di baris 149
ke 151
dari file konfigurasi:
# This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES
Perintah pertama, rsa_cert_file
digunakan untuk menunjukkan jalur sertifikat RSA yang akan digunakan untuk koneksi terenkripsi SSL. Yang kedua, rsa_private_key
, sebagai gantinya, digunakan untuk menentukan lokasi kunci pribadi RSA. Terakhir, ssl_enable
direktif digunakan untuk mengaktifkan penggunaan enkripsi SSL.
Contoh menggunakan /etc/ssl/certs/ssl-cert-snakeoil.pem
dan /etc/ssl/private/ssl-cert-snakeoil.key
file, tetapi Anda hampir pasti ingin menggunakan file khusus.
Menentukan rentang port untuk mode pasif
Mode pasif FTP adalah default pada instalasi baru vsftpd, tetapi jika kita ingin mengaktifkannya secara eksplisit, kita dapat menggunakan arahan berikut:
# Set to NO if you want to disallow the PASV method of obtaining a data connection # (passive mode). Default: YES pasv_enable=YES
Saat server beroperasi dalam mode pasif , ia mengirim ke klien alamat IP dan port yang harus didengarkan untuk koneksi. Port ini secara default dipilih secara acak, namun, karena kita harus menggunakan firewall di server kita, kita harus tahu port apa yang harus kita izinkan lalu lintas secara menyeluruh. Rentang port yang akan digunakan dapat ditentukan dengan pasv_min_port
dan pasv_max_port
arahan, misalnya:
# The minimum port to allocate for PASV style data connections. Can be used to # specify a narrow port range to assist firewalling. pasv_min_port=10090 # The maximum port to allocate for PASV style data connections. Can be used to # specify a narrow port range to assist firewalling. Default: 0 (use any port) pasv_max_port=10100
Dengan konfigurasi berikut, server akan menggunakan berbagai port mulai dari 10090
ke 10100
.
Penyiapan firewall
Agar server vsftpd kami berfungsi dengan benar, kami harus mengizinkan lalu lintas melalui port yang diperlukan, beberapa kami harus menyiapkan aturan yang sesuai untuk firewall kami. Dalam tutorial ini saya akan mengasumsikan penggunaan ufw pengelola firewall (Firewall Tidak Kompleks).
Port pertama yang ingin kita izinkan lalu lintasnya adalah port 21
, yang merupakan port standar yang digunakan oleh protokol FTP:
$ sudo ufw allow in 21/tcp
Sebagai hal kedua, kita harus mengizinkan lalu lintas masuk melalui rentang port yang ditentukan yang kita siapkan di bagian sebelumnya. Untuk menentukan rentang port yang dapat kita jalankan:
$ sudo ufw allow in 10090:10100/tcp
Kesimpulan
Pada artikel ini kita melihat cara menginstal dan mengkonfigurasi vsftpd di Debian 10 Buster. Kami melihat cara mengatur penggunaan anonim dan penggunaan pengguna lokal, dan bagaimana kami dapat memanfaatkan pengguna virtual fitur yang disediakan oleh layanan. Karena FTP tidak menyediakan enkripsi data, kami melihat cara mengaktifkan dukungan SSL, dan terakhir cara mengatur firewall untuk mengizinkan lalu lintas masuk melalui port yang diperlukan. Untuk daftar lengkap kemungkinan arahan yang dapat digunakan dalam file konfigurasi vsftpd, silakan lihat vsftpd.conf halaman manual (VSFTPD.CONF (5)). Ingin tahu cara bekerja secara terprogram dengan server FTP? Lihat artikel kami tentang Cara terhubung ke server FTP menggunakan python.