original in de Mario M. Knopf
de to en Jürgen Pohl
en to nl Hendrik-Jan Heins
Mario houdt zich graag bezig met Linux, netwerken en andere onderwerpen die betrekking hebben op beveiliging. In z'n vrije tijd onderhoudt hij twee webstekken: neo5k.org en linuxwallpapers.de.
FTP gebruikt het verbindings-controlerende protocol TCP (Transmission Control Protocol) als verbindingsprotocol, om aankomst van de gegevens bij de ontvanger te verzekeren. Daarom hoef je je bij FTP geen zorgen te maken over pakketverlies of foutcontrole tijdens de gegevensoverdracht. Anders gezegd zorgt TCP ervoor dat alle data pakketten slechts één maal aankomen - zonder fouten en in de juiste volgorde.
Gegevensoverdracht bestaat uit drie verschillende typen overdracht waarbij de completering van de streaming modus wordt gemarkeerd door een "end-of-file" (EOF) en in de andere twee overdrachtsmodi met een "end-of-record" (EOR) marker.
Daarnaast zijn er nog twee verschillende overdrachtsmodi:
De ASCII-modus wordt gebruikt voor de overdracht van tekstbestanden, en de binaire modus wordt gebruikt voor de overdracht van programma's en soortgelijke gegevens.De gebruiker hoeft de overdrachtsmodus niet zelf te selecteren, aangezien tegenwoordig alle FTP programma's wisselen naar het type dat voor het te verzenden bestand het beste is.
Aangezien de gebruikersherkenning en het wachtwoord van de autorisatie niet gecodeerd zijn, is het van belang dat ik hierbij aangeef dat dit een potentieel veiligheidslek is. Dit is de reden dat er nagedacht wordt over beveiliging van FTP. In oktober 1997 werd de RFC 2228[2] eindelijk gepubliceerd; hiermee werden belangrijke aanvullingen aan het File Transfer Protocol toegevoegd.
De naam vsftpd staat voor "very secure FTP daemon", en dat is een van de belangrijkste punten voor ontwikkelaar Chris Evans. Vanaf het begin van de ontwikkeling en het ontwerp van de FTP server was zeer hoge beveiliging een van de hoofdpunten.
Een voorbeeld hiervan is het feit dat vsftpd kan worden gedraaid in chroot modus, wat zoveel betekent dat een programma (in dit geval vsftpd) wordt weggezet in een eigen root map(l), en dat het geen programma's buiten die map meer kan benaderen - het programma zit zogezegd "opgesloten". Mocht er op een FTP-server worden ingebroken dan zit de potentiele aanvalle opgesloten in een hokje dat niet in verbinding staat met de rest van het systeem en kan hij dus relatief maar weinig schade aanrichten. Meer informatie over chroot is te vinden in het artikel onder [3]. Artikel [4] wordt aangeraden voor diegenen die geïnteresseerd zijn in de specifieke beveiligingsmechanismen van vsftpd
Met deze vele mogelijkheden - waarvan de eisen aan de beveiliging van de FTP-service de hoogste prioriteit hebben - verheft vsftpd zich boven de andere FTP-servers. Hierbij kan WU-FTPD[5] worden genoemd als een negatief voorbeeld vanwegde de vele beveiligingslekken die in de laatste paar jaar in het programma gevonden zijn.
Na het ophalen van de broncode, pak je de tarball uit, ga je naar de map die net is aangemaakt, en voer je het make-commando uit. Hier een voorbeeld van de noodzakelijke commando's:
neo5k@phobos> tar xzvf
vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make
neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp
neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp
neo5k@phobos> make install
De manpagina's en het programma moeten nu gecopieerd worden naar de juiste plek in het gegevenssysteem. Mochten er onverwachte complicaties optreden, dan kan je de bestanden ook handmatig copieren.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
neo5k@phobos> cp vsftpd.conf /etc
# Commentaarregel
# Anonymous FTP-access permitted?
YES/NO
anonymous_enable=NO
# Permit anonymus upload? YES/NO
anon_upload_enable=NO
# Permission for anonymus users to make new directories?
YES/NO
anon_mkdir_write_enable=NO
# Permission for anonymus users to do other write operations
- like renaming or deleting? YES/NO
anon_other_write_enable=NO
# Log on by local users permitted? YES/NO
local_enable=YES
# Shall local users be locked into their home directory?
YES/NO
chroot_local_user=YES
# Highest permitted data transfer rate in bytes per second
for local logged on users. Default = 0 (unlimited)
local_max_rate=7200
# General write permission? YES/NO
write_enable=YES
# Enable messages when changing directories? YES/NO
dirmessage_enable=YES
# Welcome banner at users logon.
ftpd_banner="Welcome to neo5k's FTP service."
# Activate logging? YES/NO
xferlog_enable=YES
# Logging of all FTP activities? YES/NO
# Careful! This can generate large quantities of
data.
log_ftp_protocol=NO
# Confirm connections are established on port 20 (ftp data)
only. YES/NO
connect_from_port_20=YES
# Timeout during idle sessions
idle_session_timeout=600
# Data connection timeout
data_connection_timeout=120
# Access through Pluggable Authentication Modules
(PAM)
pam_service_name=vsftpd
# Standalone operation? YES/NO - depending on operation mode
(inetd, xinetd, Standalone)
# The author's FTP service is being startet with xinetd,
therefore the value here is NO.
listen=NO
neo5k@phobos> vi /etc/inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
# 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 }
# Shall the vsftp daemon run in standalone
operation? YES/NO
listen=YES
neo5k@phobos> /usr/sbin/vsftpd &
Wanneer het pad correct gedefinieerd is, zal het programma nu starten.neo5k@phobos> vsftpd &
Met het volgende commando kunnen we controleren of het pad correct gedefinieerd is:neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
neo5k@phobos> ftp phobos Connected to phobos 220 "Welcome to 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>
Natuurlijk geeft deze introductie slechts een klein kijkje in de omgeving die vsftpd biedt, aangezien de FTP server zeer veel configuratiemogelijkheden biedt. Voor degenen die vsftpd meer in diepte willen onderzoeken, is er de project pagina[6] waar uitgebreide documentatie te vinden is.