Sida 1 av 2

HowTo - VSFTPD med virtuella användare och mysql

Postat: 22 dec 2007, 21:51
av northface
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

Kod: Markera allt

sudo su

1. Skapa en databas för vsftpd

Kod: Markera allt

mysql -u root -p
b) Ersätt ftpdpass nedan med önskat lösenord för användaren vsftpd. Skriv upp lösenordet - du behöver det senare!

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
b) Skapa en ny vsftpd.conf
Ta först en kopia på gällande.

Kod: Markera allt

cp /etc/vsftpd.conf /etc/vsftpd.conf_orginal
c) Skapa en tom vsftpd.conf och öppna denna.

Kod: Markera allt

cat /dev/null > /etc/vsftpd.conf
nano /etc/vsftpd.conf
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

Kod: Markera allt

mkdir /etc/vsftpd_user_conf
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.

Kod: Markera allt

apt-get install libpam-mysql
a) Ta en kopia på gällande PAM konfigurering för vsftpd

Kod: Markera allt

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orginal
b) Skapa en tom fil vsftpd och öppna denna

Kod: Markera allt

cat /dev/null > /etc/pam.d/vsftpd
nano /etc/pam.d/vsftpd
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

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;
Vi måste också skapa en folder för virtuelle användaren nisse

Kod: Markera allt

mkdir /home/vsftpd/nisse
chown vsftpd:nogroup /home/vsftpd/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.

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 dec 2007, 08:04
av gholen
Jag får detta?

Kod: Markera allt

root@Nikita:/home/gholen# mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Vad betyder det?

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 dec 2007, 15:17
av northface
Är din sql-server startad?

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 dec 2007, 16:04
av gholen
Hur gör man det?

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 dec 2007, 17:27
av northface
sudo /etc/init.d/mysql start

Här kan du läsa mer om mysql längst ned på sidan.
http://www.howtoforge.com/perfect_server_ubuntu7.10_p4

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 dec 2007, 18:52
av Buggen
Hej, jag är lite sugen på att testa din guide :)
men jag undrar vad som är fördelen med en virtuell FTP mot en vanlig?

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 dec 2007, 20:11
av northface
Finessen är att ftp-användarna inte behöver ha något konto på maskinen. Du skapar användare och lösenord helt fristående från dina systemkonto. Bra ur säkerhetssynpunkt och lätt att administrera speciellt om man har många ftp-användare.

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 28 dec 2007, 12:07
av northface
HowTo - uppdatering #1

Uppdateringarna är införda i Howto:n

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 28 dec 2007, 21:57
av maths57
Tack northface för din väldigt pedagogiska howto. Jag testade och lyckades direkt.

Om man installerar MySQL i Ubuntu så ska programmet starta automatiskt. Det hamnar också i /etc/init.d så det startar när datorn gör det. Felet tyder på att det är något inloggningsproblem. gholen, det är inte på en fjärrdator du försöker logga in?

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 28 dec 2007, 22:13
av Buggen
Jag har möjligtvis en dum fråga..
Om man gör på detta sätt, kan man då streama tex. mp3?  ::)

*startar en ny tråd med lite undringar :)

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 28 dec 2007, 22:41
av maths57
Buggen, inga frågor är dumma. Den här är kanske lite OT. Men har du tänkt strömma till dig själv, för i så fall är virtuella användare inte rätt metod. Har du ett eget konto på datorn och vill köra FTP, kan du bara aktivera alternativet att lokala användare kan ha konton. Sedan avaktiverar du anonyma användare.

SV: HowTo - sätta upp vsftpd server med virtuella användare

Postat: 26 jan 2008, 16:33
av northface
HowTo - uppdatering #2
- Hur komma åt foldrar utanför "hemfoldern" -

http://ubuntu-se.org/smf/index.php/topi ... #msg171717

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 12:47
av Yelles
När jag skriver
cat /dev/null > /etc/vsftpd.conf
Så får jag "Premission denied". Även när jag testar med sudo får jag samma medelande...

Någon som vet varför?

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 13:04
av andol
Yelles skrev:När jag skriver
cat /dev/null > /etc/vsftpd.conf
Så får jag "Premission denied". Även när jag testar med sudo får jag samma medelande...

Någon som vet varför?
Problemet här är att det bara är "cat /dev/null" vilket körs utav sudo. Själva ompekandet (skrivandet) till /etc/vsftpd.conf görs däremot utav skalet, som din vanliga användare. I länken nedan finns det ett par förslag på hur man kan kringgå problemet. Lättast i sådana här sammanhang är nästan att köra "sudo -i" och få upp ett root-skal, med full behörighet.

https://help.ubuntu.com/community/RootS ... ing%20sudo

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 13:08
av Yelles
andol skrev:
Yelles skrev:När jag skriver
cat /dev/null > /etc/vsftpd.conf
Så får jag "Premission denied". Även när jag testar med sudo får jag samma medelande...

Någon som vet varför?
Problemet här är att det bara är "cat /dev/null" vilket körs utav sudo. Själva ompekandet (skrivandet) till /etc/vsftpd.conf görs däremot utav skalet, som din vanliga användare. I länken nedan finns det ett par förslag på hur man kan kringgå problemet. Lättast i sådana här sammanhang är nästan att köra "sudo -i" och få upp ett root-skal, med full behörighet.

https://help.ubuntu.com/community/RootS ... ing%20sudo

sudo -i gav samma medelande... förlåt om jag ställer jobbiga frågor men är helt ny med ubuntu ???

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 13:10
av andol
Hmm, nu ska vi se så vi inte missförstår varandra... Körde du "sudo -i" följt utav resten på samma rad, eller enbart "sudo -i", punkt. Förövrigt det sista som är rätt :)

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 13:12
av Yelles
opsi... de där va inte jag ;D Tack så hemskt mycket i alla fall :-*

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 13:30
av Yelles
Har fått igång allting nu... får anslutning till ftpn men när jag lägger till användare och skapat mappen så när jag ska logga in får jag username or/and password incorrect... så något måste jag gjort fel. Någon som vet var jag borde kolla? Uppgifterna i databasen stämmer, de har inget med privlieger att göra på burken så jag inte kommer åt den?

Tack :)

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 13:35
av andol
Säger /var/log/vsftpd.log något intressant?

Re: HowTo - VSFTPD med virtuella användare och mysql

Postat: 03 jul 2008, 23:47
av Yelles
andol skrev:Säger /var/log/vsftpd.log något intressant?
Listar lite försök att ansluta till servern och att "användarnamnet fail login...