[Howto] Pure-FTPd

Pagina: 1
Acties:
  • 1.698 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022

HOWTO: FTP server met PureFTPd

Inleiding

We gaan een FTP server opzetten met PureFTPd. Er zijn vele builds en vele platformen beschikbaar, maar deze howto gaat uit van de windows port, die je dan ook zult moeten downloaden en installeren.

Wellicht vraag je je af waarom ik PureFTPd neem en niet Bulletproof of Serv-U. De reden is heel is simpel - laatstgenoemden kennen geen full-functionaliteiten na het aflopen van de trial periode (BFTP kan zelfs helemaal niet meer gebruikt worden), wat natuurlijk eigenlijk wel de bedoeling is voor een server. Ook is het zo dat als je weet hoe je PureFTPd moet configgen dan kan je het ook op een ander platform (lees daarvoor gewoon het configuratiestuk).

·^

Installeren

Installeer de ftp server (ja, dat moet...):

Fig. 1:
Installatie van PureFTPd

In deze howto wordt uitgegaan van C:\PureFTPd als locatie. Als je hem aanpast zul je uiteraard ook de filelocaties zoals ze in de howto staan moeten veranderen, maar dat spreekt voor zich.

Zoals je in README.windows kunt lezen, moet je een C:\cygwin dir maken. Aangezien er een fancy installer in de executable zit, is die map er al. Delete hem dus niet, mocht je niet weten waar deze vandaan komt. Let wel: in principe wil je iedereen chrooten, omdat er maar een user is (er is geen /etc/passwd equivalent voor windows), maar users kunnen wel in een pure-db database. Dit wordt uitgelegd.


------------------------ SERVER FILES ------------------------


All files managed by Pure-FTPd have their path relative to C:\CYGWIN .

It means that starting the server with :

pure-ftpd -lpuredb:/etc/pureftpd.pdb

Will read :

C:\CYGWIN\etc\pureftpd.pdb

It also applies to log files and users directories.


------------------------ ANONYMOUS FTP ------------------------


Files for anonymous FTP must be stored in a directory called :

C:\CYGWIN\FTP

(of course you can use the -e switch to disable anonymous FTP) .

Virtual hosting is supported as well. Files must be in :

C:\CYGWIN\PURE-FTPD\<ip>\

If you don't want anonymous users to upload files, use the -i switch.


·^

Configureren

Open nu C:\PureFTPd en start voor de grap eens pure-ftpd.exe. Je zult niets behalve een klassiek cmd venster met knipperende cursor. Als je hiervan schrok en het bevreemdend en eng vind, zou ik overwegen of het slim is om door te gaan met pure-ftpd. Het is namelijk niet meer dan dit, en startup opties worden meegegeven met commandline switches. Als je nu README.txt opent zul je informatie vinden over hoe je met die switches moet werken, ik zal echter wel uitleggen hoe het allemaal werkt. Zorg wel dat je een commandprompt open hebt, en een ftp client bij de hand om de zaak te testen. Let op: switches zijn casesensitive!

Als je gewoon

pure-ftpd.exe

inklopt word er op alle ip adressen, alle NICs, en de standaard ftp poort (21) geluisterd, met IPv6 ondersteuning.

We kunnen nu ook het geheel aan een andere poort binden:

pure-ftpd.exe -S 110

Dit is wel een ietwat ongebruikelijke poort (SMTP), maar het kan. Voor gekke figuren werkt '-S smtp' in principe zelfs ook geloof ik.

Verder kun je ook aan een specifiek IP binden (handig als je meerdere IPs hebt):

pure-ftpd -S 10.10.10.1,

Let ook op de slotkomma! Deze is belangrijk, het is namelijk een afkorting van:

pure-ftpd.exe -S 10.10.10.1,21

Het moge duidelijk zijn hoe de -S switch werkt; "-S ip,port". In plaats van IP adressen kan je ook hostnames gebruiken.

Ook kun je het aantal concurrent connecties limiteren:

pure-ftpd.exe -c 10

Uiteraard kan dit ook met een willekeurig ander (positief, maar das logisch) getal. Switches kan je combineren door ze achter elkaar te zetten:

pure-ftpd.exe -S 10.10.10.1,30 -c 10

Het aantal concurrent sessies per IP kan je instellen met -C (de hoofdletter dus). ("-c 5 -C 2" is dus maximaal 5 sessies en maximaal twee per IP)

