GNU/Linux >> Belajar Linux >  >> Ubuntu

Hosting Virtual Dengan vsftpd Dan MySQL Di Ubuntu 12.10

Vsftpd adalah salah satu server FTP paling aman dan tercepat untuk Linux. Biasanya vsftpd dikonfigurasi untuk bekerja dengan pengguna sistem. Dokumen ini menjelaskan cara menginstal server vsftpd yang menggunakan pengguna virtual dari database MySQL alih-alih pengguna sistem nyata. Ini jauh lebih berkinerja dan memungkinkan untuk memiliki ribuan pengguna ftp di satu mesin.

Untuk administrasi database MySQL Anda dapat menggunakan alat berbasis web seperti phpMyAdmin yang juga akan diinstal di howto ini. phpMyAdmin adalah antarmuka grafis yang nyaman yang berarti Anda tidak perlu dipusingkan dengan baris perintah.

Tutorial ini didasarkan pada Ubuntu 12.10. Anda seharusnya sudah menyiapkan sistem dasar Ubuntu 12.10.

Howto ini dimaksudkan sebagai panduan praktis; itu tidak mencakup latar belakang teoretis. Mereka diperlakukan di banyak dokumen lain di web.

Dokumen ini datang tanpa jaminan apapun! Saya ingin mengatakan bahwa ini bukan satu-satunya cara untuk mengatur sistem seperti itu. Ada banyak cara untuk mencapai tujuan ini tetapi ini adalah cara yang saya ambil. Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!

1 Catatan Awal

Dalam tutorial ini saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100. Pengaturan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

Karena kita harus menjalankan semua langkah dari tutorial ini dengan hak akses root, kita bisa menambahkan semua perintah dalam tutorial ini dengan string sudo, atau kita menjadi root sekarang dengan mengetik

sudo su 

2 Instal vsftpd, MySQL Dan phpMyAdmin

Vsftpd tidak memiliki dukungan MySQL bawaan, oleh karena itu kita harus menggunakan PAM untuk mengotentikasi terhadap database MySQL. Jadi kami menginstal libpam-mysql selain vsftpd, MySQL, dan phpMyAdmin:

apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin libpam-ldap

Anda akan ditanya pertanyaan berikut:

Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Server web untuk mengkonfigurasi ulang secara otomatis:<-- apache2
Konfigurasikan database untuk phpmyadmin dengan dbconfig-common? <-- Tidak
LDAP server Uniform Resource Identifier: <--  ENTER
Nama yang berbeda dari basis penelusuran: <-- ENTER
versi LDAP untuk digunakan: <-- 3
Jadikan root local Database admin: <-- Ya
Apakah database LDAP memerlukan login? <-- Tidak
LDAP akun untuk root: <-- ENTER
LDAP root akun sandi: <-- ldaprootpw

3 Buat Database MySQL Untuk vsftpd

Sekarang kita membuat database bernama vsftpd dan pengguna MySQL bernama vsftpd yang nantinya akan digunakan daemon vsftpd untuk terhubung ke database vsftpd:

mysql -u root -p

BUAT DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* UNTUK 'vsftpd'@'localhost' DIIDENTIFIKASI DENGAN 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE , BUAT, DROP ON vsftpd.* KE 'vsftpd'@'localhost.localdomain' DIIDENTIFIKASI OLEH 'ftpdpass';
HAK ISTIMEWA FLUSH;

Ganti string ftpdpass dengan kata sandi apa pun yang ingin Anda gunakan untuk pengguna MySQL vsftpd. Masih di shell MySQL, kita membuat tabel database yang kita butuhkan (ya, hanya ada satu tabel!):

USE vsftpd;

CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIK (
`nama pengguna`
)
) ENGINE =MYISAM;

quit;

Seperti yang mungkin Anda perhatikan, dengan berhenti; perintah kami telah meninggalkan shell MySQL dan kembali ke shell Linux.

BTW, (Saya berasumsi bahwa nama host sistem server ftp Anda adalah server1.example.com) Anda dapat mengakses phpMyAdmin di http://server1.example.com/phpmyadmin/ (Anda juga dapat menggunakan alamat IP alih-alih server1 .example.com) di browser dan masuk sebagai pengguna vsftpd. Kemudian Anda dapat melihat database. Nanti Anda dapat menggunakan phpMyAdmin untuk mengelola server vsftpd Anda.

