Website-Suche

So konfigurieren Sie den FTP-Server unter Debian 9 Stretch Linux


Objektiv

Ziel ist es, einen FTP-Server unter Debian 9 Stretch Linux zu installieren und zu konfigurieren, der sowohl anonymen als auch lokalen Benutzerzugriff ermöglicht.

Betriebssystem- und Softwareversionen

  • Betriebssystem: – Debian 9 Stretch
  • Software: – vsFTPd Version 3.0.3

Anforderungen

Privilegierter Zugriff auf

Schwierigkeit

MITTEL

Konventionen

  • # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder mit dem Befehl sudo
  • $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden

Anweisungen

Im folgenden Tutorial wird erläutert, wie Sie einen FTP-Server mit dem vsFTPd-Daemon installieren und konfigurieren. Es werden auch verschiedene Konfigurationen besprochen, um sowohl anonymen als auch lokalen Benutzern Schreib- oder schreibgeschützten Zugriff zu ermöglichen.

vsFTPd-Installation

Beginnen wir mit der Installation des vsFPTd-Servers und des FTP-Clients:


apt install vsftpd ftp

Standardmäßig ist der vsFTPd-Server so konfiguriert, dass Systembenutzer mit schreibgeschütztem Zugriff auf ihre Basisverzeichnisse zugreifen können. Im Folgenden finden Sie eine standardmäßige vsFTPd-Konfigurationsdatei /etc/vsftpd.conf:


listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

Wie bereits erwähnt, gewährt die obige Konfigurationsdatei nur allen Systembenutzern, die in der Datei /etc/passwd aufgeführt sind, einen schreibgeschützten Zugriff. Verwenden Sie den Befehl ftp und versuchen Sie, eine Verbindung mit dem Benutzernamen und dem Passwort eines der lokalen Systembenutzer herzustellen:


ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
550 Permission denied.

Wenn Sie nur Lesezugriff für Ihre lokalen Benutzer benötigen, sind Sie fertig.

Schreibzugriff des Benutzers zulassen

Um Schreibzugriff für alle Systembenutzer hinzuzufügen, heben Sie die Auskommentierung auf oder fügen Sie die folgende Zeilengruppe hinzu: write_enable=YES. Die neue Konfigurationsdatei besteht aus:


listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES

Starten Sie als Nächstes Ihren vsFTPd neu:


systemctl restart vsftpd

Führen Sie einen neuen Test mit dem Befehl ftp durch, um den Schreibzugriff zu bestätigen:


ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 1000     1000            0 Jun 07 12:45 FILE.TXT
226 Directory send OK.

Nur bestimmte Benutzer zulassen

Im Moment erlaubt unser FTP-Server den Zugriff auf jedes System, das in der Datei /etc/passwd definiert ist. Um nur bestimmten Benutzern die Möglichkeit zu geben, sich anzumelden, können wir die folgenden Zeilen in unsere Konfigurationsdatei aufnehmen:


userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Das oben Gesagte aktiviert eine vordefinierte Benutzerliste, in der jedem Benutzer, der in /etc/vsftpd.userlist aufgeführt ist ( ein Benutzername pro Zeile ), der Zugriff auf FTP verweigert wird, während alle anderen Systembenutzer sich anmelden können. Lassen Sie uns eine neue Benutzerliste /etc/vsftpd.userlist erstellen, die aus einem einzelnen Benutzer linuxconfig besteht:


echo linuxconfig > /etc/vsftpd.userlist

Starten Sie den vsFTPd-Server neu:


systemctl restart vsftpd

Führen Sie einen neuen Test mit dem Befehl ftp durch, um den verweigerten Zugriff auf den FTP-Server für linuxconfig-Benutzer zu bestätigen:


ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
530 Permission denied.
Login failed.
ftp> 

Wenn Sie sich jedoch nur mit Benutzern anmelden müssen, die in /etc/vsftpd.userlist definiert sind, fügen Sie die folgende Konfigurationsoption userlist_deny=NO in Ihre vsFTPd-Konfigurationsdatei /etc/vsftpd.conf ein. Nachfolgend finden Sie unsere aktuelle Konfigurationsdatei /etc/vsftpd.conf:


listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

Anonym zulassen

In dieser Phase werden wir auch den schreibgeschützten Zugriff für anonyme Benutzer zulassen. Beginnen wir mit der Erstellung eines neuen Verzeichnisses, das als Stammverzeichnis für anonyme Benutzer verwendet wird, z. B. /var/ftp verwenden. Zu Testzwecken können wir auch eine beliebige Testdatei in /var/ftp platzieren:


mkdir /var/ftp/
chmod 555 /var/ftp/
chown ftp.ftp /var/ftp/
touch /var/ftp/ANONYMOUS.TXT

Fügen Sie außerdem die folgenden Zeilen in die Konfigurationsdatei /etc/vsftpd.conf ein, um das anonyme Home-Verzeichnis und den anonymen Zugriff zu definieren:


anon_root=/var/ftp
anonymous_enable=YES

Fügen Sie optional die Zeile no_anon_password=YES hinzu, um vsFTPd anzuweisen, anonymen Benutzern die automatische Anmeldung ohne Kennwort zu erlauben. Da wir nun eine Benutzerliste definiert haben, müssen wir auch den anonymen Benutzer zur Liste hinzufügen:


echo anonymous >> /etc/vsftpd.userlist
cat /etc/vsftpd.userlist 
linuxconfig
anonymous

Starten Sie wie üblich Ihren FTP-Server neu und führen Sie eine Gültigkeit Ihrer aktuellen Konfiguration durch:


systemctl restart vsftpd

Anonyme Anmeldung testen:


ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
226 Directory send OK.
ftp> 

Nachfolgend finden Sie unsere aktuelle vsFTPd-Konfigurationsdatei:


listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES

Anonymen Schreibzugriff aktivieren

Als Nächstes erlauben wir anonymen Benutzern, Dateien hochzuladen und neue Verzeichnisse zu erstellen und vieles mehr. Erstellen Sie dazu einen neuen Verzeichnis-Upload im Verzeichnis /var/ftp:


mkdir /var/ftp/upload
chown ftp.ftp /var/ftp/upload/

Fügen Sie als Nächstes die folgenden Zeilen in Ihre vsFTPd-Konfigurationsdatei ein:


anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Starten Sie Ihren Server neu:


systemctl restart vsftpd

Nach dem Neustart kann der anonyme Benutzer Dateien hochladen, Verzeichnisse erstellen und Dateien umbenennen:


ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
drwxr-xr-x    2 108      112          4096 Jun 07 13:57 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 FILE.TXT
226 Directory send OK.
ftp> rename FILE.TXT NEW.TXT
350 Ready for RNTO.
250 Rename successful.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 NEW.TXT
226 Directory send OK.
ftp> 

Nachfolgend finden Sie unsere endgültige vsFTPd-Konfigurationsdatei:


listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Anhang

Fehlermeldung:


ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
ftp>

Das obige zeigt an, dass Ihr anon_root Verzeichnis beschreibbar ist. Die Lösung besteht darin, es schreibgeschützt zu machen. Beispiel:


chmod 555 /var/ftp

Alternativ können Sie versuchen, die folgende Zeile in Ihre vsFTPd-Konfigurationsdatei einzufügen:


allow_writeable_chroot=YES

Verwandte Artikel: