HowTo - VSFTPD med virtuella användare och mysql
Postat: 22 dec 2007, 21:51
I ett flertal trådar i forumet har frågan varit uppe om man måste ha ett systemkonto på maskinen för att kunna köra ftp. Det behövs naturligtvis inte. Man kan istället skapa virtuella ftp-användare. Denna handledning beskriver hur man kan göra detta. Då jag själv kör Debian Etch server är handledningen baserad på konfigurering av vsftpd ftp-server på denna, men det bör fungera på Ubuntu också.
Följande försätts vara installerat på maskinen:
- vsftpd server ( sudo apt-get install vsftpd )
- MySQL server ( se http://www.howtoforge.com/perfect_server_ubuntu7.10_p4 )
0. Bli root
1. Skapa en databas för vsftpd
b) Ersätt ftpdpass nedan med önskat lösenord för användaren vsftpd. Skriv upp lösenordet - du behöver det senare!
2. Konfigurera vsftpd.
a) Skapa användaren vsftpd, som ska tillhöra gruppen nogroup med hemfoldern /home/vsftpd. vsftpd kommer att köras under denna användare.
b) Skapa en ny vsftpd.conf
Ta först en kopia på gällande.
c) Skapa en tom vsftpd.conf och öppna denna.
d) Klistra in följande och spara:
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
pasv_min_port=50505
pasv_max_port=50510
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
e) Skapa en folder
I denna kan man om så önskas lägga användarspecifika konfigurationsfiler. Vi glömmer detta i denna HowTo.
3. Konfigurera PAM.
Vi ska nu konfigurera PAM som ska använda MySQL för att autentisera våra virtuella användare. Kontrollera att libpam-mysql är installerat.
a) Ta en kopia på gällande PAM konfigurering för vsftpd
b) Skapa en tom fil vsftpd och öppna denna
c) Klistra in följande och spara (OBS!! Glöm inte ersätta ftpdpass med det lösenord du skapade tidigare):
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
4. Starta om vsftpd
5. Skapa nu en virtuell användare (nisse med lösenordet hemlis)
Vi måste också skapa en folder för virtuelle användaren nisse
Dags för nisse att provköra! Glöm inte att öppna portarna 21 och 50505-50510 i brandvägg/router för inkommande trafik till maskinen.
Följande försätts vara installerat på maskinen:
- vsftpd server ( sudo apt-get install vsftpd )
- MySQL server ( se http://www.howtoforge.com/perfect_server_ubuntu7.10_p4 )
0. Bli root
Kod: Markera allt
sudo su
1. Skapa en databas för vsftpd
Kod: Markera allt
mysql -u root -p
Kod: Markera allt
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;
Kod: Markera allt
USE vsftpd;
Kod: Markera allt
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 ;
Kod: Markera allt
quit;
2. Konfigurera vsftpd.
a) Skapa användaren vsftpd, som ska tillhöra gruppen nogroup med hemfoldern /home/vsftpd. vsftpd kommer att köras under denna användare.
Kod: Markera allt
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Ta först en kopia på gällande.
Kod: Markera allt
cp /etc/vsftpd.conf /etc/vsftpd.conf_orginal
Kod: Markera allt
cat /dev/null > /etc/vsftpd.conf
nano /etc/vsftpd.conf
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
pasv_min_port=50505
pasv_max_port=50510
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
e) Skapa en folder
Kod: Markera allt
mkdir /etc/vsftpd_user_conf
3. Konfigurera PAM.
Vi ska nu konfigurera PAM som ska använda MySQL för att autentisera våra virtuella användare. Kontrollera att libpam-mysql är installerat.
Kod: Markera allt
apt-get install libpam-mysql
Kod: Markera allt
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orginal
Kod: Markera allt
cat /dev/null > /etc/pam.d/vsftpd
nano /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
4. Starta om vsftpd
Kod: Markera allt
/etc/init.d/vsftpd restart
5. Skapa nu en virtuell användare (nisse med lösenordet hemlis)
Kod: Markera allt
mysql -u root -p
Kod: Markera allt
USE vsftpd;
Kod: Markera allt
INSERT INTO accounts (username, pass) VALUES('nisse', PASSWORD('hemlis'));
Kod: Markera allt
quit;
Kod: Markera allt
mkdir /home/vsftpd/nisse
chown vsftpd:nogroup /home/vsftpd/nisse