HowTo - VSFTPD med lokala användare

Här kan du dela med dig av dina bästa tips och knep.
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

HowTo - VSFTPD med lokala användare

Inlägg av northface »

Allmänt om FTP

File Transfer Protocol har används under många år nu och är fortfarande ett vanligt protokoll för överföring av filer. Det är i sig ett komplicerat protokoll och för att sätta upp en ftp server behöver man förstå lite om hur klient och server kommunicerar. Ett vanligt fel är att man lyckas koppla upp och logga in, men sedan är det stopp - man kan inte lista filträdet på servern.

Man har att välja på att sätta upp ftp-trafiken med aktiv eller passiv överföring.

Aktiv överföring fungerar i regel bra hemma på LAN, där man kanske inte behöver brandväggar och routrar med NAT mellan klient och ftp server.

Däremot - för att det ska fungera utifrån Internet - genom router/brandvägg/NAT - kan man behöva köra ftp med passiv överföring.Detta blir i hög grad aktuellt om klienten befinner sig bakom en router/brandvägg. Då räcker det inte med att endast port 21 är öppen för inkommande trafik till ftpservern. Port 21 används för kontrolltrafiken och man måste ha minst en port till öppen - för datatrafiken. För denna väljs vanligen portar > 1024. Normalt öppnar man ett intervall av portar, om man vill att flera användare ska kunna köra samtidigt. Antalet portar bestämmer hur många sessioner som kan pågå samtidigt - dvs hur många användare som kan köra samtidigt.

Aktiv överföring

I routern/brandväggen öppnas port 21 för inkommande och port 20 för utgående trafik. I Ubuntus grundinstallation är alla portar öppna för utgående trafik så det ska inte vara något problem.

INKOMMANDE TRAFIK: Port 21 (TCP) --> serverns interna ipnr
UTGÅENDE TRAFIK: Serverns interna ipnr port 20 (TCP) --> Alla externa ip och portar.

Passiv överföring

I routern/brandväggen öppnas portarna 21 och ett portintervall för inkommande trafik till ftpservern. Dvs;

INKOMMANDE TRAFIK: Port 21 (TCP) --> serverns interna ipnr
INKOMMANDE TRAFIK: Portintervall (TCP) --> serverns interna ipnr

FTP server - VSFTPD

VSFTPD är en av de säkraste och snabbaste ftp-daemoner som finns att tillgå. Den saknar grafisk gränssnitt och alla inställningar görs i en konfigurationsfil. Denna är väl dokumenterad och är ganska enkel att sätta upp.

Denna HowTo visar hur man kan sätta upp vsftpd begränsat till användare, som har lokala konton på operativsystemet. Ett annat sätt är att skapa virtuella användare*, som inte kräver lokala konton på maskinen. Skapar man virtuella användare används en lösenordsfil eller mysql som stöd för autentiseringen.

Installera vsftpd

Kod: Markera allt

sudo apt-get install vsftpd
Ta en kopia på vsftpd.conf

Kod: Markera allt

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orginal
Öppna

Kod: Markera allt

gksudo gedit /etc/vsftpd.conf
Ersätt innehållet med nedanstående rader och spara filen.

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
ftpd_banner=Välkommen till min ftpserver
chroot_local_user=YES
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd


Denna konfigurationsfil medför att endast lokala användare kan ftp:a till servern. De fångas i sina hemkataloger och kan inte komma åt något annat. De kan ladda upp filer i foldern.

Starta om vsftpd

Kod: Markera allt

sudo /etc/init.d/vsftpd restart
Brandvägg/router

Öppna port 21 och i detta exempel portintervall 50505-50510 för inkommande trafik till maskinen (portforwarding). Verifiera att port 20 är öppen för utgående trafik från maskinen.

Pröva sedan att ftp:a med passiv så väl som aktiv överföring och se vad som fungerar bäst. FileZilla är en klient som rekommenderas. Under flik överföringsinställningar kan man välja överföringssätt.

Krypterad trafik

Med ovanstående konfigurationsfil sker all trafik i klartext. Man bör starkt överväga att skicka åtminstone login uppgifterna krypterade, då dessa är lokala kontona på maskinen. Skapa därför ett självsignerat 1-års certifikat och placera detta förslagsvis i /etc/ssl/vsftpd

För att skapa certifikatet krävs att openssl är installerat

Kod: Markera allt

sudo apt-get install openssl
Skapa det sedan enligt

Kod: Markera allt

sudo mkdir /etc/ssl/vsftpd

Kod: Markera allt

