FTPSERVER MED LOKALA ANVÄNDARE
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 > 1023. 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
VSFTPD MED LOKALA ANVÄNDARE
VSFTPD är en av de säkraste och snabbaste ftp-daemoner som finns att tillgå. Den saknar grafisk gränssnitt och de flesta inställningarna görs i en konfigurationsfil. Denna är väl dokumenterad och vsftpd är ganska enkel att sätta upp.
Detta avsnitt visar hur man kan sätta upp vsftpd begränsat till användare, som har lokala konton på operativsystemet. Detta kan vara lämpligt för hemmaservern, om man inte har alltför många användare och att man känner personerna i fråga. 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
Byt namn på vsftpd.confKod:sudo apt-get install vsftpd
Skapa en ny vsftpd.confKod:sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.orginal
Klistra in nedanstående rader och spara filen.Kod:sudo 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=63200
pasv_max_port=63204
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 sin hemkatalog.
Starta om vsftpd
Brandvägg/routerKod:sudo /etc/init.d/vsftpd restart
Öppna port 21 samt i detta exempel portintervall 63200-63204 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. En annan klient är gftp.
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 konton på maskinen. Vi skapar ett eget certifikat/nyckel för vsftpd
Kod:sudo mkdir /etc/ssl/vsftpdVid Common name skriv in din domän/subdomän om du har någon sådan. Om inte - använd maskinnamnet.Kod:cd /etc/ssl/vsftpd
Öppna sedan konfigurationsfilen och lägg till raderna nedan.Kod:sudo openssl req -new -x509 -days 365 -nodes -out vsftpd.pem -keyout vsftpd.pem
## SSL - krypterad trafikKod:sudo nano /etc/vsftpd.conf
ssl_enable=YES
force_local_logins_ssl=NO
force_local_data_ssl=NO
rsa_cert_file=/etc/ssl/vsftpd/vsftpd.pem
Starta om vsftpd
Användarna har nu fått möjlighet att köra krypterad trafik (på frivillig grund). Vill vi göra det tvingande att t.ex. kryptera loginuppgifterna skriver vi in YES, dvs force_local_logins_ssl=YES.Kod:sudo /etc/init.d/vsftpd restart
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. Skriv in och spara de användarnamn som ska ha behörighet att köra ftp.
ÖppnaKod:sudo nano /etc/vsftpd.user_list
Lägg till raderna:Kod:sudo nano /etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
Starta om vsftpd
Ge möjlighet för användare att lämna sitt HOMEKod:sudo /etc/init.d/vsftpd restart
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.
Skriv in och spara de användarnamn som ska ha behörighet att lämna sitt HOME.
ÖppnaKod:sudo nano /etc/vsftpd.chroot_list
Lägg till:Kod:sudo nano /etc/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Starta om vsftpd
Ge möjlighet för de fångade användarna att se folder som finns utanför HOMEKod:sudo /etc/init.d/vsftpd restart
Detta kan man åstadkomma genom att montera önskad folder med -bind parametern.
Skapa en folder med namnet t.ex. ftpshare i hemfoldern.
Skapa ytterligare en folder i t.ex. /var/ med namnet ftpcommonKod:sudo mkdir /home/<användaren>/ftpshare
Montera därefter med -bind parameternKod:sudo mkdir /var/ftpcommon
Nu kommer filerna i folder /ftpcommon/ att synas i användarens HOME folder.Kod:sudo mount --bind /var/ftpcommon/ /home/<användaren>/ftpshare
Vill man permanenta denna montering läggs följande rad in i /etc/fstab
Öppna
Lägg tillKod:sudo nano /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
Skapa en tom fil med namnet för användaren. Skriv in och spara önskade specifika optioner för användaren.Kod:sudo mkdir /etc/vsftpd_user_conf
ÖppnaKod:sudo nano /etc/vsftpd_user_conf/<användaren>
Lägg till radenKod:sudo nano /etc/vsftpd.conf
user_config_dir=/etc/vsftpd_user_conf
Starta om vsftpd
Ställa in tillåtna ftp kommandon för klienternaKod:sudo /etc/init.d/vsftpd restart
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,PAS S,QUIT
Se "Mer att läsa:" för fler ftp kommandon.
Om raden for "cmds_allowed=" läggs in vsftpd.conf gäller den globalt för samtliga användare. Vill man istället ha användarspecifika rader läggs de i /etc/vsftpd_user_conf/<användaren>, enligt Konfigurering av enskild användare.
Mer att läsa:
http://vsftpd.beasts.org
http://vsftpd.beasts.org/vsftpd_conf.html
http://www.nsftools.com/tips/RawFTP.htm
Make sure to use your head - you might need it!
Det är för närvarande 1 användare som tittar på det här ämnet. (0 medlemmar och 1 gäster)
Bokmärken