Je wilt natuurlijk graag graag anonymous users toestaan of niet. De meeste rigoureuze switches hiervoor zijn de volgende:

pure-ftpd.exe -E
pure-ftpd.exe -e

De laatste staat alleen anonymous toe (geen logins toegestaan), terwijl de eerste precies het tegenovergesteld doet (anonymous verboden).

De manier waarop switches werken moge duidelijk zijn, daarom volgt nu gewoon een lijst met alle relevante switches, gevolgd door enkele voorbeelden:

SwitchResultaat
-4IPv4 only
-AIedereen gechroot
-bCompatibility voor broken clients/routers
-cmaximum aantal clients, standaard 50
-CMaximum aantal connecties per ip
-eAnonymous-only toegang tot FTP (geen login)
-EGeen anonymous, alleen login
-GHernoemen van bestanden is verboden
-iUploaden voor anonymous users is niet toegestaan
-IIdle-timeout in minuten, de standaard is 15. Bijvoorbeeld "-I 20".
-kUploads worden verboden zodra de disk meer dan x procent vol is. Bijvoorbeeld "-k 90".
-KUsers mogen wel resumen en uploaden, maar niet renamen en deleten. Dirs mogen wel verwijderd worden, mits ze leeg zijn. Overschrijven van bestaande bestanden is wel toegestaan (upload resumen). Wil je dit voorkomen gebruik dan -r (autorename).
-LOm cpu-hoggende DDoSen te voorkomen. Gebruik -L max_bestanden:max_dirs. Bij een ls commando worden niet meer dan x files weergeven, en bij ls -R wordt niet verder gegaan dan y mappen. Bijvoorbeeld "-L 300:2" voor 300 files en mapdiepte 2.
-mDownloaden is verboden voor anonymous users als de cpu usage groter is dan een zeker percentage. Bijvoorbeeld "-m 80".
-MAnonymous users mogen mappen maken
-NNAT mode, om active te forceren (ivm routers). Zie ook de uitleg in readme.txt
-pStel de passive port range in. Gebruik "-p begin:einde", bijvoorbeeld "-p 40000:41000".
-PForceer een bepaalde ip als reactie op PASV/EPSV/SPSV commando's. Als je achter een router zit zonder ftp masquerading, zet het lokale IP dan hier.
-qRatio voor anonymous users, upload:download.
-QRatio voor alle users (login en anonymous), upload:download
-rBestaande files worden nooit overschreven, maar hernoemd als xyz, xyz.1, xyz.2, ...
-RBlokkeer CHMOD om domme dingen van users te voorkomen
-SIP/Hostname en poort instellen. Gebruik IP/Host,poort. Voor poorten kunnen ook servicenamen gebruikt worden.
-TSnelheidslimitatie, upload:download is mogelijk om apart in te stellen.
-tAlias voor -T
-VNon-anonymous toegang vanaf alleen dit IP.
-wFXP voor users met login
-WFXP voor alle users, inclusief anonymous. Zie ook de grote en belangrijke waarschuwing in readme.txt
-yAantal logins limiteren, in de vorm "maxusers:maxanonymous". "-y 3:20 -c 15 -C 5 -B" doet nu: totaal 15 sessies, 5 connecties van 1 IP, 3 connecties per user, 20 anonymous users maximaal.
Er zijn ook nog enkele opties mbt logging of dingen die niet relevant zijn voor het windows platform, daarvoor verwijs ik je naar de readme. Deze switches zijn echter wel genoeg om een doorsnee-ftp op te zetten. Het verdiend natuurlijk stiekem wel aanbeveling om Pure-ftpd op een van de officiele platformen te gebruiken, aangezien de users in /etc/passwd dan werken.

Beschouw nu de volgende code:

pure-ftpd.exe -S 10.10.10.1,13 -4 -A -E -T :200 -L 1000:5 -I 10 -k 76 -c 20 -C 2

Dit bind onze FTP dus op 10.10.10.1 en poort 13 met alleen IPv4 support (-4). Iedereen is gechroot (-A), er mogen alleen niet-anonymous users (-E) op en er kan met 200 kb/s gedownload worden (-T :200, de upload is niet ingesteld en is dus oneindig. hetzelfde kan dus met de download op oneindig, bijvoorbeeld 16:). Verder mogen er 1000 files tot 5 mappen diep gelist worden (-L 1000:5), is de maximum idle time 10 minuten (-I 10), kan er maximaal 76% van de disk gebruikt worden (-k 76) en tot slot mogen er 20 users inloggen (-c 20) met 2 connecties per IP (-C 2). Hopelijk verduidelijkt dit voorbeeld het gebruik van switches en de mogelijkheden enigszins.

