FTP Server

Übersicht Weiter

 

Der BSD-FTP-Daemon Zurück Anfang Weiter

 

Der Pure-FTP-Daemon Zurück Anfang Weiter

 

Der Very Secure FTP Daemon Zurück Anfang Weiter

Allgemeines

Very Secure im Namen des FTP-Servers unterstreicht das Anliegen der Entwickler, bei Design und Implementierung die Sicherheit zum obersten Prinzip zu erheben. Der Einsatz des Servers ist zwar keine Garantie für absolute Sicherheit. Bislang jedoch sind keine gravierenden Sicherheitslücken des Vsftpd bekannt geworden.

Das recht einfache Aufsetzen des Servers und nicht zuletzt seine gute Skalierbarkeit und Geschwindigkeit prädistenieren den Server für den Einsatz als FTP-Server in kleinen und mittleren Netzwerken.

Konfiguration

Die allgemeine Konfiguration des Daemons erfolgt in der Datei /etc/vsftpd.conf. Belange der Sicherheit werden bei Verwendung von Pluggable Authentication Modules in der Datei /etc/pam.d/vsftpd eingestellt.

Die Datei /etc/vsftpd.conf

Mit dem Doppelkreuz beginnende Zeilen der Konfigurationsdatei sind Kommentare. Einträge besitzen stets die Form:

<Option>=<Wert>

Boolsche Optionen kennen den Status YES (aktiviert) und NO (deaktiviert). Ist eine solche Option nicht explizit aufgeführt, gilt ihr voreingestellter Wert.
Folgende boolsche Optionen (Auswahl) kennt vsftpd; die Voreinstellung ist in Klammern angegeben:

anon_mkdir_write_enable (NO)

Gestattet dem anonymen Zugang das Anlegen neuer Verzeichnisse. Hierzu müssen sowohl write_enable aktiviert als auch die entsprechenden Rechte im übergeordneten Verzeichnis entsprechend gesetzt sein.

anon_other_write_enable (NO)

Umbenennen und Löschen von Dateien/Verzeichnissen ist auch den anonymen Benutzern möglich.

anon_upload_enable (NO)

Gestattet dem anonymen Zugang das Hochladen neuer Dateien. Hierzu müssen sowohl write_enable aktiviert als auch die entsprechenden Rechte im übergeordneten Verzeichnis entsprechend gesetzt sein.

anon_world_readable_only (YES)

Anonyme Benutzer dürfen nur Dateien runterladen, auf die »Leserechte für alle« bestehen.

anonymous_enable (NO)

Ist diese Option gesetzt, ist der anonyme FTP-Zugang zugelassen.

chown_uploads (NO)

Hochgeladene Dateien gehören in edr Voreinstellung dem Benutzer, der das Hochladen vornahm. Bei YES wird stattdessen der unter chown_username angebene Benutzer zum neuen Eigentümer.

chroot_list_enable (NO)

Bei Aktivierung werden lokale Benutzer, die in einer Datei /etc/vsftp.chroot_list aufgeführt sind, vom chroot-Wechsel in ihr Heimatverzeichnis ausgenommen (in Verbindung mit der Option chroot_local_usr sinnvoll). Die zu verwendende Konfigurationsdatei kann mittels der Option chroot_list_file geändert werden.

chroot_local_user (NO)

Steht die Option auf YES, landen lokale Benutzer nach der Anmeldung via chroot in ihrem Homeverzeichnis. In der Voreinstellung verfügen die Benutzer den vollen Zugriff auf das Dateisystem analog zur lokalen Anmeldung.

dirmessage_enable (NO)

Ist die Option aktiv, erhalten die Benutzer beim erstmaligen Wechsel in ein Verzeichnis den Inhalt der Datei .message aus dem Verzeichnis (falls vorhanden) angezeigt. Der Name der anzuzeigenden Datei ist über die Option message_file konfigurierbar.

guest_enable (NO)

Anonyme Anmeldungen werden bei aktivierter Option auf den in guest_username benannten Zugang gemappt.

listen (NO)

Die Option ist zu Setzen, wenn der FTP-Daemon nicht über einen der Internet-Daemonen inetd oder xinetd gestartet wird. Erst somit überwacht er selbstständig die Ports auf eintreffende Verbindungen.

local_enable (NO)

Erst bei Aktivierung dürfen sich lokale Benutzer (mit Zugang in der Datei /etc/passwd) via FTP anmelden.

log_ftp_protocol (NO)

Bei aktiver Option werden alle FTP-Anforderungen und -Antworten protokolliert.

port_enable (YES)

text_userdb_names (NO)

Eigentümer/Gruppen werden beim Dateilisting als Namen anstatt als numerische ID's dargestellt.

