vsftpd

  1. Vorwort
  2. Download und Installation
  3. Start von vsftpd
  4. Parameter der Konfigurationsdatei
  5. Uploaddirectorys
  6. Virtual Hosts
  7. SSL/TSL - Support
  8. Sonstiges

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, bei RPMfind, auf dem FTP-Server seiner Distrubtion (SuSE z. B.) oder direkt auf der Homepage von vsftpd.

RockLinux: ./scripts/Download -package vsftpd && ./scripts/Build-Pkg vsftpd
Slackware: installpkg vsftpd-2.0.1.tgz
Gentoo.....: emerge vsftpd
Debian......: apt-get 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-2.0.1.i386.rpm

Die Installation der Sourcen ist relativ simpel. Zuerst holen wir die Sourcen per 'wget':
$ wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.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.0.3.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
 $ ftp <server>
   Connected to <server>
   220 (vsFTPd 2.0.3)

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 Aenderung 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. 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.
Note: 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 aendert das 'NO' in '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:
 
,----[ ~/vsftpd-2.0.3/xinetd.d/vsftpd ]
| # 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
|         log_on_success          += DURATION USERID
|         log_on_failure          += USERID
|         nice                    = 10
|         disable                 = no
| }
`----
service ftp definiert den Service (verwendet wird die /etc/services).
Mit socket_type wird der Netzwerk-Sockettyp gesetzt (hier straem).
Mit wait wird angegeben ob ein Service Single-Threaded (yes) oder Multi-Threaded (no) ist.
Mit user wird der User definiert, unter dem der Service (hier vsftp) ablaeuft.
Unter 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.

Wenn das geschehen ist, muss man nur noch (x)inetd neu starten und der Dienst ist einsatzbereit.

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! Das ist derzeit (06/30/05) 2.0.3. Die Syntax in der Datei ist option=wert (Kommentare werden mit '#' eingeleitet).

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

anon_mkdir_write_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
Damit kann Anonymous erlaubt werden, Dateien und Verzeichnisse zu bearbeiten (Loeschen, Umbenennen, ..)

anon_upload_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
Hier ist Anonymous nur der Download erlaubt.

anonymous_enable 'YES' oder 'NO'
Diese Option regelt ob Anonymous (die User 'ftp' und 'anonymous') sich ueberhaupt einloggen duerfen.

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

ascii_upload_enable 'YES' oder 'NO'
Siehe ascii_download_enable, nur diesmal fuer den Upload.

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

background 'YES' oder 'NO'
Wenn diese Option auf 'YES' steht, wird vsftpd im Hintergrund gestartet.

check_shell 'YES' oder 'NO'
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 'YES' oder 'NO'
Damit wird die Anwendung von SITE CHMOD erlaubt!

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

chroot_list_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
Hier kann man bestimmen ob User mit einem lokalen Account "chroot()"et werden sollen.

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

deny_email_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
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 'YES' oder 'NO'
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 'YES' oder 'NO'
Wenn man hier 'NO' angibt, ist kein Download von Dateien moeglich.

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

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

force_local_data_ssl 'YES' oder 'NO'
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 'YES' oder 'NO'
Siehe oben, nur diesmal gilt es nur fuer die Authentifikation. Default ist 'YES'.

guest_enable 'YES' oder 'NO'
Hier kann man Guest - Accounts erlauben. Die Usernamen fuer diese Option werden mit guest_username gesetzt.

hide_ids 'YES' oder 'NO'
Wenn man hier 'YES' angibt, werden bei einem "ls" die Rechte aller Dateien und Verzeichnisse mit ftp angezeigt (die richtigen Rechte werden damit nicht beeinfluszt).

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

listen_ipv6 'YES' oder 'NO'
Hier kann angegeben werden ob vsftpd an einem IPv6 - Socket lauschen soll oder nicht.

local_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
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 'YES' oder 'NO'
Mit dieser Option ist es moeglich das erweiterte Logformat zu aktivieren; hier werden dann *alle* Aktivitaeten geloggt!

ls_recurse_enable 'YES' oder 'NO'
Hiermit kann man die Ausfuehrung von "ls -R" verbieten oder erlauben.

no_log_lock 'YES' oder 'NO'
Hiermit kann man verhindern das vsftpd ein Lockfile erstellt, wenn ein Logfile angelegt wird. Default ist 'NO'

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

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

one_process_model 'YES'; oder 'NO'
Ist diese Option aktiviert, ist es moeglich ein anderes Sicherheitsmodell basierend auf einem Prozess pro Verbindung zu nutzen.

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

pasv_enable 'YES' oder 'NO'
Hier kann PASV erlaubt oder verboten werden.

pasv_promiscuous 'YES' oder 'NO'
Hier kann man den Sicherheitscheck von PASV verbieten oder erlauben.

port_enable 'YES' oder 'NO'
Hier kann man das PORT - Kommando erlauben bzw. verbieten.

port_promiscuous 'YES' oder 'NO'
Siehe pasv_promiscuous.

secure_email_list_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
Wenn das auf 'YES' gesetzt ist, versucht vsftpd Sessions aufrecht zu erhalten (auch die utmp und wtmp werden geupdatet).

setproctitle_enable 'YES' oder 'NO'
Hier kann man angeben ob der Status aktiver Verbindungen bei "ps" auftauchen soll.

session_support 'YES' oder 'NO'
Hiermit versucht vsftpd die Sessions der Logins beizubehalten. Sobald dieser Wert auf 'YES' gesetzt ist, versucht vsftpd die utmp und wtmp upzudaten, indem er eine PAM-Session oeffnet. Per Default ist dieser Wert auf 'NO'.

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

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

ssl_sslv3 'YES' oder 'NO'
Siehe oben, nur diesmal fuer SSL v2. Default ist auch hier 'NO'.

ssl_tlsv1 'YES' oder 'NO'
Siehe oben, aber TLS v1 wird von vsftpd bevorzugt verwendet; deswegen ist dieser Wert auch auf 'YES'.

syslog_enable 'YES' oder 'NO'
Hier kann angeben oder syslogd das Logging reegln soll oder nicht.

run_as_launching_user 'YES' oder 'NO'
Diesen Wert sollte man nur verwenden wenn man weiss was man macht. Hiermit ist es moeglich, vsftpd unter dem User laufen zu lassen, den man will. Die einzig sinnvolle Verwendung dafuer ist, wenn man keinen root-Account hat. Per Default ist dieser Wert deswegen auf 'NO'.

tcp_wrappers 'YES' oder 'NO'
Diese Option steht nur zur Verfuegung, wenn vsftpd mit tcp_wrapper - Support kompiled worden ist.

text_userdb_names 'YES' oder 'NO'
Normalerweise werden nummerische ID's angezeigt wenn "ls" eingegeben wird. Hiermit kann man das aendern und es werden die Namen angezeigt.

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

use_localtime 'YES' oder 'NO'
Sollte klar sein.

use_sendfile 'YES' oder 'NO'
Das dient zum testen ob sendfile() verwendet werden soll. Default ist 'YES'.

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

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

virtual_use_local_privs 'YES' oder 'NO'
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 'YES' oder 'NO'
Hier kann man die FTP - Commands STOR, DELE, RNFR, RNTO, MKD, RMD, APPE und SITE erlauben bzw. verbieten.

xferlog_enable 'YES' oder 'NO'
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 'YES' oder 'NO'
Wenn hier 'YES' gesetz ist, wird im gleichen Format wie WU-FTPD geloggt.

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.

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_logins
WIe oben, nur diesmal fuer erfolgreiche Logins.

file_open_mode
Siehe anon_umask, nur diesmal fuer normale User.

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.

anon_root
Hier kann man das Verzeichnis angeben, in das vsftpd die User schicken soll (Anonymous)

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)

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

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.

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

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.

listen_address
Funktioniert nur, wenn vsftpd als Standalone laeuft. Hier kann man ihn an ein Netzwerkdevice binden (listen_address=123.123.123.123)

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.

pam_service_name
Hiermit kann man den Namen des PAM-Services festlegen. Default ist 'ftp'.

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

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

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

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
Anschlieszend muessen noch Leserechte auf das Verzeichnis gegeben werden und das wars.

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


$Id: vsftp.html,v 1.1 2004/08/01 15:37:20 dope Exp dope $
Last modified: [ 2009-09-30 12:43:32 ]
Send comments to strcat@gmx.net.