Vorwort

Solltet ihr Fragen haben oder einen Fehler entdeckt haben, dann schickt mir einfach eine Mail (strcat@gmx.net) und ich werde mich darum kuemmern. Gleiches gilt auch wenn ihr Verbesserungsvorschlaege oder Distrubtions-spezifische Hinweise habt.

Sollte ich unter "Download und Installation" eine Distubtion vergessen haben, dann zoegert nicht und schickt mir eine Mail an strcat@gmx.net und ich werde die Liste erweitern. Note: Diese Anleitung bezieht sich auch die aktuelle Version von vsftpd. Auf aeltere Versionen werde ich nicht mehr eingehen. Wenn ihr das Paketmanagementsysterm euer Distrubtion verwendet, dann uberprueft vorher welche Version enthalten ist. Im Zweifelsfall lieber aus den Sourcen bauen oder selbst ein aktuelle Package erstellen.

Download und Installation

Die erforderlichen Quellen findet man entweder bei Sourceforge, RPMfind, dem FTP-Server seiner Distrubtion oder direkt auf der Homepage von vsftpd. Die Installation läuft je nach eingesetzter Distribution unterschiedlich ab. Hier die gängigsten Beispiele:

RockLinux: ./scripts/Download -package vsftpd && ./scripts/Build-Pkg vsftpd
Slackware: installpkg vsftpd-2.0.1.tgz
Gentoo: emerge vsftpd
Debian: aptitude install vsftpd
NetBSD: cd /usr/pkgsrc/net/vsftpd && make && make install
FreeBSD: cd /usr/ports/ftp/vsftpd && make && make install
OpenBSD: cd /usr/ports/net/vsftpd && make && make install
CRUX: (cd /usr/ports/contrib/vsftpd && pkgmk -d -i)
RPM: rpm -Uvh vsftpd-$VERSION-$ARCH.rpm

Die Installation der Sourcen ist relativ simpel. Zuerst holen wir die Sourcen per wget:

$ wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.2.2.tar.gz

Alternativ dazu kann man sich auch per ftp auf dem Server einloggen und die Sourcen downloaden (falls wget nicht zur Verfuegung steht. Sobald der Download fertig ist (sind nur ~150K (Version 2.0.3)), entpacken wir das Archiv mit

$ tar -xvzf vsftpd-2.2.2.tar.gz

und wechseln in das neu erstellte Verzeichnis. Bevor wir jetzt make aufrufen, koennen wir vsftpd die Geschwaetzigkeit abgewoehnen. Per Default meldet sich vsftpd mit 220 (vsFTPd 2.2.2) Um diese Ausgabe zu unterdruecken - oder zu aendern - muss man nur zwei Dateien editieren:

prelogin.c

Hier sucht man nach vsFTPd und aendert diesen String in den ab, den man haben will.

vsftpver.h

Diese Datei definiert die Version von vsftpd. Hier kann man ebenfalls eine Änderung vornehmen.

In der Datei builddefs.h kann man Optionen fuer den Compiler angeben; wenn man SSL verwenden will, kann/muss man das ebenfalls in dieser Datei aktivieren. Anschlieszend kompiliert man die Sourcen mit make
[Es ist kein ./configure möglich!]
. Bevor man aber vsftpd installieren und starten kann, muss man noch einiges erledigen. vsftpd benoetigt den User nobody; dieser User ist normalerweise auf jedem Linux / UN*X vorhanden. Wenn nicht, wird er mit

$ useradd nobody

erstellt. Anschlieszend braucht vsftpd noch das Verzeichnis usr/share/empty (das muss leer sein!), welches mit

$ mkdir -p /usr/share/empty

erstellt wird. Soll vsftpd Anonymous - Zugriffe erlauben, braucht man noch einen User namens ftp und das dazugehoerende $HOME.

$ mkdir /home/ftp/
$ useradd -d /home/ftp ftp
$ chown root.wheel /home/ftp # Fuer *BSD
$ chown root.root /home/ftp  # Fuer Linux
$ chmod og-w /home/ftp

Jetzt koennen wir vsftpd installieren, indem wir

$ make install

eingeben. Sollte make sich mit einem exit-Status != 0 verabschieden, dann ist es auch nicht weiter wild und man kopiert die Dateien einfach per Hand:

$ cp vsftpd /usr/local/sbin/vsftpd
$ cp vsftpd.conf.5 /usr/local/man/man5
$ cp vsftpd.8 /usr/local/man/man8
$ cp vsftpd.conf /etc

Jetzt kann man vsftpd entweder per (x)inetd oder direkt starten. Zum Testen starten wir ihn direkt mit dem Aufruf:

$ vsftpd

Als weitere Parameter ist nur noch der Pfad zur Konfigurationsdatei moeglich; per Default verwendet vsftpd die /etc/vsftpd.conf, die wir oben kopiert haben.

Anmerkung Sollte vsftpd beim Start mit der Meldung:
500 OOPS: vsftpd: does not run standalone, must be started from inetd
abbrechen, dann editiert die /etc/vsftpd.conf und sucht die Zeile mit: listen=NO und ändert das "NO" YES ab. Anschlieszend sollte vsftpd problemlos starten. Das ueberpruefen wir dann gleich und loggen und - nachdem vsftpd gestartet wurde - per
$ ftp 127.0.0.1

ein.

Start von vsftpd

Es ist - wie oben schon gesagt - moeglich vsftpd entweder per vsftpd /path/to/vsftpd.conf & im Hintergrund zu starten oder man startet ihn per xinetd. Der entsprechende Eintrag sieht z. B. wie folgt aus:

# default: on
# description:
#   The vsftpd FTP server serves FTP connections. It uses
#   normal, unencrypted usernames and passwords for authentication.
# vsftpd is designed to be secure.
service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/local/sbin/vsftpd
#       server_args             =
#       log_on_success          += DURATION USERID
#       log_on_failure          += USERID
        nice                    = 10
        disable                 = no
}
service ftp

