vsftpd
Siehe auch
SFTP mit sshd
Der „Very Secure File Transfer Protocol Daemon“ (vsftpd) ist ein schneller, kompakter FTP-Server, bei dem der Schutz gegen unbefugte Nutzung im Mittelpunkt der Entwicklung steht (in der Standard-Einstellung sind sämtliche Features abgeschaltet). Er ist der Standard FTP-Server auf RHEL-Derivaten.
Installation und Konfiguration
yum -y install vsftpd
systemctl enable --now vsftpd.service
In der Firewall müssen die FTP-Ports freigeschaltet werden:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
Eine Datei zum Download vorbereiten:
echo 'Works!' > /var/ftp/pub/test.txt
Der Benutzer „Anonymous“ darf sich nun verbinden und Dateien aus
/var/ftp/pub
herunterladen, was man auf dem Client mit
wget ftp://server/pub/test.txt
überprüfen kann.
Konfigurationsdatei sichern:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
Log-File (wenn nicht anders konfiguriert):
tail -f /var/log/xferlog
Anwendungsfälle
- Nur lokale System-Benutzer erlauben, anonyme sperren
- /etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES
- Upload für anonyme Benutzer erlauben
- /etc/vsftpd/vsftpd.conf
anonymous_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES
setsebool -P allow_ftpd_anon_write on
- Zugriff auf Verzeichnisse ausserhalb des Home-Verzeichnisses verhindern
- /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
- FTP-Benutzer muss die Apache DocumentRoot pflegen
- /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES chroot_local_user=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list
useradd \ --home-dir /var/www/html/test \ --shell /sbin/nologin \ --groups apache \ ftpuser passwd ftpuser echo 'ftpuser' >> /etc/vsftpd/user_list chmod g=rwxs /var/www/html/test setsebool -P ftpd_full_access on
/sbin/nologin
muss in/etc/shells
gelistet sein, ansonsten kann man sich nicht einloggen (Error 530)./etc/shells/sbin/nologin
- FTPS konfigurieren, inkl. Zertifikatserzeugung
openssl req -x509 -nodes -days 365 \ -newkey rsa:4096 \ -keyout /etc/pki/tls/private/vsftpd.key \ -out /etc/pki/tls/certs/vsftpd.pem
/etc/vsftpd/vsftpd.conf# if implicit ftps is wanted, enable those #implicit_ssl=YES #listen=YES #listen_port=990 # if using explicit (modern) ftps, lower the port range for data connection #pasv_min_port=34000 #pasv_max_port=35000 # either way, this is needed for both rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem rsa_private_key_file=/etc/pki/tls/private/vsftpd.key ssl_enable=YES
- Logging erhöhen
- /etc/vsftpd/vsftpd.conf
debug_ssl=YES dual_log_enable=YES log_ftp_protocol=YES xferlog_std_format=YES
Tipp
Testen lässt sich am einfachsten mit FileZilla.
Gebräuchliche Konfigurationsoptionen
Ein Auszug der am häufigsten verwendeten Konfigurationsoptionen, abseits von den Standard-Einstellungen (alle Optionen erhält man per man vsftpd.conf 5
):
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anonymous_enable=YES
ascii_download_enable=YES
ascii_upload_enable=YES
async_abor_enable=YES
chown_uploads=YES
chown_username=whoever
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
connect_from_port_20=YES
data_connection_timeout=120
deny_email_enable=YES
dirmessage_enable=YES
ftpd_banner=Welcome to blah FTP service.
idle_session_timeout=600
listen_ipv6=YES
local_enable=YES
local_umask=022
ls_recurse_enable=YES
nopriv_user=ftpsecure
pam_service_name=vsftpd
tcp_wrappers=YES
userlist_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
Built on 2023-09-21