vsftpd FTP Server installieren

vsftpd ist ein einfacher FTP Server. Im Folgenden eine kurze Anleitung, wie man vsftpd unter Ubuntu 20.04 installiert.

Installation von vsftpd

vsftpd ist in den Standard-Repos von Ubuntu bereits enthalten und kann einfach via apt installiert werden.

sudo apt install -y vsftpd

SSL Zertifikat erstellen

Wir sichern den VSFTPD Server mit einem selbst erstellten SSL Zertifikat. Dafür benötigen wir noch ein neues Zertifikat, wenn man keine Domain/Subdomain für seinen FTP Server hat.

Besitzt man eine feste IP Adresse, kann man hier auch das Zertifikat auf die Domain/subdomain pointen und kann diesen Schritt überspringen.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.pem

Konfigurieren des vsftpd Servers

Bevor wir mit der Konfiguration anfangen, verschieben wir die Original-Konfiguration als Backup.

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_orig

Anschließend kann man die neue Konfiguration mit vim (oder einem anderen Editor deiner Wahl) neu erstellen:

sudo vi /etc/vsftpd.conf

In die Datei kann man nun die folgenden Inhalte schreiben:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
# SSL
# Die Pfade an die im Punkt "SSL Zertifikat erstellen" genutzen anpassen
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
# Passives FTP
pasv_enable=Yes
# Die passiven Ports sollten eine größere Range abdecken, wenn man viele FTP Benutzer hat.
pasv_min_port=10000
pasv_max_port=10100
# Den Banner kann man noch auf seinen eigenen Bedarf anpassen
ftpd_banner=Willkommen beim Flohrer Homeserver FTP Service.

UFW Ports öffnen

Wenn man ufw einsetzt sollte man noch die Ports für UFW öffnen.

sudo vi /etc/ufw/applications.d/vsftpd

Die Datei füllen wir mit folgendem Inhalt:

[vsftpd]
title=VSFTPD (Standard)
description=Standard FTP Ports
ports=20/tcp|21/tcp

[vsftpd-connection]
title=VSFTPD (Verbindungs-Ports)
description=FTP Connection Ports für FTP Sitzungen
ports=10000:10100/tcp

[vsftpd-all]
title=VSFTPD (Verbindungs- und Standard-Ports)
description=FTP Connection Ports für FTP Sitzungen
ports=10000:10100/tcp|20/tcp|21/tcp

Anschließend noch die Regeln aktivieren:

sudo ufw allow vsftpd-all

Alternativ kann man auch die Ports ohne Erstellung einer Konfigurations-Datei freischalten:

sudo ufw allow from any to any port 20,21,10000:10100 proto tcp

Optional eine User-Liste statt dem PAM Service verwenden

user_sub_token=$USER
local_root=/home/$USER
# aktiviert die userlist
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
# wenn YES dann dient die Liste als "alle user außer denen auf der Liste".
# In unserem Fall erstellen wir eine whitelist und keine blacklist, also NO
userlist_deny=NO

Dann mit vi /etc/vsftpd.userlist die Liste bearbeiten:

heimnetz
qm-b
annette

Service neu starten

sudo sysctl vsftpd restart
# vsftpd automatisch starten:
sudo sysctl enable vsftpd

Homeserver mit Ubuntu 20.04 aufsetzen - Schritte