definiert den Service (verwendet wird die /etc/services).

socket_type

wird der Netzwerk-Sockettyp gesetzt (hier straem).

wait

wird angegeben ob ein Service Single-Threaded (yes) oder Multi-Threaded (no) ist.

user

wird der User definiert, unter dem der Service (hier vsftp) ablaeuft.

server

wird das Programm angegeben, das gestartet werden soll.

log_on_success

bestimmt die Protokoll-Parameter fuer log_on_success zusaetzlich zu den in xinetd.conf eingestellten.

log_on_failure

Bestimmt die Protokoll-Parameter fuer log_on_failure zusaetzlich zu den in xinetd.conf eingestellten.

nice

definiert das nice-Level (nice(1)).

disable

ist dafuer zustaendig ob der Service aktiv ist oder nicht.

Man kann vsftpd auch ueber den internet super-server - besser als inetd bekannt - starten lassen. Dazu muss man lediglich die Datei /etc/inetd.conf mit einem Editor oeffnen und dort die Zeile:

ftp stream tcp nowait root /usr/local/sbin/vsftpd vsftpd

eintragen. Hier muss man allerdings folgendes beachten:
* Es darf kein anderen Daemon den Port fuer ftp blockieren!
* Der Pfad muss ggf. angepasst werden.

Parameter der Konfigurationsdatei

Hier sind jetzt die Parameter die in der vsftpd.conf angegeben werden. Diese Parameter beziehen sich auf die aktuelle Version von vsftpd! Die Syntax in der Datei ist option=wert. Es gibt unterschiedliche Parameter die man setzen kann, aber diese sind selbsterklärend.

YES bzw. NO Werte

allow_anon_ssl

Hiermit kann man fuer Anonymous SSL aktivieren. Das funktioniert aber nur, wenn ssl_enable aktiviert ist. Default ist hier NO.

anon_mkdir_write_enable

Wenn man diese Option mit YES belegt, haben anonyme User (Anonymous) das Recht Verzeichnisse zu erstellen. damit das aber funktioniert, musz die Option write_enable ebenfalls auf YES gestellt werden und der anonyme User musz Schreibrechte in dem Verzeichnis haben (man chmod).