cd /etc/ssl/vsftpd

Kod: Markera allt

sudo openssl req -new -x509 -days 365 -nodes -out vsftpd.pem -keyout vsftpd.pem
Lägg nu till följande rader i grundkonfigurationsfilen ovan

## SSL - krypterad trafik
ssl_enable=YES
force_local_logins_ssl=NO
force_local_data_ssl=NO
rsa_cert_file=/etc/ssl/vsftpd/vsftpd.pem


Starta om vsftpd

Kod: Markera allt

sudo /etc/init.d/vsftpd restart
Klienterna har nu fått möjlighet att köra krypterad trafik (på frivillig basis). Vill vi göra det tvingande att t.ex. kryptera loginuppgifterna skriver vi in YES, dvs force_local_logins_ssl=YES.

Alla ftp-klienter kan inte köra krypterad trafik. Tidigare nämnda FileZilla ger dock denna möjlighet. Vid Servertyp väljs FTPES.

Begränsa antalet lokala användare som kan köra ftp

Med grundfigurationen kan alla användare på maskinen köra ftp. Vill man begränsa denna möjlighet skapar man en användarlista.

Kod: Markera allt

sudo cat /dev/null > /etc/vsftpd.user_list
Öppna denna tomma fil och skriv in de användarnamn som ska ha behörighet att köra ftp

Kod: Markera allt

gksudo gedit /etc/vsftpd.user_list
Lägg sedan till följande rader i grundkonfigurationsfilen

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list


Starta om vsftpd

Kod: Markera allt

sudo /etc/init.d/vsftpd restart
Ge möjlighet för användare att lämna sitt HOME

Vill man att någon användare ska kunna se hela filsystemet skapar man en chrootlista. Detta kan verka motsägelsefullt, men så länge det även står chroot_local_user=YES i konfigurationfilen är det användarna i chrootlistan som kan lämna HOME.

Skapa en tom vsftpd.chroot_list

Kod: Markera allt

sudo cat /dev/null > /etc/vsftpd.chroot_list
Öppna, skriv in och spara de användarnamn som ska ha behörighet att lämna sitt HOME

Kod: Markera allt

gksudo gedit /etc/vsftpd.chroot_list
Lägg sedan till följande rader i grundkonfigurationsfilen

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list


Starta om vsftpd

Kod: Markera allt

sudo /etc/init.d/vsftpd restart
Ge möjlighet för de fångade användarna att se folder som finns utanför HOME

Detta kan man åstadkomma genom att montera önskad folder med -bind parametern.

Skapa en folder med namn et t.ex. ftpshare i hemfoldern.

Kod: Markera allt

mkdir /home/<användaren>/ftpshare
Skapa ytterligare en folder i t.ex. /var/ med namnet ftpcommon

Kod: Markera allt

sudo mkdir /var/ftpcommon
Montera därefter med -bind parametern

Kod: Markera allt

sudo mount --bind /var/ftpcommon/ /home/<användaren>/ftpshare
Nu kommer filerna i folder /ftpcommon/ att synas användarens HOME folder.

Vill man permanenta denna montering läggs följande rad in i /etc/fstab
/var/ftpcommon /home/<användaren>/ftpshare none bind 0 0

Konfigurering av enskild användare

Ett kraftfullt verktyg är optionen user_config_dir. Med denna kan läggas en användarspecik konfigurationfil för respektive användare. Rader (optioner) i denna överrider motsvarande i den globala konfigurationsfilen. Dock kan inte alla optioner i den globala konfigurationsfilen användas i den specifika användarens konfigurationsfil .

Skapa en folder vsftpd_user_conf

Kod: Markera allt

sudo mkdir /etc/vsftpd_user_conf
Skapa en tom fil med namnet för användaren

Kod: Markera allt

sudo cat /dev/null > /etc/vsftpd_user_conf/<användaren>
Öppna, skriv in önskade specifika optioner för användaren och spara.

Lägg sedan till nedanstående i konfigurationsfilen

user_config_dir=/etc/vsftpd_user_conf

Starta om vsftpd

Kod: Markera allt

sudo /etc/init.d/vsftpd restart
Ställa in tillåtna ftp kommandon för klienterna

Med parametern "cmds_allowed=" kan man styra användarnas möjligheter att utföra åtgärder i filsystemet. Om man t.ex. vill att klienterna ska få lista filer, byta foldrar, tanka ned filer, använda passiv överföring och skicka lösenordet, kan raden se ut enligt:
cmds_allowed=USER,LIST,NLST,CWD,RETR,PORT,PASV,PASS,QUIT
En lista med ftp kommandon går att finna här; http://www.nsftools.com/tips/RawFTP.htm

