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