anon_other_write_enable

Damit kann Anonymous erlaubt werden, Dateien und Verzeichnisse zu bearbeiten (Loeschen, Umbenennen, ..)

anon_upload_enable

Hier wird Anonymous erlaubt Dateien hochzuladen. Damit das aber funktioniert, musz write_enable ebenfalls auf YES sein und die Schreibrechte fuer das Verzeichniss muss gegeben sein.

anon_world_readable_only

Hier ist Anonymous nur der Download erlaubt.

anonymous_enable

Diese Option regelt ob Anonymous (die User ftp und anonymous) sich ueberhaupt einloggen duerfen.

ascii_download_enable

Hier werden die Daten entweder im ASCII- oder im Binary - Mode runtergeladen. YES steht fuer ASCII und NO fuer Binary.

ascii_upload_enable

Siehe ascii_download_enable, nur diesmal fuer den Upload.

async_abor_enable

Wenn dieser Wert auf YES gesetzt wird, steht async ABOR zur Verfuegung. Dazu sollte man aber erst RFC2428 lesen.

background

Wenn diese Option auf YES steht, wird vsftpd im Hintergrund gestartet.

check_shell

Diese Option steht nur ohne PAM zur Verfuegung. Wenn NO gesetzt ist, dann ueberprueft vsftpd die /etc/shells nicht nach einer korrekten Shell oder Useraccount.

chmod_enable

Damit wird die Anwendung von SITE CHMOD erlaubt!

chown_uploads

Wenn YES gesetzt ist, werden alle "anonym" hochgeladenen Dateien in den bei chown_username angegebenen Username ge’chown’t.

chroot_list_enable

Hier kann man angeben ob User in eine chroot() "gepackt" werden sollen. Die User werden in einer externen Datei angegeben, die mit chroot_list_file definiert wird.

chroot_local_user

Hier kann man bestimmen ob User mit einem lokalen Account "chroot()"et werden sollen.

connect_from_port_20

Hier kann der Zugriff auf den ftp-data - Port entweder erlaubt oder verboten werden.

debug_ssl

Wenn YES gesetzt ist, wird OpenSSL im Debug-Mode ausgeführt und schreibt diese Meldungen in das Logfile von vsftpd.

delete_failed_uploads

Hiermit kann man fehlgeschlagene Uploads automatisch löschen lassen (Default: NO).

deny_email_enable

Hier wird geregelt ob bestimmte Email - Adressen verboten werden sollen. Die Adressen werden in einer externen Datei gesucht, die mit banned_email_file definiert werden kann.

dirlist_enable

Hier kann abgegeben werden, ob bei ls die Verzeichnisse angezeigt werden sollen. Wenn man es auf NO setzt, erhaelt man beim Aufruf von ls ein Permission denied, aber ein Verzeichniswechsel ist nach wie vor moeglich.

dirmessage_enable

Hier kann man ein- oder ausschalten ob beim ersten Wechsel in ein Verzeichnis eine Meldung ausgegeben werden soll. Per Default wird die Datei .message gelesen, aber man kann mit der Option message_file eine andere Datei angeben.

download_enable

Wenn man hier NO angibt, ist kein Download von Dateien moeglich.

dual_log_enable

Wenn YES angegeben wird, werden zwei Logdateien angelegt. Eine unter /var/log/xferlog und die zweite unter /var/log/vsftpd.log.

force_dot_files

Hier kann angegeben werden, ob Dotfiles (Dateien / Verzeichnisse die mit einem Punkt beginnen) beim Aufruf von "ls" angezeigt werden sollen oder nicht.

force_anon_data_ssl

Nur verfügbar, wenn ssl_enable aktiviert ist. Sobald hier YES angegeben wird, werden alle Anonymous - User dazu gezwungen eine SSL-Verbindung aufzubauen, damit Daten uebertragen werden koennen. Das funktioniert aber nur, wenn ssl_enable aktiviert ist! Default ist NO.

force_anon_logins_ssl