4 Konfigurasi vsftpd

Pertama kita membuat pengguna non-istimewa bernama vsftpd (dengan homedir /home/vsftpd) milik grup nogroup. Kami akan menjalankan vsftpd di bawah pengguna ini, dan direktori FTP dari pengguna virtual kami akan berada di direktori /home/vsftpd (mis. /home/vsftpd/user1, /home/vsftpd/user2, dll.).

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Kemudian kita membuat cadangan dari file /etc/vsftpd.conf asli dan membuat sendiri:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null> /etc/vsftpd.conf
vi /etc/vsftpd.conf

File harus memiliki konten berikut:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf

Opsi konfigurasi dijelaskan di http://vsftpd.beasts.org/vsftpd_conf.html. Opsi penting untuk penyiapan virtual kami adalah chroot_local_user, guest_enable, guest_username, user_sub_token, local_root, dan virtual_use_local_privs.

Dengan opsi user_config_dir Anda dapat menentukan direktori untuk file konfigurasi per pengguna yang menimpa bagian dari pengaturan global. Ini sepenuhnya opsional dan terserah Anda jika Anda ingin menggunakan fitur ini. Namun, kita harus membuat direktori itu sekarang:

mkdir /etc/vsftpd_user_conf

Sekarang kita harus mengkonfigurasi PAM sehingga menggunakan database MySQL untuk mengotentikasi pengguna FTP virtual kita, bukan /etc/passwd dan /etc/shadow. Konfigurasi PAM untuk vsftpd ada di /etc/pam.d/vsftpd. Kami membuat cadangan dari file asli dan membuat yang baru seperti ini:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null> /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd

auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

Pastikan Anda mengganti kata sandi MySQL dengan kata sandi Anda sendiri!

Setelah itu, kita restart vsftpd:

/etc/init.d/vsftpd restart

5 Buat Pengguna Virtual Pertama

Untuk mengisi database Anda dapat menggunakan shell MySQL:

mysql -u root -p
USE vsftpd;

Sekarang kita membuat user testuser virtual dengan password rahasia (yang akan disimpan dienkripsi menggunakan fungsi PASSWORD MySQL):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
keluar;

homedir testuser adalah /home/vsftpd/testuser; sayangnya vsftpd tidak membuat direktori itu secara otomatis jika tidak ada. Oleh karena itu kami membuatnya secara manual sekarang dan menjadikannya milik pengguna vsftpd dan grup nogroup:

mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuser

Sekarang buka program klien FTP Anda di stasiun kerja Anda (seperti FileZilla atau FireFTP) dan coba sambungkan. Sebagai nama host, Anda menggunakan server1.example.com (atau alamat IP sistem), nama pengguna adalah pengguna uji, dan sandinya rahasia.

Jika Anda dapat terhubung - selamat! Jika tidak, ada yang tidak beres.

6 Administrasi Basis Data

Bagi kebanyakan orang akan lebih mudah jika mereka memiliki front-end grafis ke MySQL; oleh karena itu Anda juga dapat menggunakan phpMyAdmin (dalam contoh ini di bawah http://server1.example.com/phpmyadmin/) untuk mengelola database vsftpd.

Setiap kali Anda membuat atau memodifikasi pengguna, pastikan Anda menggunakan fungsi PASSWORD MySQL untuk mengenkripsi kata sandi pengguna tersebut. Juga, ketika Anda membuat pengguna virtual baru, jangan lupa untuk membuat homedir pengguna tersebut di shell, seperti yang ditunjukkan di akhir bab sebelumnya.

  • vsftpd:http://vsftpd.beasts.org/
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 14.04LTS)

  2. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 14.04LTS

  3. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 13.10)

  1. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 7.10 (Gutsy Gibbon)

  2. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.04 LTS

  3. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 8.10)

  1. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 8.10 (Intrepid Ibex)

  2. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.10

  3. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.04 (Jaunty Jackalope)