Ziel
Das Ziel ist die Installation und Konfiguration eines FTP-Servers auf Debian 9 Stretch Linux, 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 durch Verwendung von
sudo
Befehl - $ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden
Anleitung
Das folgende Tutorial erklärt, wie man einen FTP-Server mit vsFTPd
installiert und konfiguriert Dämon. Es wird auch verschiedene Konfigurationen besprechen, um sowohl anonymen Benutzern als auch lokalen Benutzern Schreib- oder Lesezugriff zu gewähren.
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 nur mit Lesezugriff auf ihre Home-Verzeichnisse zugreifen können. Das Folgende ist 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 jedem Systembenutzer, der in /etc/passwd
aufgeführt ist, nur Lesezugriff Datei. Verwenden Sie ftp
Befehl und versuchen Sie, sich mit dem Benutzernamen und Passwort eines der Benutzer des lokalen Systems zu verbinden:
# 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.
Benutzern Schreibzugriff gewähren
Um Schreibzugriff für alle lokalen Benutzer des Systems hinzuzufügen, entfernen Sie das Kommentarzeichen 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
Als nächstes starten Sie Ihren vsFTPd neu:
# systemctl restart vsftpd
Führen Sie einen neuen Test mit ftp
durch Befehl zum Bestätigen des Schreibzugriffs:
# 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 für jeden Systembenutzer, der in /etc/passwd
definiert ist Datei. Damit sich nur bestimmte Benutzer anmelden können, können wir die folgenden Zeilen in unsere Konfigurationsdatei aufnehmen:
userlist_file=/etc/vsftpd.userlist userlist_enable=YES
Das Obige aktiviert eine vordefinierte Benutzerliste, in der alle Benutzer in /etc/vsftpd.userlist
aufgeführt sind (ein Benutzername pro Zeile) wird der Zugriff auf FTP verweigert, während sich alle anderen Systembenutzer anmelden können. Lassen Sie uns eine neue /etc/vsftpd.userlist
erstellen Benutzerliste bestehend aus einem einzelnen Benutzer linuxconfig
:
# echo linuxconfig > /etc/vsftpd.userlist
Starten Sie den vsFTPd-Server neu:
# systemctl restart vsftpd
Führen Sie einen neuen Test mit ftp
durch Befehl, um den verweigerten Zugriff auf den FTP-Server für linuxconfig
zu bestätigen Benutzer:
# 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
hinzu in Ihre vsFTPd-Konfigurationsdatei /etc/vsftpd.conf
. Unten ist unsere aktuelle /etc/vsftpd.conf
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
Anonym zulassen
In dieser Phase werden wir auch anonymen Benutzern einen schreibgeschützten Zugriff erlauben. Beginnen wir mit der Erstellung eines neuen Verzeichnisses, das als Stammverzeichnis für anonyme Benutzer verwendet wird, z. /var/ftp
. 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 /etc/vsftpd.conf
ein Konfigurationsdatei zum Definieren des anonymen Home-Verzeichnisses und des anonymen Zugriffs:
anon_root=/var/ftp anonymous_enable=YES
Fügen Sie optional no_anon_password=YES
hinzu Zeile, um vsFTPd anzuweisen, anonymen Benutzern zu erlauben, sich automatisch ohne das Passwort anzumelden. Da wir jetzt eine Benutzerliste definiert haben, müssen wir auch den anonymous
hinzufügen Benutzer zur Liste:
# echo anonymous >> /etc/vsftpd.userlist # cat /etc/vsftpd.userlist linuxconfig anonymous
Starten Sie wie gewohnt Ihren FTP-Server neu und führen Sie eine Gültigkeitsprüfung 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
Lassen Sie uns als Nächstes anonymen Benutzern erlauben, Dateien hochzuladen und neue Verzeichnisse und mehr zu erstellen. Erstellen Sie dazu ein neues Verzeichnis upload
innerhalb von /var/ftp
Verzeichnis:
# 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, 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>
Unten 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 ist beschreibbar. Die Lösung besteht darin, es schreibgeschützt zu machen. Beispiel:
# chmod 555 /var/ftp
Versuchen Sie alternativ, die folgende Zeile in Ihre vsFTPd-Konfigurationsdatei einzufügen:
allow_writeable_chroot=YES