Siehe oben, nur diesmal gilt es nur fuer die Authentifikation. Default ist NO.

force_local_data_ssl

Sobald hier YES angegeben wird, werden alle non-Anonymous - User dazu gezwungen eine SSL-Verbindung aufzubauen, damit Daten uebertragen werden koennen. Das funktioniert aber nur, wenn ssl_enable aktiviert ist! Default ist YES.

force_local_logins_ssl

Siehe oben, nur diesmal gilt es nur fuer die Authentifikation. Default ist YES.

guest_enable

Hier kann man Guest - Accounts erlauben. Die Usernamen fuer diese Option werden mit guest_username gesetzt.

hide_ids

Wenn man hier YES angibt, werden bei einem "ls" die Benutzer- und Gruppennamen von allen Dateien und Verzeichnisse mit ftp angezeigt (die richtigen Rechte werden damit nicht beeinfluszt).

listen

Wenn hier YES angegeben wird, startet vsftpd als Standalone (also ohne die (x)inetd).

listen_ipv6

Wie bei listen, nur diesmal für IPv6.

local_enable

Wenn man hier YES angibt, wird bei einem Login - Namen der in der /etc/passwd existiert, auch das Passwort in der /etc/shadow verwendet. D. h. wenn sich ein User mit einem Usernamen der auf dem System existiert einloggen will, dann musz er auch das dazugehoerige Passwort verwenden.

lock_upload_files

Alle hochgeladenen Dateien werden mit einem write lock versehen. Damit koennen diese nicht geaendert werden, solange der Admin dieses Lock nicht entfernt hat.

log_ftp_protocol

Mit dieser Option ist es moeglich das erweiterte Logformat zu aktivieren; hier werden dann alle Aktivitaeten geloggt!

ls_recurse_enable

Hiermit kann man die Ausfuehrung von "ls -R" verbieten oder erlauben.

mdtm_write

MDTM steht fuer Modification Time und mit mdtm_write kann erlaubt werden, dass der Timestamp einer Datei geaendert wird.

no_anon_password

Hier kann man die Passwortabfragen deaktivieren. Wenn man YES angibt, werden anonyme User sofort eingeloggt, wenn sie den dementsprechenden Usernamen fuer Anonymous angeben.

no_log_lock

Hiermit kann man verhindern das vsftpd ein Lockfile erstellt, wenn ein Logfile angelegt wird.

one_process_model

Ist diese Option aktiviert, ist es moeglich ein anderes Sicherheitsmodell basierend auf einem Prozess pro Verbindung zu nutzen.

passwd_chroot_enable

Wenn YES gesetzt ist, dann wird als chroot() das Verzeichnis der /etc/passwd verwendet.

pasv_addr_resolve

Wenn auf YES, dann wird ein Hostname, welcher mit pasv_address angegeben wird, eingesetzt.

pasv_enable

Hier kann PASV erlaubt oder verboten werden.

pasv_promiscuous

Hier kann man den Sicherheitscheck von PASV verbieten oder erlauben.

port_enable

Hier kann man das PORT - Kommando erlauben bzw. verbieten.

port_promiscuous

Siehe pasv_promiscuous.

require_cert

Hiermit werden für alle SSL-Verbindungen Zertifikate benötigt, welche mit validate_cert definiert werden können.

require_ssl_reuse

If set to yes, all SSL data connections are required to exhibit SSL session reuse (which proves that they know the same master secret as the control channel). Although this is a secure default, it may break many FTP clients, so you may want to disable it. For a discussion of the consequences, see http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html

run_as_launching_user

Set to YES if you want vsftpd to run as the user which launched vsftpd. This is useful where root access is not available. MAS- SIVE WARNING! Do NOT enable this option unless you totally know what you are doing, as naive use of this option can create mas- sive security problems. Specifically, vsftpd does not / cannot use chroot technology to restrict file access when this option is set (even if launched by root). A poor substitute could be to use a deny_file setting such as {/,..*}, but the reliability of this cannot compare to chroot, and should not be relied on. If using this option, many restrictions on other options apply. For example, options requiring privilege such as non-anonymous logins, upload ownership changing, connecting from port 20 and listen ports less than 1024 are not expected to work. Other options may be impacted.

