FTP Server |
Übersicht |
Der BSD-FTP-Daemon |
Der Pure-FTP-Daemon |
Der Very Secure FTP Daemon |
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.
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.
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)
anon_other_write_enable (NO)
anon_upload_enable (NO)
anon_world_readable_only (YES)
anonymous_enable (NO)
chown_uploads (NO)
chroot_list_enable (NO)
chroot_local_user (NO)
dirmessage_enable (NO)
guest_enable (NO)
listen (NO)
local_enable (NO)
log_ftp_protocol (NO)
port_enable (YES)
text_userdb_names (NO)
userlist_deny (YES)
userlist_enable (NO)
write_enable (NO)
xferlog_enable (NO)
Numerische Optionen konfigurieren im Wesentlichen das Timeout-Verhalten und die zu verwendenden Ports (Auswahl):
accept_timeout (60)
anon_max_rate (0)
connect_timeout (60)
data_connection_timeout (300)
ftp_data_port (20)
idle_session_timeout (300)
local_max_rate (0)
max_clients (0)
Des Weiteren existieren eine Fülle von Zeichenkettenoptionen (Auswahl):
anon_root (none)
banner_file (none)
chown_username (root)
chroot_list_file (/etc/vsftpd.chroot_list)
guest_username (ftp)
ftp_username (ftp)
ftpd_banner (none)
listen_address (none)
local_root (none)
message_file (.message)
pam_service_name (ftp)
user_config_dir (none)
userlist_file (/etc/vsftpd.user_list)
xferlog_file (/var/log/vsftpd.log)
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 |
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 |
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.
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!
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.
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 |