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 Debian Squeeze (Debian 6.0). Anda seharusnya sudah menyiapkan sistem Debian Squeeze dasar.
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. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.
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 kita install libpam-mysql selain vsftpd, MySQL, dan phpMyAdmin:
apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin
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
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
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;
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 ,
UNIQUE (
`username`
)
) 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 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'));
quit;
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.
7 Tautan
- vsftpd:http://vsftpd.beasts.org/
- Debian:http://www.debian.org/