Anfang
Inhalt
Einleitung
Erste Schritte
Die Bash
Das Dateisystem
Nutzerkommandos
Installation
Shells
Unix-Werkzeuge
System-Administration
X Window System
Der Kernel
Netzwerk Grundlagen
Netzwerk Clients
Netzwerk Server
Telnet & Co.
NFS Server
NIS Server
DNS Server
Booten & Co.
WWW Server
Mail Server
FTP Server
News Server
Samba
Netzwerk Sicherheit
Anhang
Register
|
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:
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&uum;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&uum;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
Systemadministration Sichere 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/wu.ftpd
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
|
|
|