[LinuxFocus-icon]
Home  |  Map  |  Index  |  Zoek

Nieuws | Archieven | Links | Over LF
Dit document is beschikbaar in: English  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  Polish  

convert to palmConvert to GutenPalm
or to PalmDoc

[Mario M Knopf]
door Mario M. Knopf
<netzmeister/at/neo5k/dot/org>

Over de auteur:

Mario houdt zich graag bezig met Linux, netwerken en andere, beveiligings-gerelateerde onderwerpen. In zijn vrije tijd onderhoudt hij twee websites: neo5k.org en linuxwallpapers.de.



Vertaald naar het Nederlands door:
Guus Snijders <ghs(at)linuxfocus.org>

Inhoud:

 

vsftpd - Een Introductie tot de Very Secure FTP Daemon

vsftp

Kort:

Dit artikel geeft een basis introductie tot de "Very Secure FTP Daemon" (NL: de erg veilige FTP daemon). Ik zal beginnen met een algemene beschrijving van FTP en vsftpd. Daarna kijken we naar de installatie, configuratie en start opties van de vsftp daemon. We sluiten af met een korte functie test.

_________________ _________________ _________________

 

Introductie

Het doel van het File Transfer Protocol (NL:bestandsoverdracht protocol) is het platform-onafhankelijk kunnen transporteren van data over het Internet en is gebaseerd op een client/server architectuur. RFC959[1] bepaald dat FTP is gesplitst in twee kanalen, een dient voor de data (TCP-poort 20) en de andere voor de opdrachten (TCP-poort 21). Over het controle kanaal kunnen de beide zijden (client en server) commando's uitwisselen voor het initiëren van de data overdracht.
Een FTP verbinding omvat vier stappen:

FTP gebruikt het verbindings controlerende TCP (Transmission Control Protocol) als transport protocol, welke de aankomst van de data bij de ontvanger garandeerd. Daarom is er geen noodzaak voor FTP om zich zorgen te maken over dataverlies of fout controle tijdens de data-overdracht. Kort gezegd zorgt TCP ervoor dat ieder data pakket slechts een keer aankomt - zonder fouten en in de juiste volgorde.

Data tranmissie komt voor in drie verschillende soorten , waarbij het einde van de stream (stroming) mode is gemarkeerd met een end-of-file (EOF, NL: einde bestand) en in de andere twee transport-modi met een end-of-record (EOR, NL:einde record) markeerder.

In aanvulling daarop zijn er twee verschillende overdrachts modi:

De ASCII-mode wordt gebruikt voor het overdragen van tekst bestanden, de binary mode wordt gebruikt om programma's en vergelijkbare data te transporteren. De gebruiker hoeft niet specifiek de overdrachtsmodus aan te geven, daar tegenwoordig vrijwel alle FTP clients naar het herkende bestandstype omschakelen voor de overdracht.

Daar de gebruikersnaam en wachtwoord voor de authenticatie niet versleuteld zijn, is het erg belangrijk om te wijzen op het potentiële beveilings risico. Dit voor sommigen aanleiding voor twijfels over veiligheid van FTP. In Oktober 1997 werd eindelijk RFC 2228[2] gepubliceerd, welke beveiligings specifieke uitbreidingen aan het File Transfer Protocol definieerd.

 

vsftpd

vsftp is een server voor Unix-achtige besturingssystemen en ondersteunt platformen als Linux, ?BSD, Solaris, HP-UX en IRIX. Er worden veel features ondersteund die vaak worden gemist op andere FTP-server. Een aantal daarvan zijn:

De naam vsftpd staat voor "very secure FTP daemon" (erg veilige FTP daemon), een van de belangrijkste eisen van ontwikkelaar Chris Evans. Vanaf het begin van de ontwikkeling was het ontwikkelen en ontwerp van de FTP server's hoge beveiliging een van de onderwerpen.

