Hier eine kleine Anleitung, wie man auf einem Ubuntu-Server ein FTP-Server aufsetzt.
Installation
vsftpd kann direkt aus den Ubuntu-Quellen installiert werden. Dazu ist lediglich das folgende Paket zu installieren.
sudo apt-get install vsftpdCode-Sprache: JavaScript (javascript)
Konfiguration
Neuen Benutzer erstellen
Da wir nicht wollen, das man sich beim FTP-Server mit dem root-user anmeldet, legen wir einen neuen User an.
sudo adduser BENUTZER
Jetzt nehmen wir ein paar einstellungen am FTP-Server vor, dazu öffen wir folgende Datei:
sudo nano /etc/vsftpd.conf
Zugriff auf Benutzer beschränken
Die Standardeinstellung von vsftp ist, dass sich alle lokalen Benutzer per ftp einloggen dürfen. Möchte man dies deaktivieren, so muss man die Option „local_enable=YES“ wieder auskommentieren:
# Uncomment this to allow local users to log in.
#local_enable=YESCode-Sprache: PHP (php)
Um nur bestimmten Benutzern den Login via FTP zu erlauben, müssen folgende Optionen gesetzt werden:
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_listCode-Sprache: JavaScript (javascript)
Um bestimmten Benutzern den Login via FTP zu verbieten, müssen folgende Optionen gesetzt werden (In diesem Fall wird den restlichen Benutzern der Login gewährt):
userlist_deny=YES userlist_enable=YES userlist_file=/etc/vsftpd.user_list
Als nächstes legen wir die vsftpd.user_list an:
sudo nano /etc/vsftpd.user_list
Die Nutzer werden in beiden Fällen folgendermaßen in die Datei /etc/vsftpd.user_list eingetragen:
nutzer1
nutzer2
nutzer3
Globales Schreiben (de-)aktivieren
In der Basiskonfiguration darf kein Benutzer per ftp schreiben. Weder lokale Benutzer (wenn sie per „local_enable=YES“ zugelassen wurden), noch anonyme Benutzer. Erst wenn die Option write_enable=YES aktiviert wurde, dürfen per ftp eingeloggte Benutzer schreiben.
# Uncomment this to enable any form of FTP write command.
write_enable=YESCode-Sprache: PHP (php)
Lokale Benutzer auf ihr Homeverzeichnis beschränken
Die letzte wichtige Option wäre es, die lokalen Benutzer auf ihr Homeverzeichnis – also /home/benutzername – zu beschränken.
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YESCode-Sprache: PHP (php)
Falls es beim verbinden mit dem FTP-Server folgenden Fehler gibt,
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
kann man folgende Zeile in die /etc/vsftpd/vsftpd.conf einfügen, damit der User Schreibrechte auf seinen Home-Ordner bekommt.
allow_writeable_chroot=YES
Nach jeder Änderung an der Config, muss der FTP-Server neu gestartet werden.
sudo systemctl restart vsftpd
Überwachung & Sicherheit
Logins und Schreibvorgänge überwachen
vsftp schreibt ein ausführliches Log über alle Logins und Schreibvorgänge. Dieses muss allerdings zunächst aktiviert werden, in dem man in /etc/vsftpd.conf folgende Einstellung aktiviert:
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.logCode-Sprache: PHP (php)
Nach dem Neustart des Servers die Log-Datei wie folgt öffen:
sudo nano /var/log/vsftpd.logCode-Sprache: JavaScript (javascript)
Möchte man z.B. die aktuellen Aktivitäten ansehen, so kann man in einem Terminal mit dem folgendem Befehl, den Verlauf des Logs begutachten.
sudo tail -f /var/log/vsftpd.logCode-Sprache: JavaScript (javascript)
Um es wieder zu beenden, drückt man die Tastenkombination [Strg – C]