original in de Mario M. Knopf
Mario besch�ftigt sich leidenschaftlich gerne
mit Linux, Netzwerken
und sicherheitsrelevanten Themen. Nebenbei betreut er in seiner
Freizeit die beiden Webpr�senzen neo5k.org und linuxwallpapers.de.
FTP benutzt als Transportprotokoll das verbindungsorientierte TCP (Transmission Control Protocol), welches sicherstellt, da� die Daten auch wirklich beim Empf�nger ankommen. Somit braucht sich FTP nicht um einen m�glichen Paketverlust bzw. eine Fehlerkontrolle bei der Datei�bertragung k�mmern. Grob formuliert sorgt TCP also daf�r, da� jedes einzelne Datenpaket nur einmal ankommt - fehlerfrei bei der �bertragung und in der richtigen Reihenfolge.
Bei der Datei�bertragung unterscheidet man drei Transferarten, wobei der Abschlu� des Transfers im Stream-Modus durch ein End-of-File (EOF), bei den beiden anderen �bertragungsarten durch ein End-of-Record (EOR) gekennzeichnet wird.
Des Weiteren gibt es zwei verschiedene Transfermodi:
Der ASCII-Modus dient zur �bertragung von Textdateien, wohingegen der Binary-Modus beispielsweise zum Transfer von Programmen oder dergleichen dient. Der Benutzer mu� den Transfermodus f�r gew�hnlich nicht explizit ausw�hlen, da mittlerweile alle FTP-Clients die zu �bertragende Datei erkennen und automatisch umschalten.
Da die �bermittlung der Benutzerkennung und des Passworts zur Authentifizierung nicht verschl�sselt wird, ist es sehr wichtig, ausdr�cklich auf dieses potentielle Sicherheitsrisiko hinzuweisen. Aus diesem Grund machte man sich Gedanken �ber die Sicherheit von FTP. Im Oktober 1997 wurde schlie�lich das RFC 2228 [2] ver�ffentlicht, welches sicherheitsspezifische Erweiterungen f�r das File Transfer Protocol definiert.
Der Name vsftpd steht f�r "Very Secure FTP Daemon", welcher auch gleich eines der Hauptanliegen des Entwicklers Chris Evans wiederspiegelt. Bei der Entwicklung und dem Design des FTP-Servers wurde von Anfang an sehr viel Wert auf Sicherheit gelegt.
Als Beispiel hierf�r kann die Tatsache genannt werden, da� vsftpd im chroot-Modus betrieben wird. chroot bedeutet, da� einem Programm (in diesem Fall vsftpd) ein neues Wurzelverzeichnis (/) zugewiesen wird und es somit nicht mehr auf Programme oder Dateien au�erhalb dieses Verzeichnisses zugreifen darf - es wird sozusagen in einem Gef�ngnis eingesperrt. Sollte nun ein potentieller Angreifer den FTP-Server kompromittieren, ist er vom �brigen System abgeschottet und kann dadurch keinen gr��eren Schaden anrichten. Wer weiterf�hrende Informationen zu chroot sucht, sollte sich den Artikel unter [3] ansehen. Wer sich jedoch besonders f�r die Implementierung und das Design der diversen Sicherheitsmechanismen von vsftpd interessiert, dem sei [4] empfohlen.
Durch diese umfangreichen Merkmale - wobei der Anspruch an die Sicherheit des FTP-Dienstes h�chste Priorit�t genie�en sollte - hebt sich vsftpd deutlich von anderen FTP-Servern ab. Als Negativbeispiel sei hier der WU-FTPD [5] genannt, welcher in den vergangenen Jahren st�ndig durch diverse Sicherheitsl�cken auffiel.
Hat man sich die Quellen beschafft, entpackt man den Tarball, wechselt in das soeben enstandene Verzeichnis und f�hrt make aus. Nachfolgend werden die dazu ben�tigten Befehle demonstriert:
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
Jetzt werden normalerweise die Manpages und das Programm an den richtigen Ort im Dateisystem kopiert. Wenn es wider Erwarten zu Komplikationen kommt, hilft jedoch auch ein manuelles Kopieren der Dateien.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
# Kommentarzeile
# Anonymen FTP-Zugriff erlauben?
YES/NO
anonymous_enable=NO
�
# Anonymen Upload erlauben? YES/NO
anon_upload_enable=NO
�
# D�rfen anonyme User Verzeichnisse erstellen?
YES/NO
anon_mkdir_write_enable=NO
�
# D�rfen anonyme User andere Schreiboperationen wie
Umbenennen oder L�schen durchf�hren? YES/NO
anon_other_write_enable=NO
�
# Anmeldung von lokalen Usern erlauben? YES/NO
local_enable=YES
�
# Sollen lokale Benutzer in ihrem Homeverzeichnis
eingesperrt werden? YES/NO
chroot_local_user=YES
�
# Die maximal erlaubte Datentransferrate in Bytes/Sekunde
f�r lokal angemeldete User. Vorgabe = 0 (unbegrenzt)
local_max_rate=7200
�
# Schreibrechte prinzipiell erlauben? YES/NO
write_enable=YES
�
# Nachrichten bei Verzeichniswechsel anzeigen?
YES/NO
dirmessage_enable=YES
�
# Bannermeldung, welche der sich anmeldende User
sieht.
ftpd_banner="Welcome to neo5k's FTP service."
�
# Protokollierung aktivieren? YES/NO
xferlog_enable=YES
�
# S�mtliche FTP-Aktivit�ten protokollieren? YES/NO
# Achtung! Durch diesen Eintrag k�nnen sehr gro�e
Datenmengen entstehen.
log_ftp_protocol=NO
�
# Versichern, da� Verbindungen nur an Port 20 (ftp-data)
zustande kommen. YES/NO
connect_from_port_20=YES
�
# Unterbrechung (time out) bei Leerlaufzeiten (idle
sessions)
idle_session_timeout=600
�
# Zeit, nach der eine Datenverbindung unterbrochen
wird.
data_connection_timeout=120
�
# Zugriff wird �ber Pluggable Authentication Modules (PAM)
geregelt.
pam_service_name=vsftpd
�
# Standalone-Betrieb? YES/NO - abh�ngig vom Betriebsmodus
(inetd, xinetd, Standalone)
# Des Autors FTP-Dienst wird per xinetd gestartet, deswegen
lautet der Wert hier 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
}
# Soll der vsftp-Daemon im
Standalone-Betrieb laufen? YES/NO
listen=YES
neo5k@phobos> /usr/sbin/vsftpd &
Sofern die Einstiegspfade richtig gesetzt sind, gen�gt zum Starten auch ein schlichtesneo5k@phobos> vsftpd &
Durch die n�chste Eingabe kann gepr�ft werden, ob die Einstiegspfade richtig gesetzt wurden: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>
Es versteht sich von selbst, da� diese Einf�hrung nur einen kleinen Ausschnitt aus der Welt von vsftpd bieten kann, da der FTP-Server �u�erst umfangreiche Konfigurationsm�glichkeiten zur Verf�gung stellt. Wer sich nach diesem Artikel eingehender mit vsftpd besch�ftigen m�chte, sollte die Projektseite unter [6] besuchen und sich dort die umfangreiche Dokumentation zu Gem�te f�hren.