secure_email_list_enable

Diesen Parameter kann man auf YES setzen, wenn man eine bestimmte Liste mit Emails definieren will, fuer die ein Anonymous-Login erlaubt werden soll. Gelesen wird hierbei die unter email_password_file angegebene Liste. Das Format ist denkbar einfach. Ein Passwort pro Zeile.

session_support

Wenn das auf YES gesetzt ist, versucht vsftpd Sessions aufrecht zu erhalten (auch die utmp und wtmp werden geupdatet).

setproctitle_enable

Hier kann man angeben ob der Status aktiver Verbindungen bei "ps" auftauchen soll.

ssl_enable

Hiermit kann man SSL verwenden. Das setzt allerdings vorraus, dass vsftpd mit OpenSSL-Support kompiliert worden ist. Deault ist NO

ssl_request_cert

If enabled, vsftpd will request (but not necessarily require;see require_cert)acertificateonincomingSSLconnections. Normally this should not cause any trouble at all, but IBM zOS seems to have issues.

ssl_sslv2

Nur anwendbar, wenn ssl_enable aktiviert ist. Hiermit kann man SSL v2 - Verbindungen erlauben. Default ist NO.

ssl_sslv3

Siehe oben, nur diesmal fuer SSL v3. Default ist auch hier NO.

ssl_tlsv1

Siehe oben, nur diesmal fuer TLS v1. Default ist auch hier NO.

strict_ssl_read_eof

If enabled, SSL data uploads are required to terminate via SSL, not an EOF on the socket. This option is required to be sure that an attacker did not terminate an upload prematurely with a faked TCP FIN. Unfortunately, it is not enabled by default because so few clients get it right. (New in v2.0.7).

strict_ssl_write_shutdown

If enabled, SSL data downloads are required to terminate via SSL, not an EOF on the socket. This is off by default as I was unable to find a single FTP client that does this. It is minor. All it affects is our ability to tell whether the client con- firmed full receipt of the file. Even without this option, the client is able to check the integrity of the download.

syslog_enable

Hier kann angeben oder syslogd das Logging reegln soll oder nicht.

tcp_wrappers

Diese Option steht nur zur Verfuegung, wenn vsftpd mit tcp_wrapper - Support kompiled worden ist.

text_userdb_names

Normalerweise werden nummerische ID’s angezeigt wenn "ls" eingegeben wird. Hiermit kann man das aendern und es werden die Namen angezeigt.

tilde_user_enable

Wenn auf YES gesetzt, versucht vsftpd den Pfadnamen mit einer Tilde die fuer den Usernamen steht, anzuzeigen.

use_localtime

Sollte klar sein.

use_sendfile

Das dient zum testen ob sendfile()
[Siehe man 2 sendfile]
verwendet werden soll.

userlist_deny

Wenn man YES setzt, werden Logins verboten, auszer sie sind explizit in der Datei angegeben, die mit userlist_file definiert worden ist.

userlist_enable

Wenn YES gesetzt ist, nimmt vsftpd die Usernamen aus der Liste die mit userlist_file gesetzt wurde.

validate_cert

Wenn YES gesetzt ist, müssen alle Zertifikate mit dem Status OK validiert werden. Self-signed Zertifikate bestehen den Test also nicht.

virtual_use_local_privs

Hier kann man angeben ob User von VHosts die gleichen Rechte wie lokale User haben sollen. Wenn NO angegeben wird, haben sie die Rechte von anonymen Usern.

write_enable

Hier kann man die FTP - Commands STOR, DELE, RNFR, RNTO, MKD, RMD, APPE und SITE erlauben bzw. verbieten.

xferlog_enable

Wenn YES gesetzt ist, wird (per Default) nach /var/log/vsftpd.log geloggt. Eine andere Datei kann man mit vsftpd_log_file angeben.

xferlog_std_format

