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.
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.