Het is natuurlijk niet fijn om de hele tijd deze regel in te moeten tikken. Daarom is er pureftpd_start.bat, waar je deze regel in kunt zetten. Als nu pureftpd_start.bat wordt uitgevoerd worden al de ingesteld opties gebruikt. Ingelogde users kunnen gezien worden met pure-ftpwho.

·^

Users aanmaken

Users worden aangemaakt met pure-pw. Zorg dat de mappen C:\cygwin\etc en C:\etc bestaan. Kortweg maak je een user met:

pure-pw useradd geert -d /home/geert

Vergeet niet dat /home/geert dus staat voor C:\cygwin\home\geert, en dat die map moet bestaan. Nu word je twee keer gevraagd om een password in te voeren, en nu heb je in principe een user gemaakt die gechroot is. Als je wilt dat de user volledige toegang heeft, kan je -D gebruiken. Omdat het niet praktisch is de hele tijd mappen te moeten aanmaken, kan het ook zo:

pure-pw useradd geert -j -d /home/geert

Nu wordt de map automatisch gemaakt zodra er wordt ingelogd door de user in kwestie.

Ben je niet blij een bepaalde instelling, dan kan je die wijzigen met usermod, welke precies hetzelfde werkt als useradd:

pure-pw usermod geert -d /boe

De homedirectory is nu veranderd. Alle instellingen die niet worden meegegeven aan usermod blijven hetzelfde.

Users worden verwijderd met pure-pw userdel <user>, en hun info kan opgevraagd worden met pure-pw show <user>. Als er /./ achter een homedir staat betekent dit dat de user gechroot word (al heeft dit op mijn windows configuratie kuren, zelfs als ik -A extra erbij gebruik).

Switches voor usermod en useradd zijn:

SwitchResultaat
-dChroot de user. De homedirectory wordt erachter geplakt, bijvoorbeeld "-d /test".
-DDe user word niet gechroot, en de switch werkt hetzelfde als bij -d
-jHomedirectory word automatisch gemaakt bij het eerste inloggen.
-zRestrictie op tijden waarop ingelogd mag worden (24hr tijden). '-z 0900-1200' maakt dus dat de user mag inloggen tussen 9 en 12. Let wel: het gaat over het connecten. Als er eenmaal een sessie is kan deze wel na 1200 doorlopen.
-yRestrictie op maximum aantal sessies voor deze user
-rBlokkeer bepaalde IP's, bijvoorbeeld "-r 192.0.0.1/24". Meerdere entries worden gescheiden door een komma (zonder spatie erachter).
-RAlias voor -r
-iHetzelfde als -r, maar dan voor toegestane IP's
-IAlias voor -i
-tMaximum download snelheid in kb/s ("-t 200")
-TMaximum upload snelheid in kb/s
-nMaximum aantal bestanden op server
-NMaximum aantal MB's op server
Maximum aantal MB's, login tijden, toegestane IPs, etc (het gaat om: -z, -y, -r, -R, -i, -I, -t, -T, -n en -N) kunnen uitgezet worden door de switch zonder argument te gebruiken (bijvoorbeeld 'pure-pw usermod geert -n -N -z' om de restricties op bestandgebruik en logintijden op te heffen).

Unix/Linux users word aangeraden README.VirtualUsers nog eens door te lezen, omdat er ook UID e.d. kunnen worden toegewezen.

Ook kent Pure-FTPd nog enkele leuke dingen zoals MySQL-authentication (users en passwords e.d. staan in een MySQL-db), maar dat ga ik niet behandelen. Lees README.MySQL op de homepage als je daar meer over wilt weten.

Veel succes met en plezier van je FTP server :)

·^

Thanks to

Deze howto is geschreven door Geert-Jan, beter bekend als G33rt
Op- of aanmerkingen, en suggesties kunnen worden doorgegeven aan de SA moderators

·^

Lijst met figuren



·^

Inhoudsopgave

[ Voor 42% gewijzigd door elevator op 12-03-2004 17:38 ]


Acties:
  • 0 Henk 'm!

  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022
Feedback kan en mag zoals altijd in Centraal howto-feedback topic :)

Dit topic is gesloten.