Wenn hier YES gesetz ist, wird im gleichen Format wie WU-FTPD geloggt.

Numerische Werte

Hier die Optionen, welche mit einem numerischem Parameter versehen werden können. Die Angabe von oktalen Werten ist zulässig, wenn diese mit einer 0 (Null) als erstes Zeichen gesetzt wird.

accept_timeout

Hier wird die Zeit in Sekunden angegeben, nach denen eine Verbindung bei Inaktivitaet getrennt werden soll.

anon_max_rate

Hier kann man die Bandbreite fuer Anonymous beschraenken. Der Wert wird in Bytes angegeben.

anon_umask

Hier kann man die "umask" angeben, die Dateien haben sollen, welche von Anonymous hochgeladen worden sind.

chown_upload_mode

Hiermit werden von Anonymous hochgeladene Dateien mit chmod() geändert (Default: 0600)

connect_timeout

Hier kann man angeben nach wieviel Sekunden die Verbindung abgebrochen werden soll nachdem ein Client eine Verbindung aufgebaut hat.

data_connection_timeout

Hier wird angegeben nach wieviel Sekunden ein Transfer abgebrochen werden soll, wenn eine Datei zwar runtergeladen wird, aber keine Daten mehr uebertragen werden.

delay_failed_login

Die Zeitdauer in Sekunden, die gewartet werden muss, nachdem ein Login fehlgeschlagen ist.

delay_successful_login

Wie oben, nur diesmal fuer erfolgreiche Logins.

file_open_mode

Hiermit werden die Rechte angegeben, die hochgeladene Dateien erhalten sollen (Default: 0666)

ftp_data_port

Hier kann man den ftp-data - Port (Port 20) aendern.

idle_session_timeout

Hier wird angegeben nach wieviel Sekunden ein Client gekickt werden soll, wenn er nichts macht.

listen_port

Hier kann man den Standard - Port (Port 21) aendern.

local_max_rate

Hier wird die maximale Transferrate angegeben die fuer lokale User gelten soll.

local_umask

Hier die "umask" fuer Dateien die von lokalen Usern erstellt worden sind.

max_clients

Hier kann man angeben wieviel Clienten sich maximal verbinden duerfen. "0" (Null) steht fuer unbegrenzt.

max_login_fails

Default ist 3; sobald die angegebene Anzahl von fehlerhaften Logins ueberschritten wurde, wird die Session gekillt.

max_per_ip

Hier die Anzahl der Clienten von einer IP.

pasv_max_port

Hier kann man den hoechsten zu verwendenden Port angeben.

pasv_min_port

Hier den niedrigsten.

trans_chunk_size

Hiermit kann man einstellen, in welchen Blöcken die Dateien hochgeladen werden sollen.

String-Optionen

Bei den nachfolgend aufgelisteten Optionen, kann man die Paramater frei definieren; wie z. B. IP-Adresse, Dateinamen, Benutzernamen, ..

anon_root

Hier kann man das Verzeichnis angeben, in das vsftpd die User schicken soll. Bei Fehleingabe (Verzeichnis nicht vorhanden, nicht beschreibbar, ..) wird keine Fehlermeldung oder Warnung ausgegeben!

banned_email_file

Hier kann man eine Datei (Plaintext) definieren, in der die Email-Adressen aufgelistet sind, mit denen ein Login nicht moeglich sein soll (Default wird /etc/vsftpd.banned_emails verwendet)

banner_file

Hier kann man die Banner - Datei angeben (was ein Banner ist, sollte klar sein).

ca_certs_file

This option is the name of a file to load Certificate Authority certs from, for the purpose of validating client certs. The loaded certs are also advertised to the client, to cater for TLSv1.0 clients such as the z/OS FTP client. Regrettably, the default SSL CA cert paths are not used, because of vsftpd’s use of restricted filesystem spaces (chroot).

chown_username

Hier kann der Username angegeben werden, der Dateien - die von anonymen Usern hochgeladen worden sind - gegeben werden soll. Das funktioniert aber nur, wenn chown_uploads aktiviert ist.

chroot_list_file