Een voorbeeld is het feit dat vsftpd wordt uitgevoerd in chroot mode, wat betekend dat een programma (in dit geval vsftpd een nieuwe root directory [l] krijgt toegewezen en dus geen programma's of bestanden buiten die directory kan benaderen - hij is zo gezegd 'opgesloten'. Zou de FTP-server worden gekraakt, is de potentiële aanvaller geïsoleerd van de rest van het systeem en wordt zo de schade beperkt. Meer informatie over chroot kan gevonden worden in het artikel in [3]. Artikel [4] wordt aanbevolen aan degenen die geïnteresseerd zijn in de specifieke beveiligingsmechanismen van vsftpd

Met de vele features - waarvan de eisen voor de veiligheid van de FTP-service de hoogste prioriteit zouden moeten hebben - verheft vsftpd zich significant boven de andere FTP-servers. WU-FTPD[5] wordt genoemd als negatief voorbeeld door de variatie van vele beveilingsproblemen in de afgelopen paar jaar.

 

Installatie

De installatie van de vsftpd daemon is redelijk eenvoudig, daar complete RPM pakketten van vsftp in iedere grote distributie gevonden kunnen worden en in veel gevallen is deze reeds geïnstalleerd. Anders kan de broncode worden gevonden op [6] en handmatig worden geïnstalleerd.

Na het ophalen van de broncode, pak je tarball uit en ga je naar de zojuist gemaakte directory en voer je hier make uit. Hier is een demonstratie van de benodigde commando's:

neo5k@phobos> tar xzvf vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make

Ook moeten we controleren of de gebruiker "nobody" (niemand) bestaat en of de directory "/usr/share/empty" bestaat en indien nodig aanmaken. Als we ook toegang plannen voor anonieme gebruikers, moet er een gebruiker "ftp" met een home directory "/var/ftp" worden gegenereerd. Dit kan gedaan worden met de volgende twee commando's:

neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp

Om redenen van beveiliging zou de directory "/var/ftp" geen eigendom moeten zijn van de gebruiker "ftp", noch zou hij daar schrijfrechten moeten hebben. Met de volgende twee commando's kunnen we de eigenaar veranderen en bestaande schrijfrechten voor andere gebruikers intrekken als de gebruiker al bestaat:

neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp

Als aan alle condities is voldaan, kunnen we nu de vsftp-daemon installeren:

neo5k@phobos> make install

De man pagina's en het programma worden nu gekopieerd naar de juiste locaties in het bestandssysteem. In het geval van onverwachte complicaties kan het handmatig kopiëren van de bestanden volstaan.

neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8

Daar het voorbeeld van ons configuratie bestand op dit punt nog niet was gekopieerd - het zou de introductie makkelijker maken - hebben we een andere handmatige actie nodig:

neo5k@phobos> cp vsftpd.conf /etc

 

Configuratie

Het configuratie bestand kan gevonden worden onder "/etc/vsftpd.conf". Zoals voor de meeste configuratie bestanden geldt, worden commentaren voorafgegaan door een hekje (#).

# Commentaar regel

Een voorbeeld configuratie zou er zo uitzien:

# Anonieme FTP-toegang toestaan? YES/NO
anonymous_enable=NO
 
# Anoniem uploaden toestaan? YES/NO
anon_upload_enable=NO
 
# Mogen anonieme gebruikers nieuwe directories maken? YES/NO
anon_mkdir_write_enable=NO
 
# Anonieme gebruikers andere schrijf operaties toestaan - zoals hernoemen of verwijderen? YES/NO
anon_other_write_enable=NO
 
# Login door lokale gebruikers toestaan? YES/NO
local_enable=YES
 
# lokale gebruikers in hun home directory opsluiten? YES/NO
chroot_local_user=YES
 
# Max data overdracht in bytes per seconde voor lokaal ingelogde gebruikers. Default = 0 (ongelimiteerd)
local_max_rate=7200
 
# Algemene schrijf permissie? YES/NO
write_enable=YES
 
# Berichten mogelijk bij wisselen directories? YES/NO
dirmessage_enable=YES
 
# Welkom banner voor gebruikers bij inloggen
ftpd_banner="Welkom bij neo5k's FTP service."
 
# Logging activeren? YES/NO
xferlog_enable=YES
 
# Alle FTP activiteiten loggen? YES/NO
# Voorzichtig! Kan veel data veroorzaken
log_ftp_protocol=NO
 
# Bevestig dat alleen verbindingen op poort 20 (ftp data) zijn toegestaan. YES/NO
connect_from_port_20=YES
 
# Timeout voor idle (stille?) sessies
idle_session_timeout=600
 
# Data connectie timeout
data_connection_timeout=120
 
# Toegang via Pluggable Authenticatie Modules (PAM)
pam_service_name=vsftpd
 
# Zelfstandige operatie? YES/NO - afhankelijk van operatie mode (inetd, xinetd, Standalone)
# De FTP service van de auteur start via xinetd, daarom is de waarde hier NO.
listen=NO

 

De FTP-Service starten

vsftpd kan op drie verschillende manieren werken. Een is door inetd, xinetd, de derde is zelfstandig (standalone) operatie.  

inetd

Als de FTP service zal worden gebruikt met inetd, openen we het configuratie bestand "/etc/inetd.conf" met een editor:

neo5k@phobos> vi /etc/inetd.conf

We zoeken naar de regels voor de FTP services en verwijderen het commentaar teken (#) voor de vsftpd entry. Als er niet zo'n entry is, kunnen we er zelf een maken. Vervolgens dienen we inetd te herstarten. De entry ziet er als volgt uit:
# ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   in.ftpd
ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   vsftpd
 

xinetd

Het is aanbevolen om de vsftp daemon met xinetd te starten, welke meer up to date is dan inetd. Enkele van deze updates zijn bijvoorbeeld het vastleggen van aanvragen, toegangscontrole, services binden aan bepaalde interfaces enz. Een erg goede introductie tot xinetd kan gevonden worden onder [7]. Na de modificatie is een herstart van xinetd nodig. De configuratie van xinetd zou er als volgt uit moeten zien:
# vsftp daemon.
service ftp
{
     disable = no
     socket_type = stream
     wait = no
     user = root
     server = /usr/sbin/vsftpd
     per_source = 5
     instances = 200
     no_access = 192.168.1.3
     banner_fail = /etc/vsftpd.busy_banner
     log_on_success += PID HOST DURATION
     log_on_failure += HOST
     nice = 10
}
    
 

Zelfstandige operatie

Het is ook mogelijk om de vsftp daemon in zelfstandige (standalone) modus te draaien. Hiervoor openen we weer het bestand "/etc/vsftpd.conf" en brengen de volgende aanpassing aan:

# Zelfstandige operatie? YES/NO
listen=YES

Vervolgens kan de daemon worden gestart met het volgende commando:

neo5k@phobos> /usr/sbin/vsftpd &

Als het zoekpad goed is ingesteld, zal dit commando de start uitvoeren:

neo5k@phobos> vsftpd &

Met het volgende commando kunnen we controleren of het zoekpad correct was opgegeven:

neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin

In standalone mode moeten we, natuurlijk, controleren dat de vsftp daemon niet in inetd of xinetd is geconfigureerd.  

Operatie Test

Na succesvolle installatie en configuratie, kunnen we voor de eerste keer onze FTP server benaderen.
neo5k@phobos> ftp phobos
Connected to phobos
220 "Welkom bij neo5k's FTP service."
Name (phobos:neo5k): testuser
331 Please specify the password.
Password:
230 Login successful
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -l
229 Entering Extended Passive Mode
150 Here comes the directory listing
drwxr-xr-x      11  500      100        400  May 07 16:22  docs
drwxr-xr-x       9  500      100        464  Feb 01 23:05  hlds
drwxr-xr-x      39  500      100       4168  May 10 09:15  projects
226 Directory send OK.
ftp>
 

Conclusie

Zoals we hebben kunnen zien, is het niet moeilijk om de vsftp daemon te installeren of te configureren. Hij biedt vele mogelijkheden en een hoge graad van beveiliging.

Natuurlijk biedt deze introductie slechts een glimp in de omgeving die wordt aangeboden door vsftpd, daar de FTP server vele mogelijkheden voor configuratie biedt. Diegenen die vsftpd graag verder willen bestuderen, zouden een bezoek moeten brengen aan de project pagina[6] en de uitgebreide documentatie doorspitten.

 

Links

[1] ftp://ftp.rfc-editor.org/in-notes/rfc959.txt [RFC 959 - File Transfer Protocol]
[2] ftp://ftp.rfc-editor.org/in-notes/rfc2228.txt [RFC 2228 - FTP Security Extensions]
[3] linuxfocus.org: article225, January2002 [chroot]
[4] http://vsftpd.beasts.org/DESIGN [Security vsftpd]
[5] http://www.wu-ftpd.org/ [WU-FTPD]
[6] http://www.vsftpd.beasts.org/ [Home of vsftpd]
[7] linuxfocus.org: article 175, November 2000 [xinetd]

 

Talkback voor dit artikel

Elk artikel heeft zijn eigen talkback pagina. Daar kan je commentaar geven of commentaar van anderen lezen:
 talkback pagina 

Site onderhouden door het LinuxFocus editors team
© Mario M. Knopf, FDL
LinuxFocus.org
Vertaling info:
de --> -- : Mario M. Knopf <netzmeister/at/neo5k/dot/org>
de --> en: Jürgen Pohl <sept.sapins/at/verizon.net>
en --> nl: Guus Snijders <ghs(at)linuxfocus.org>

2004-07-30, generated by lfparser version 2.36