GNU/Linux >> LINUX-Kenntnisse >  >> Debian

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

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

Debian
  1. So richten Sie NTP-Server und -Client unter Debian 9 Stretch Linux ein

  2. So installieren Sie einen LAMP-Server unter Debian 9 Stretch Linux

  3. So konfigurieren Sie die Samba-Server-Freigabe unter Debian 9 Stretch Linux

  4. So installieren Sie den MySQL-Community-Server unter Debian 9 Stretch Linux

  5. So installieren Sie TeamViewer unter Debian 9 Stretch Linux

So konfigurieren Sie LAMP mit Debian 11

So konfigurieren Sie Samba Server mit Debian 11

So installieren Sie den vsftpd-Server unter Debian 11

So installieren Sie Minecraft Server auf Debian 9 Stretch

So installieren Sie Jetty unter Debian 9 Stretch

So installieren Sie den FTP-Server unter Debian 10