Hier wird eine Liste mit Namen von lokalen Usern angegeben, die in ihrem $HOME chroot()'et werden sollen. Das funktioniert allerdings auch nur, wenn chroot_list_enable aktiviert und chroot_local_user deaktiviert ist. Per Default wird die Datei /etc/vsftpd.chroot_list verwendet.

cmds_allowed

Hier kann man angeben welche Kommandos erlaubt sein sollen. Sie werden mit einem Komma getrennt (cmds_allowed=PASV,RETR,QUIT)
[Näheres dazu steht in RFC959]

cmds_denied

Siehe cmds_allowed, nur die hier angegebenen Kommandos werden verboten.

deny_file

Hier kann eine Liste angegeben werden, in der die Suffixes stehen, die nicht abgearbeitet werden sollen. Bsp.:
deny_file={.mp3,.mov,.htaccess,.passwd}
Damit wuerde man z. B. nicht erlauben, dass Dateien die mit einem dieser Suffixes enden, bearbeitet werden koennen (download, upload, rename, ..)

dsa_cert_file

Hier kann man die Datei angeben, in der die DSA-Zertifikate stehen.

dsa_private_key_file

Hier die privaten Keys von DSA.

email_password_file

Diese Option kann in Verbindung mit secure_email_list_enable gesetzt werden. Default ist /etc/vsftpd.email_passwords.

ftp_username

Hier wird der Username fuer Anonymous angegeben. Default ist auch hier wieder ftp.

ftpd_banner

Hier kann man den Banner von vsftpd aendern.

guest_username

Hier werden die Gast - Usernamen definiert. Default ist ftp.

hide_file

Damit kann man bestimmte Dateien verstecken. Bsp.:
hide_file={.mp3,.hidden,hide,h?}
diese Dateien sind zwar bei einem ls nicht sichtbar, aber nach wie vor existent. D. h. jeder der den absoluten Pfad kennt, kann diese Datei auch herunterladen

listen_address

Funktioniert nur, wenn vsftpd als Standalone laeuft. Hier kann man ihn an ein Netzwerkdevice binden.

listen_address6

Siehe oben, nur diesmal fuer IPv6.

local_root

Hier wird das Verzeichnis fuer lokale user festgelegt.

message_file

Hier kann man eine Datei angeben, deren Inhalt beim Wechsel in ein Verzeichnis ausgegeben werden soll. Default ist .message. Das funktioniert aber nur, wenn dirmessage_enable aktiviert ist.

nopriv_user

This is the name of the user that is used by vsftpd when it wants to be totally unprivileged. Note that this should be a dedicated user, rather than nobody. The user nobody tends to be used for rather a lot of important things on most machines.

pam_service_name

Hier kann man den String des Services angeben, den vsftpd haben soll, wenn PAM genutzt wird.

pasv_address

Use this option to override the IP address that vsftpd will advertise in response to the PASV command. Provide a numeric IP address, unless pasv_addr_resolve is enabled, in which case you can provide a hostname which will be DNS resolved for you at startup.

rsa_cert_file

Hier wird die Datei angegeben, in der die RSA-Zertifikate zu finden sind.

rsa_private_key_file

Hier die Datei mit den privaten Keys.

secure_chroot_dir

Hier wird das leere Verzeichnis angegeben, das erstellt worden ist (/usr/share/empty). Es wird von vsftpd benoetigt um eine chroot() zu erstellen

ssl_ciphers

Hiermit kann man verschluesselte SSL-Verbindungen verwenden. Default ist 'DES-CBC3-SHA'‥

user_config_dir

Hier kann eine benutzerspezifische Konfigurationsdatei angegeben werden. Das ist vor allem interessant, wenn man VHosts verwalten soll / muss. Bsp.:
user_config_dir=/etc/vsftpd_user1
$ mkdir /etc/vsftpd_user1
user_config_dir=/etc/vsftpd_user1 $ mkdir /etc/vsftpd_user1 Anschlieszend muessen noch Leserechte auf das Verzeichnis gegeben werden und das wars.

