Een Ftp server in een handomdraai.

Dit document beschrijft hoe je in een handomdraai een ftp server opzet onder FreeBSD.
Hierbij wordt gebruik gemaakt van FtpD, deze is standaard onder FreeBSD aanwezig.

FreeBSD FtpD
Geschreven door M.Mastenbroek september 2003 / Document versie 1.1 (Updated 5 oktober 2003)

Inhoud:

Voorwoord

Het komt vaak voor dat mensen zodra ze een ftp server willen opzetten direct met een 'relatief' moeilijke ftp server beginnen zoals proftpd, wsftp en pureftpd. Dat alles niet wetende dat FreeBSD standaard al beschikt over een prima ftp server genaamd FtpD. Ftpd is in een handomdraai opgezet waarna deze direct gebruikt kan worden. Ftpd is een uitstekende, zeer berouwbare en veilige ftp server die zowel vanuit de shell al vanuit inetd kan worden gestart. Dit maakt FtpD een uitstekende ftp server.

Natuurlijk, deze enigszins eenvoudige ftp server heeft minder mogelijkheden t.o.v. de grotere ftp servers. Met name het beheer van gebruikers en het ontbreken van fxp ondersteuning kan voor sommige mensen een prima rede zijn om af te zien van FtpD.

Voor die gene die deze opties of anderen niet missen is dit document geschreven.

Benodigdheden

Stap 1 FtpD starten/stoppen

Configuratie van FtpD is in de 1e instantie niet nodig. De ftp server maakt namelijk gebruik van de unix gebruikers. Ieder unix gebruiker met een geldig shell account heeft hierdoor tevens een ftp acount.
Wat nu nog rest is het starten van de ftp server.

Shell:
/usr/libexec/ftpd -D

De ftp server is vanaf nu voor iedere unix user met een geldig shell account te benaderen via port 21.

De ftp server laten stoppen gaat al even gemakkelijk.

Shell:
killall ftpd


Een anonymous user aanmaken (optioneel)

Het aanmaken van een zogenaamde anonymous user ofwel anonieme gebruiker gaat als volgt.

Shell:
/stand/sysinstall

Doorloop vervolgens de volgende 3 stappen.

1. Configure Do post-install configuration of FreeBSD
2. Networking Configure additional network services
3. Anon FTP This machine wishes to allow anonymous FTP.

Vanaf dit punt kan de anonymous user worden geconfigureerd. In de 1e instantie zijn de gegevens zoals ze al reeds zijn ingevuld het meest voor de hand liggend.

Klik hier om te vergroten.   Klik hier om te vergroten.

Het nadeel van het gebruik maken van bestaande unix gebruikers bij een ftp server is dat deze vaak ssh of andere toegang hebben tot het systeem. Ssh zelf mag als veilig worden gezien maar het ftp protocol daarentegen niet. De gebruikersnamen en wachtwoorden worden als platte tekst (geen versleuteling dus.) van de cliŽnt worden naar de ftp server verzonden. Hiermee is het voor derden relatief eenvoudig om deze gegevens te achterhalen en te misbruiken.

Na het aanmaken van een anonymous user is het mogelijk om de ftp server alleen nog maar voor anonieme gebruikers toegankelijk te maken. Dit kan gerealiseerd worden door voortaan de ftp server als volgt te starten.

Shell:
/usr/libexec/ftpd -AD

Het nadeel van deze opzet is dat nu iedereen toegang heeft tot de 'home directory' van de anonymous user.

Remote Control FtpD (optioneel)

Je bent op de hoogte van de onveilige autorisatie van een ftp server. Daar komt bij dat je de ftp server enkel en alleen voor eigen doeleinden gebruikt en niet deelt met anderen. Waarom zou deze ftp server dan het grootste gedeelte van zijn tijd beschikbaar moeten zijn voor anderen?

Met de volgende webapplicatie kun je gemakkelijk vanaf een webbrowser je ftp server bedienen. Stel je voor, je wilt b.v. bij je bestanden op je server kunnen komen. Zet vanuit deze webapplicatie je ftp server 'tijdelijk' aan, doe je ding op de ftp server en sluit deze vervolgens weer. Met deze methode voorkom je dat je ftp server onnodig beschikbaar is voor anderen. Verder kun je via deze webapplicatie de beschikbare vrije ruimte op je server zien en heb je een overzicht van de gebruikers die actief zijn op je ftp server. Per gebruiker kun je de activiteit waarnemen zoals wie welke bestanden upload of download en tevens is het mogelijk om een gebruiker van je ftp server te kicken.

Deze webapplicatie genaamd Remote Control ftp server biedt de volgende mogelijkheden.

De R.C. ftp server ziet er als volgt uit.

Klik hier om te vergroten.   Klik hier om te vergroten.
Screenshot 1  Screenshot 2

Deze webapplicatie is een cgi applicatie en is geschreven in de programmeertaal c. Hierdoor is voor deze webapplicatie enkel een webserver nodig met ondersteuning van cgi en wordt hiermee verder geen gebruik gemaakt van b.v. perl of php.

U kunt hier de R.C. ftp server versie 0.8 downloaden: Pak vervolgens het bestand 'rc_ftp_server.tar.gz' uit:

Shell:
tar -xvzf rc_ftp_server.tar.gz

Configuratie:

Plaats de directory 'images' of de inhoud hiervan op een locatie in de www root. Dit zelfde geld voor het bestand 'internetlink.wav' uit de directory sound (optioneel). Plaats de bestanden 'ftp.h' en 'ftp.c' in de cgi directory van je webserver.

Configureren vervolgens de R.C. Ftp server door de 'ftp.h' aan te passen. Geef in dit bestand de locatie van de images directory en van internetlink.wav (optioneel) aan. Verder is het van belang dat wordt aangeven wat het ip-adres van je ftp server is.

Let op: De standaard configuratie is zo dat ook niet anonieme gebruikers toegang hebben tot de ftp server, wil je dit niet pas dit dan aan zoals staat aangegeven in ftp.h.

Installatie:

Nu rest nog het compileren van de source code en vervolgens het aanpassen van de rechten van de applicatie.
Deze rechten zorgen ervoor dat het programma root rechten heeft ongeacht welke gebruiker het programma start.

Shell:
cc -o ftp ftp.c
chmod 755 ftpstatus
chmod ug+s ftpstatus


Het bestanden 'ftp.h' en 'ftp.c' kunnen hierna verplaatst worden na een andere locatie. De webapplicatie is nu toegankelijk via je eigen webserver. Afhankelijk van waar je de applicatie hebt geplaatst en wat je ip-adres van je webserver is is deze als volgt op te vragen:

http://mijnipadres.nl/cgi-bin/ftpstatus

F.A.Q.

Bronnen

The FreeBSD Handbook
Het naslagwerk voor FreeBSD.
http://www.google.com/bsd
En natuurlijk mijn favoriete zoekmachine www.google.com.

Back