ProFTP är en filserver som man även kan lägga grafik på genom GProFTP. Ftp-protokollet skickar "lösenord" i "klartext" så om du vill ha en säkrare överföring ska du installera Proftp med stöd för TLS (Transport Layer Security) enl. Daniel Jonssons ("logoz") artikel på http://www.slackwarelinux.se/ (Artiklar --> Program).
Bäst av allt är att du kan testa din server via $ ftp localhost, så att allt är OK innan du "aktiverar" den genom att öppna portarna i din brandvägg.
Proftp Hemsida: http://www.proftpd.org/ Documentation: http://www.proftpd.org/docs/ Nedladdning: http://www.proftpd.org/ proftp-1.2.10.bz2 Slackpaket: Finns i n-katalogen på CD 1, "current" hittar du här GProftp Hemsida: http://mange.dynup.net/linux.html Documentation: Nedladdning: Hemsidan --> gproftpd-8.1.7.tar.gz Source (Magnus-swe) Slackpaket: Hemsidan --> gproftpd-8.1.7-i486-2.tgz Slackware (Sandman1)
Vet du att du bara ska dela med dig via "anonymous"-inloggning kan du välja "Slackpaketen", hur jag gör ser du här . Säkerhet kan vara "bra att ha nångång" så jag tar Daniels guide.
Skapar "nycklar".
Testar att jag har openssl... root@haze:~# openssl OpenSSL> version OpenSSL 0.9.7e 25 Oct 2004 OpenSSL> quit Först skapar jag katalogen /root/script root@haze:~# mkdir /root/script Jag använder pico som textredigerare och ställer mig i /root/script root@haze:~# cd script/ root@haze:~/script# pico makecert.sh ..och skriver.. #!/bin/sh echo "Skapar self-signed certificate och RSA Private Key" echo "----------------------------------------------------------" touch proftpd.pem chmod 600 proftpd.pem openssl req -new -x509 -nodes -days 365 -out proftpd.pem -keyout proftpd.pem ..gör körbar.. root@haze:~/script# chmod +x makecert.sh ..och "kör".. root@haze:~/script# ./makecert.sh Skapar self-signed certificate och RSA Private Key ---------------------------------------------------------- Generating a 1024 bit RSA private key ........++++++ .............++++++ writing new private key to 'proftpd.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:"." string is too long, it needs to be less than 2 bytes long Country Name (2 letter code) [AU]:. State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:. Organization Name (eg, company) [Internet Widgits Pty Ltd]:. Organizational Unit Name (eg, section) []:. Common Name (eg, YOUR name) []:Hakan Nilsson Email Address []:. ..skapar en fil "proftpd.pem", som jag flyttar till /usr/local/etc/.. root@haze:~/script# cp proftpd.pem /usr/local/etc/
Installerar
Jag packar upp i /usr/local root@haze:~/script# cd /usr/local/ root@haze:/usr/local# tar xvfj /home/hakan/program/proftpd-1.2.10.tar.bz2 ..flyttar.. root@haze:/usr/local# cd proftpd-1.2.10/ ..då kör vi.. root@haze:/usr/local/proftpd-1.2.10# ./configure --with-modules=mod_tls ..bla..bla.. root@haze:/usr/local/proftpd-1.2.10# make root@haze:/usr/local/proftpd-1.2.10# make install ..programmet lägger sig i /usr/local/sbin, och konfigurationsfilen i /usr/local/etc, skapar också katalogen /home/ftp (kontrollera det) som är förvalskatalog för "anonymous"-inloggning.
Först av allt, ta en titt på /etc/ftpusers, den bestämmer vilka som INTE får logga in.
/usr/local/etc/proftp.conf
Det finns ett flertal exempel under /usr/local/proftpd-1.2.10/sample-configurations, den som finns som förval i /etc/local/etc/proftpd.conf är basic.conf.
Använder du den "rakt av" får "anonyma användare" ("anonymous") bara läsa inloggningskatalogen, d.v.s. /home/ftp.OBS! Jag fick lägga till under..
<Anonymous ~ftp>
"RequireValidShell off"
..för att det skulle fungera.
Dina "användare" (som du gör med #adduser) har samma rättigheter vid inloggning i sin hemkatalog som vanligt. Vill du begränsa rätigheterna till hemkatalogen så måste du avkommentera..
"DefaultRoot ~".
"Standalone" server startar du, som "root", med # proftpd och stoppar med # ftpshut titta i $ man ftpshut så ser du vilka "växlar" du kan använda.
Då provar jag från "localhost"..
hakan@haze:~$ ftp localhost Connected to localhost. 220 ProFTPD 1.2.10 Server (ProFTPD Default Installation) [127.0.0.1] Name (localhost:hakan): anonymous 331 Anonymous login ok, send your complete email address as your password. Password:-->Vad som helst som ser ut som en e-post adress, ex.v. blaj@blaj.se 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> help -->ger dig alla kommandon ftp> quit -->avslutar
Min proftpd.conf
Mina användare ska ha lösenord och sin hemkatalog i /home/ftp/"användare" samt ha "läsa/skriva"-rättigheter bara där.
Till /home/ftp bara "läsa"-rättigheter, således inga "anonymous".
Jag har utgått från "basic.conf"
Gröna värden = mina värden # Håkan "hemmagjorda" proftpd.conf, du måste ha en user/group "nobody". # Jag använder inetd för att starta/stoppa så jag måste avkommentera # FTP i /etc/inetd.conf ServerName "" #ServerType standalone ServerType inetd DefaultServer on # Port 21 is the standard FTP port. Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd). MaxInstances 30 # Set the user and group under which the server will run. User nobody Group nogroup # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. DefaultRoot /home/ftp #Meddelande före login DisplayConnect /usr/local/etc/forelogin.msg #Meddelande efter godkänd login AccessGrantMsg "Välkommen %u." #här finns loggarna SystemLog /var/log/proftpd.log TransferLog /var/log/xferlog # Fråga inte om godkänt "shell" RequireValidShell off # Normally, we want files to be overwriteable. <Directory /*> AllowOverwrite on </Directory> # Bar use of SITE CHMOD by default <Limit SITE_CHMOD> DenyAll </Limit> # Här kommer det som behövs för säkrare inloggning TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1 # Are clients required to use FTP over TLS when talking to this server? TLSRequired on # Server's certificate TLSRSACertificateFile /usr/local/etc/proftpd.pem TLSRSACertificateKeyFile /usr/local/etc/proftpd.pem # Authenticate clients that want to use FTP over TLS? TLSVerifyClient off
Nu använder jag adduser för att lägga till "christer". OBS! Hemkatalogen ska sättas till /home/ftp/christer i övrigt som vanligt.
Då provar jag..först startar jag filservern..
root@haze:/# /etc/rc.d/rc.inetd start
Starting Internet super-server daemon: /usr/sbin/inetd
..sedan..
hakan@haze:~$ ftp localhost Connected to localhost. 220-Välkommen till Håkans filserver. 220 ProFTPD 1.2.10 Server () [127.0.0.1] Name (localhost:hakan): christer 550 SSL/TLS required on the control channel Login failed. He.he..måste ha en ftp-klient som kan TSL..nu kan jag antingen ta hem källkoden för ftp och "konfa" med stöd för TSL enl.. "i've also verified that access works with the standard netkit ftp with the ssl/tls patches applied. check and see if you have ftp-ssl, or if /usr/bin/ftp is linked to libssl." ..eller.. #swaret --install lftp ..som har det som "default".. ..då provar vi.. hakan@haze:~$ lftp localhost lftp localhost:~> user christer [lösenord] lftp christer@localhost:~> ls drwxr-xr-x 2 christer users 4096 Jan 31 20:34 bilder lftp christer@localhost:~> help-->ger dig alla kommandon lftp christer@localhost:/> quit-->avslutar
Nu stänger jag servern..
root@haze:/# /etc/rc.d/rc.inetd stop
Vill du att servern ska starta automatiskt måste du se till att avsnittet om "Start the inetd server" är avkommenterat i /etc/rc.d/rc.inet2 samt "Start networking daemons" avkommenterat i /etc/rc.d/rc.M
Prova på "riktigt"
OBS!
Min internetleverantör (Chello) har tydligen "spärrat" portarna 20,21 och 80 så jag fick sätta port 8080 istället.
# Port 21 is the standard FTP port. Port 8080
Jag måste alltså öppna porten 8080 i stället för portarna 20 och 21 i min brandvägg
Sonen Christer fick agera "testpilot" med sitt Windows XP och inget av dom FTP-program han hade klarade TSL (men tog jag bort "TSL" så fungerade det utmärkt).
Daniels förslag FlashFXP kostar en slant "US$25." men det är ju inget fel att betala för ett bra program, dessutom kan du prova det i 30-dagar innan du bestämmer dig.
Jag har inte hittat något "gratis" Windowsprogram som klarar TSL ännu (det verkar som om man vill ha den biten blir det att "slanta upp" :-)), men vet ni något så hör av er.
1/3-06: Stort tack till "Hedin" på slack-forumet! "Läst lite om hur du har gjort med proftpd och såg att du inte hittade någon gratis ftp client till windows, tänkte tipsa om http://www.coreftp.com/ som jag har provat och funkar till TSL".
Beroenden
proftpd >= 1.2.8
gtk >= 2.0
glib >= 2.0
atk >= 1.0
pango >= 1.0
Xft2 -->hittar jag inte, men det fungerar ändå. :-)
gdk
freetype2
Installation
Packar upp i /usr/local.. root@haze:/usr/local# tar xvfz /home/hakan/program/gproftpd-8.1.7.tar.gz ..flyttar root@haze:/usr/local# cd gproftpd-8.1.7 ..och konfigurerar till /usr/local (jag har proftp där) # ./configure --prefix=/usr/local --sysconfdir=/usr/local/etc --localstatedir=/var --sbindir=/usr/local/sbin ..bygger.. # make ..och installerar. # make install Programmet lägger sig i /usr/local/sbin
Om du har gjort som jag så kopiera /usr/local/etc/proftpd.conf "nånstans" för gproftpd kommer inte att acceptera den så den kommer att skrivas över.
Då provar vi #gproftpd
Svara "YES" så gör den en egen..
..som du kan konfigurera så det passar.
Personlig åsikt
Som ni säkert förstått vid det här laget..jag gillar grafik..men beträffande proftp tycker jag det var "mindre svårt" (För mig finns inga "lätta" program ;-) ) att lära sig "text"-versionen.