user_sub_token

This option is useful is conjunction with virtual users. It is used to automatically generate a home directory for each virtual user, based on a template. For example, if the home directory of the real user specified via guest_username is /home/vir- tual/$USER, and user_sub_token is set to $USER, then when vir- tual user fred logs in, he will end up (usually chroot()'ed) in the directory /home/virtual/fred. This option also takes affect if local_root contains user_sub_token.

userlist_file

Hier wird das Name der Datei angegeben, die geladen werden soll wenn man userlist_enable aktiviert hat. Per Default wird /etc/vsftpd.user_list verwendet.

vsftpd_log_file

Hier kann man das Logfile aendern. vsftpd loggt per Default unter /var/log/vsftpd.log

xferlog_file

Hier wird die Logdatei fuer XFerlog definiert. Default ist /var/log/xferlog

Uploaddirectorys

Fuer den Fall das man ein Uploaddirectory benoetigt, sind folgende Schritte notwendig:

$ mkdir -p /home/ftp/pub/upload
$ chmod 733 /home/ftp/pub/upload

Das die dafuer notwendigen Eintraege in der vsftpd.conf gesetzt sein muessen, sollte klar sein.

Virtual Hosts

Es ist mit vsftpd auch moeglich sog. vhosts anzulegen bzw. zu verwalten. Wenn man das vorhat, muss man wie folgt vorgehen: Zuerst braucht man eine virtual IP-Adress; wenn die Standard-IP z. B. 192.168.1.2 lautet, dann kann man

$ ifconfig eth0:1 192.168.1.10 up

verwenden um 192.168.1.10 als virtuelle IP zu verwenden. Sobald man die hat, muss man noch den User incl. dem dazu gehoerenden Verzeichniss anlegen. Das geschieht mit

$ useradd -d /var/ftp_site2 ftp_site2
$ chown root.root /var/ftp_site2
$ chmod a+rx /var/ftp_site2
$ umask 022
$ mkdir /var/ftp_site2/pub
$ echo "Nur ein Test" > /var/ftp_site2/pub/content

Anschliessend muss man noch bind = 192.168.1.2 in die /etc/xinetd.d/vsftpd eintragen. Jetzt ist noch folgendes notwendig:

$ cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2
$ cp /etc/vsftpd.conf /etc/vsftpd_site2.conf

n der Datei /etc/xinetd.d/vsftpd2 muss man jetzt als IP-Adresse 192.168.1.10 eintragen und die Zeile server_args = /etc/vsftpd_site2.conf hinzufügen. In der /etc/vsftpd_site2.conf muss man jetzt noch den Parameter ftp_username=ftp_site2 setzen und wenn man anschliessend vsftpd - bzw. den xinetd - neu gestartet hat, kann man sich mit ftp 192.168.1.10 auf dem Vhost einloggen.

SSL/TSL - Support

vsftpd bietet seit Version 2.0.0 SSL/TSL - Support an. Um diese Features nutzen zu koennen, muss man die Datei builddefs.h editieren (ist in den Sourcen dabei) und nach folgender Zeile suchen

#undef VSF_BUILD_SSL

und durch

#define VSF_BUILD_SSL

ersetzten. Danach muss man noch ssl_enable=YES in die vsftpd.conf schreiben, den Daemon neu starten und schon steht SSL/TSL - Support zur Verfuegung. Per Default sucht vsftpd in der Datei /usr/share/ssl/certs/vsftpd.pem nach gueltigen RSA-Zertifikaten, aber das kann man mit der Option rsa_cert_file aendern. Ein gueltiges Zertifikat kann mit folgendem Kommando erstellt werden:

$ openssl req -new -x509 -nodes -out /etc/ssl/vsftpd.pem -keyout /etc/ssl/vsftpd.pem

Sonstiges

Wer die Sourcen von vsftpd hat, der kann einen Blick in die Verzeichnisse EXAMPLE, xinetd.d und SECURITY werfen. Dort sind u. a. ausfuehrliche Konfigurationsdateien und Hinweise auf moegliche Fehler enthalten.