GNU/Linux >> Belajar Linux >  >> Debian

Cara mengatur vsftpd di Debian

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

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
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.


Debian
  1. Cara Menginstal R di Debian 9

  2. Cara Setup Server Rsyslog di Debian 11

  3. Bagaimana cara mengatur VSFTPD di CentOS 7.x?

  1. Cara Setup Server FTP dengan VSFTPD di Debian 9

  2. Cara Menginstal R di Debian 10

  3. Cara Setup Server Rsyslog di Debian 11 (Bullseye)

  1. Cara Mengatur Pengelola Kata Sandi Teampass di Debian 11

  2. Cara Setup Symfony 4 di Server Debian 9

  3. Cara Menginstal Server FTP vsftpd di Debian 11