Om raden for "cmds_allowed=" läggs in vsftpd.conf gäller den för samtliga användare. Vill man istället ha användarspecifika rader läggs de i /etc/vsftpd_user_conf/<användaren>, enligt avsnittet Konfigurering av enskild användare.


*)
VSFTPD med virtuella användare och lösenordfil
VSFTPD med virtuella användare och mysql
Senast redigerad av 6 northface, redigerad totalt 10 gång.
Användarvisningsbild
maths57
Inlägg: 2911
Blev medlem: 22 jun 2007, 15:10
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: HowTo - VSFTPD med lokala användare

Inlägg av maths57 »

Det som rör VSFTPD skulle du kunna lägga här: http://ubuntu-se.org/wiki/VSFTPD.
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av northface »

Jag skulle helst vilja att de låg här ett tag så att de blev testade. Se'n får de gärna flyttas till WIKI. Det är lite fråga om kvalitetssäkring.
Användarvisningsbild
maths57
Inlägg: 2911
Blev medlem: 22 jun 2007, 15:10
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: HowTo - VSFTPD med lokala användare

Inlägg av maths57 »

Jag förstår din försiktighet. Men du har väl fått det att fungera? Dina guider brukar hålla god kvalitet, så jag tror det här funkar också. När jag gjorde wikisidan tänkte jag skriva av en guide du redan skrivit, men beslutade att "bara" skapa en länk dit. Bygg gärna på wikisidan med det du kan komma på.

Jag kanske skulle testa för att se om det funkar för mig med? Just nu kör jag med virtuella användare med hjälp av MySQL, men det går att ordna.
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av northface »

Det vore bra om du ville testa.

Min ambition är att skriva HowTo's då och då. Wiki lämnar jag därhän. Om det finns några av mina HowTo's ni vill föra till Wiki får ni hemskt gärna göra det. Ni kan fritt editera i dessa så det passar in.

Vill och orkar du vore det förnämligt om du fixade till i Wiki om VSFTPD. En syntes om vad vi tillsammans skrivit i ämnet.
Användarvisningsbild
maths57
Inlägg: 2911
Blev medlem: 22 jun 2007, 15:10
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: HowTo - VSFTPD med lokala användare

Inlägg av maths57 »

Då säger vi det. :)
zamson
Inlägg: 4
Blev medlem: 26 mar 2009, 13:27
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av zamson »

Tack för guiden, funkade bra men när jag sätter upp konfigurering av enskild användare strular det till sig.

Testar att logga in och ftpklienten säger. "Server said: Login succesful" men efter det blir jag disconnectad, den försöker inte ens lista filer.

Samma konto funkade fint innan jag försökte sätta upp enskilda rättigheter.

Några idéer?


/zamson
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av northface »

Hur såg din vsftpd_user_conf/<användaren> ut?
Started out with nothing and have most of it left
zamson
Inlägg: 4
Blev medlem: 26 mar 2009, 13:27
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av zamson »

Hej igen, det löste sig! Nu funkar allt som jag vill.

//zamson
Användarvisningsbild
northface
Inlägg: 501
Blev medlem: 15 dec 2007, 02:20
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av northface »

Valde du lokala eller virtuella användare?
Started out with nothing and have most of it left
zamson
Inlägg: 4
Blev medlem: 26 mar 2009, 13:27
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av zamson »

virtuella användare

//zamson
mille7
Inlägg: 26
Blev medlem: 27 apr 2008, 22:38
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS

Re: HowTo - VSFTPD med lokala användare

Inlägg av mille7 »

Hej

Har en fråga.

Jag använder vsftpd idag men vill konfa det lite mer.

Har några olika konton och jag vill att dom ska se olika saker.
Har ett gäst-konto som bara ska se /var/ftp/guest.
Sen har jag några som ska se /var/ftp/...

Det funkar. Men nu vill jag att dom andra ska se andra mappar på datorn.

I min /etc/vsftpd_user_conf/användarnamn står det idag ex

Kod: Markera allt

local_root=/var/ftp/guest
Antar att man kan lägga till några mappar där som ligger på en annan Hårddisk.
Vill göra så dom får tillgång till /media/disk/Video.



//mille

EDIT:
Har löst det. Körde:

mount -o bind /path1 /target
el i fstab:

/path1 /target bind default,bind 0 0
Skriv svar

Återgå till "Guider"