userlist_deny (YES)

Die Option ist nur bei gesetzem userlist_enable relevant. Dann wird lokalen Benutzern das Anmelden nur ermöglicht, wenn sie explizit in der in userlist_file benannten Datei aufgeführt sind.

userlist_enable (NO)

Bei Aktivierung ist das Anmelden nur für die localen Benutzer möglich, die in der in userlist_file benannten Datei aufgeführt sind.

write_enable (NO)

Bei Aktivierung sind FTP-Kommandos, die Änderungen am Dateisystem vornehmen, gestattet.

xferlog_enable (NO)

Ermöglicht die detaillierte Protokollierung von Downloads und Uploads. Die Daten landen in der in xferlog_file benannten Datei (Voreinstellung /var/log/vsftpd.log).

Numerische Optionen konfigurieren im Wesentlichen das Timeout-Verhalten und die zu verwendenden Ports (Auswahl):

accept_timeout (60)

Nach so vielen Sekunden nach Aufbau der Verbindung wird diese abgebrochen, falls der Client sich noch nicht authentifiziert hat.

anon_max_rate (0)

Anzahl Bytes pro Sekunde, mit denen Daten vom/zum anonymen Clients erfolgen. 0 bedeutet keine Einschränkung der Transfergeschwindigkeit.

connect_timeout (60)

Nach dieser Zeitspanne wird die Verbindung zu einem Client gekappt, falls keine Kommunikation stattfand.

data_connection_timeout (300)

Werden laufende Datenübertragungen unterbrochen, wird ein Client nach Ablauf dieser Zeitspanne automatisch rausgeworfen.

ftp_data_port (20)

Der Datenport für die Datenübertragung.

idle_session_timeout (300)

Nach Ablauf dieser Zeit ohne jeglicher Kommunikation zwischen Server und Client wird die Verbindung zum Client geschlossen.

local_max_rate (0)

Analog zu annon_max_rate nur für lokale Benutzer.

max_clients (0)

Maximale Anzahl gleichzeitig akzeptierter Verbindungen. Nur im Stand-alone-Modus relevant. 0 bedeutet »unbegrenzt«.

Des Weiteren existieren eine Fülle von Zeichenkettenoptionen (Auswahl):

anon_root (none)

Bei anonymen Zugang erfolgt eine Wechsel in das angegebene Verzeichnis (via chroot).

banner_file (none)

Wenn gesetzt, wird der Text der angegebenen Datei beim ersten Anmelden einen Clients angezeigt. Ist die Option nicht aktiv, wird der unter ftpd_banner stehende Text zur Anzeige verwendet.

chown_username (root)

Der Eigentümer, dem hochgeladene Dateien anonymer Benutzer zugeordnet werden, insofern auch die Option chown_uploads gesetzt ist.

chroot_list_file (/etc/vsftpd.chroot_list)

Existiert die angegebene Datei und sind die Optionen chroot_list_enable aktiv bzw. chroot_local_user nicht aktiv, so werden die in der Datei benannten lokalen Benutzer via chroot bei Anmeldung in ihr Heimatverzeichnis verbannt.

guest_username (ftp)

Der Benutzername für den anonymen Zugang, falls dieser auf ein spezielles »Gastlogin« gemappt ist. Die Option wird nur betrachtet, wenn guest_enable gesetzt ist.

ftp_username (ftp)

Der Benutzername für den anonymen Zugang. Das Heimatverzeichnis ist i.d.R. ein spezielles FTP-Verzeichnis, das mittels eines chroot-Umgebung betreten wird. Der Unterschied zum Gast-Zugang (vergleiche guest_username) ist im Wesentlichen, das letzterer nicht zwingend in einer chroot-Umgebung gefangen ist.

ftpd_banner (none)

Der Begrüßungstext bei erstmaligem FTP-Zugang. Ist die Option nicht gesetzt, wird ein Vsftpd-eigener Text angezeigt.

listen_address (none)

Bei Rechnern mit mehreren Schnittstellen kann der Vsftpd engeweisen werden, eine andere als die erste Schnittstelle auf einkommende Verbindungen zu überwachen. Einzutragen ist hier die numerische IP-Adresse der zu überwachenden Schnittstelle.

local_root (none)

Wenn gesetzt, landen lokale Benutzer nach erfolgreicher Anmeldung in diesem Verzeichnis (sonst in ihrem Heimatverzeichnis).

message_file (.message)

Der Inhalt dieser Datei wird angezeigt, wenn ein Verzeichnis erstmals betreten wird und eine solche Datei dort existiert. Des Weiterin muss dirmessage_enable gesetzt sein.

pam_service_name (ftp)

Bezeichner, den der Vsftpd bei Verwendung der Pluggable Authentication Modules wählt.

user_config_dir (none)

Ermöglicht eine Benutzer abhängige Konfiguration. Existiert im angegebenen Verzeichnis eine gleichnamige Datei wie ein sich anmeldender Benutzer(name), so gelten für dessen Zugang neben den allgemein gesetzten alle darin aufgeführten Optionen. Die Benutzer spezifischen Optionen überschreiben ggf. die globalen!

userlist_file (/etc/vsftpd.user_list)

Siehe userlist_enable.

xferlog_file (/var/log/vsftpd.log)

Protokolldatei für die Transferstatistik.

Eine typische Konfigurationsdatei für einen einfachen Server könnte folgende Optionen enthalten:

user@sonne> cat /etc/vsftpd.conf
# Beispielkonfiguration /etc/vsftpd.conf
#
# Anonymes FTP gestatten

anonymous_enable=YES
#
# Lokale Anmeldung gestatten

local_enable=YES
#
# Veränderungen am Dateisystem prinzipiell zulassen

write_enable=YES
#
# Maske für Rechte auf hoch geladene Dateien und neu angelegte Verzeichnisse setzen

local_umask=022
#
# Anonyme Benutzer dürfen nichts am Dateisystem ädern (beide Optionen sind in der Voreinstellung auf NO gesetzt; wir führen sie hier nur zur Demonstration explizit auf)

anon_upload_enable=NO
anon_mkdir_write_enable=NO
#
# Verzeichnis-Nachrichten aktivieren

dirmessage_enable=YES
#
# Den Datentransfer protokollieren

xferlog_enable=YES
#
# Zur Datenübertragung muss der Port 20 frei geschaltet werden

connect_from_port_20=YES
#
# Die Begrüßungstext

ftpd_banner=Willkommen auf dem Linuxfibel-FTP-Server
#
# Als PAM-Dienst verwenden wir nicht die Standard-FTP-Konfiguration

pam_service_name=vsftpd

Die Datei /etc/pam.d/vsftpd

Wir verbleiben an dieser Stelle einzig bei einer kommentierten Beispieldatei. Was es mit dem Verfahren der Pluggable Authentication Modules auf sich hat, erläutert detailliert der gleichnamige Abschnitt im Kapitel SystemadministrationSichere Systeme.

root@sonne> cat /etc/pam.d/vsftpd
#%PAM-1.0

#
# Die Anmeldung bedarf der Existenz des PAM-Moduls »pam_listfile.so«
# Die weiteren Einrtäge auf der Zeile steuern das Vorgehen des Moduls:
#    Ist der anmeldende Benutzer (item=user)
#    nicht (sense=deny)
#    in der angegebenen Datei (file=/etc/ftpusers)
#    fahre dennoch mit der Authentifizierung fort (onerr=succeed)

auth     required      pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Anonymous ftp wird zugelassen
#    Ist die folgende Authentifizierung erfolgreich, werden nachfolgende Regeln nicht mehr beachtet (sufficient)

auth     sufficient    pam_ftp.so
# Für lokales Login werden die weiteren Regeln befolgt
auth     required     pam_unix.so
auth     required     pam_shells.so
account   required     pam_unix.so
password  required     pam_unix.so
session   required     pam_unix.so

Start des Servers

In den meisten Anwendungsfällen wird ein FTP-Server nur sporadisch benötigt, sodass sich dessen Start erst bei Bedarf, also über einen der Internet-Daemons inetd oder xinetd anbietet.

Start via inetd

root@sonne> vi /etc/inetd.conf
...
# These are standard services.
#
# ftp   stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd

ftp   stream  tcp     nowait  root    /usr/sbin/tcpd  vsftpd
...

Der im Beispiel zwischen geschaltete TCP-Wrapper ist nicht zwingend notwendig. Zumindest bei Authentifizierung mittels Pluggable Authentication Modules ist der zusätzlich Gewinn an Sicherheit gleich Null.

Vergessen Sie nach Änderungen in der Konfigurationsdatei nicht, den inetd neu zu starten!

Start via xinetd

root@sonne> vi /etc/xinetd.conf
...
service ftp
   {
   socket_type = stream
   wait        = no
   user        = root
   server      = /usr/sbin/vsftpd
   server_flags = -a
   log_on_success += DURATION
   instance    = 4
   }

Nach Modifikation ist der xinetd neu zu starten.

Start als eigenständiger Server

Der Vsftpd ist nicht für den Stand-Alone-Betrieb vorgesehen. Versuchten Sie dennoch den Start, ernten Sie eine Abfuhr:

root@sonne> vsftpd
500 OOPS: vsftpd: does not run standalone, must be started from inetd

 

Trivial FTP Deamon Zurück Anfang