Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Kommunikation und Netzwerk

k24:k24.15:start

24.15 Exkurs: FTP-Server – Installation, Konfiguration und Test

Wenn Sie auf Ihrem Computer einen FTP-Server benötigen, dann lohnt beispielsweise die Installation des FTP-Servers vsFTPd.

Die folgenden Hinweise und Anregungen sollten Sie beachten:

  • In der vorliegenden Beschreibung wird die Installation des FTP-Servers vsFTPd ('Very Secure FTP Daemon') beschrieben.
  • Für die ersten Tests wird in einer Konsole der FTP-Client `ftp` eingesetzt.
  • Die Syntax der einzelnen FTP-Befehle für das Programm ftp (Konsole) unterscheidet sich von den FTP-Befehlen nach RFC 959!
  • Auf die Dokumentation zum ausgewählten FTP-Server wird nur verwiesen.
  • Das beschriebene Vorgehen in diesem Exkurs eignet sich gut für den Einsatz des FTP-Servers vsFTPd innerhalb eines Heimnetzes.

24.15.2 Installation FTP-Server vsFTPd

So können Sie feststellen, welche FTP-Pakete bereits installiert sind. Eine Ausgabe könnte so aussehen:

$ dpkg --list | grep ftp
ii  ftp 0.17-34.1 amd64 classical file transfer client
ii  openssh-sftp-server 1:8.2p1-4ubuntu0.4 amd64 secure shell (SSH) sftp server module, ...

Der FTP-Client `ftp` ist auf diesem System bereits installiert, was der Standard bei Linux ist.

Ein FTP-Server ist bei Ubuntu und Mint standardmäßig nicht installiert. Er kann über die Anwendungsverwaltung installiert werden, wobei dem kleinen, effizienten und sicherheitsoptimierten FTP-Server vsFTPd der Vorzug gegeben werden sollte oder Sie geben in einem Terminal nacheinander folgende Zeilen ein:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get sudo apt install vsftpd

24.15.3 Steuerung des FTP-Server-Servers

Achtung! Der FTP-Server-Server wird bei jedem Systemstart automatisch gestartet (Standard). Das können Sie mit diesen beiden Befehlen ändern:

$ sudo systemctl disable vsftpd 	-- FTP-Server aus der Autostart-Liste entfernen
$ sudo systemctl enable vsftpd 	  -- FTP-Server der Autostart-Liste wieder hinzufügen

Wenn der FTP-Server beim Systemstart nicht gestattet wurde, dann können Sie ihn selbst starten. Die folgenden Aufrufe in einem Terminal steuern den FTP-Server mit den in der Liste aufgeführten Parametern sicher:

$ sudo systemctl parameter vsftpd 	{start|stop|restart|status}
$ sudo service vsftpd parameter   	{start|stop|restart|status}

Beispiele:

$ sudo service vsftpd stop
$ sudo systemctl stop vsftpd		-- Alternativ bei einem ubuntu-basierten System

Der FTP-Server-Dienst sollte nach Abschluss der Installation bereits aktiv sein. So können Sie das nachprüfen:

$ systemctl status vsftpd			-- Nur bei der Statusabfrage ohne erhöhte Berechtigung
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-02-03 15:13:01 CET; 1h 17min ago
    Process: 696 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
   Main PID: 710 (vsftpd)
      Tasks: 1 (limit: 18934)
     Memory: 2.3M
     CGroup: /system.slice/vsftpd.service
             └─710 /usr/sbin/vsftpd /etc/vsftpd.conf

Feb 03 15:13:01 pc-mint20 systemd[1]: Starting vsftpd FTP server...
Feb 03 15:13:01 pc-mint20 systemd[1]: Started vsftpd FTP server.

24.15.4 Anpassung der FTP-Server-Konfiguration

Sichern Sie zuerst die originale Konfigurationsdatei /etc/vsftpd.conf:

$ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_original

Fügen Sie dann den folgenden erprobten Inhalt in die (leere) Konfigurationsdatei /etc/vsftpd.conf ein:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
ftpd_banner="Welcome to LEHMANN-FTP-Service!"
local_enable=YES
write_enable=YES
utf8_filesystem=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
allow_writeable_chroot=YES
pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=55536
pasv_max_port=55599

Beachten Sie: Es wird der Standard-Port-Bereich von 55536:55599 für passives FTP verwendet.
Vergessen Sie nicht – nach dem Speichern der geänderten FTP-Server-Konfiguration – den FTP-Server neu zu starten!

24.15.4.1 Konfiguration Firewall

Anschließend wird optional die Firewall 'ufw' aktiviert und konfiguriert:

$ sudo ufw enable
$ sudo ufw allow from any to any port 20,21 proto tcp
$ sudo ufw allow 55536:55599/tcp
$ sudo ufw allow 990/tcp
$ sudo ufw allow openssh
$ sudo ufw reload
$ sudo ufw status

Konfiguration:

hans@pc-mint20:~$ sudo ufw enable
[sudo] Passwort für hans:
Die Firewall ist beim System-Start aktiv und aktiviert
hans@pc-mint20:~$ sudo ufw allow from any to any port 20,21 proto tcp
Regel hinzugefügt
Regel hinzugefügt (v6)
hans@pc-mint20:~$ sudo ufw allow 55536:55599/tcp
Regel hinzugefügt
Regel hinzugefügt (v6)
hans@pc-mint20:~$ sudo ufw allow 990/tcp
Regel hinzugefügt
Regel hinzugefügt (v6)
hans@pc-mint20:~$ sudo ufw allow openssh
Regel hinzugefügt
Regel hinzugefügt (v6)
hans@pc-mint20:~$ sudo ufw reload
Firewall neu gestartet
hans@pc-mint20:~$ sudo ufw status
Status: Aktiv

Zu                         Aktion      Von
--                         ------      ---
20,21/tcp                  ALLOW       Anywhere
55536:55599/tcp            ALLOW       Anywhere
990/tcp                    ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20,21/tcp (v6)             ALLOW       Anywhere (v6)
55536:55599/tcp (v6)       ALLOW       Anywhere (v6)
990/tcp (v6)               ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

24.15.4.2 Konfiguration UTF8

Die Konfiguration der FTP-Servers vsFTPd in Bezug auf UTF8 können Sie in der Konfigurationsdatei /etc/vsftpd.conf über die Option

utf8_filesystem=YES

vornehmen. Im Quelltext in einem (Gambas-)FTP-Client-Programm sorgt der folgende FTP-Befehl 'OPTS UTF8 ON' dafür, dass der FTP-Server UTF8 nutzt:

hFTPClient.Exec(["OPTS UTF8 ON"])

Die Ausgabe des folgenden FTP-Befehls

hFTPClient.Exec(["FEAT"])

ergibt im Debug-Modus (hFTPClient.Debug = True) diese (gekürzte) Ausgabe in der Konsole in der Gambas-IDE:

> FEAT
* ftp_perform ends with SECONDARY: 0
< 211-Features:
<  UTF8
...
<  TVFS
< 211 End

Beachten Sie, dass die Ausgabe 'UTF8' des verwendeten FTP-Servers – zum Beispiel bei einem NAS-FTP-Server – noch lange nicht bedeutet, dass er auch Zeichenketten in UTF8 ausgibt. Es reicht auch nicht, dass Sie den FTP-Server so konfigurieren, dass UTF8 aktiviert werden soll. Man muss ihn offenbar so konfigurieren, dass er UTF8 immer verwenden soll und nicht automatisch, was bei anderen FTP-Servern eingestellt werden kann.

Einen Ausweg würde die direkte Konvertierung der Zeichensätze im FTP-Client zum Beispiel bei der Anzeige der Datei-Namen auf dem FTP-Server bieten, was aber voraussetzt, dass man beide Zeichensätze sicher kennt:

grvServerFiles[iRow, iColumn].Text = Conv$(avFileName[iColumn], "ISO-8859-15", "UTF-8")

24.15.5 Dokumentation

Eine umfangreiche Dokumentation zur Installation und Konfiguration des FTP-Server finden Sie unter:

https://wiki.ubuntuusers.de/vsftpd/
https://www.howtoforge.de/anleitung/installation-und-konfiguration-des-vsftpd-servers-auf-ubuntu-1804-lts/
https://think.unblog.ch/ftp-server-installation-mit-vsftpd/
https://www.howtoforge.de/anleitung/wie-installiert-und-konfiguriert-man-einen-ftp-server-vsftpd-mit-ssl-tls-unter-ubuntu-2004/
https://linuxconfig.org/how-to-setup-and-use-ftp-server-in-ubuntu-linux
https://www.ionos.de/digitalguide/server/konfiguration/ubuntu-ftp-server-installation-und-konfiguration/

24.15.6 Verbindungsdaten

Wenn Sie eine Verbindung mit einem FTP-Client zum FTP-Server-Server aufbauen wollen, dann benötigen Sie zwingend folgende Daten:

  • IP-Adresse des FTP-Servers oder in einer DHCP-Umgebung mit DNS-Server dessen Hostnamen oder auch nur 127.0.0.1 oder localhost, wenn der FTP-Server zu Testzwecken auf dem gleichen System läuft wie ein FTP-Client und
  • die FTP-Konto-Daten (FTP-UserName, FTP-Passwort) eines Benutzers auf dem FTP-Server.

24.15.7 FTP-Konto anlegen

Jetzt wird es Zeit, ein FTP-Konto für einen FTPbenutzer auf dem installierten FTP-Server zu erzeugen, damit erste Tests absolviert werden können:

$ sudo useradd -m ftpuser
$ sudo passwd ftpuser
Bitte ein neues Passwort eingeben:
Bitte das neue Passwort erneut eingeben:
passwd: Passwort erfolgreich geändert

24.15.8 FTP-Verbindung mit Passwort-Authentifizierung

Für eine Verbindung vom FTP-Client 'ftp' zum FTP-Server vsFTPd benötigen Sie die IP-Adresse des Servers und ein FTP-Konto:

$ ftp 192.168.0.245
$ ftp pc-mint20
$ ftp localhost
$ ftp 127.0.0.1
Connected to 127.0.0.1.
220 "Welcome to LEHMANN-FTP-Service!"
Name (127.0.0.1:hans): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> close
221 Goodbye.
ftp> exit
$

24.15.9 FTP-Verbindung – FTP-Befehle

Folgende Aufgabe ist zu bearbeiten:

  • Zuerst wird eine Verbindung vom FTP-Client 'ftp' zum FTP-Server hergestellt,
  • danach wird der Inhalt des Basis-Verzeichnisses /html ausgelesen→ dir und
  • das Verzeichnis mit cd html gewechselt.
  • Dann wird die im Verzeichnis /html existierende Datei /html/k28_plan.txt in /html/k28_konzept.txt umbenannt → rename und
  • abschließend die Verbindung geschlossen → close sowie der FTP-Client beendet → exit.
$ ftp 192.168.0.245
Connected to 192.168.0.245.
220 "Welcome to LEHMANN-FTP-Service!"
Name (192.168.0.245:hans): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 1001     1001         4096 Feb 19 16:11 backup
drwxr-xr-x   38 1001     1001         4096 Mar 09 10:28 html
drwxr-xr-x    2 1001     1001         4096 Feb 19 16:11 log
226 Directory send OK.
ftp> cd html
250 Directory successfully changed.
ftp> rename /html/k28_plan.txt /html/k28_konzept.txt
350 Ready for RNTO.
250 Rename successful.
ftp> close
221 Goodbye.
ftp> exit
$

24.15.10 Verbindung zum FTP-Server im Dateimanager

Starten Sie im Dateimanager unter 'Datei/Mit Server verbinden' den u.a. Dialog und tragen Sie alle relevanten Daten ein, wobei Sie bei 'Server:' dessen IP-Adresse oder Hostnamen eingeben können:

B1

Abbildung 24.15.10.1: Dialog – Mit FTP-Server verbinden

Nach dem erfolgreichen Verbinden zum FTP-Server sehen Sie im Dateimanager das über das Netzwerk eingehängte (Remote-)Verzeichnis. Nun können Sie in diesem Verzeichnis unter den Konto-Rechten arbeiten. Nach der administrativen Arbeit hängen Sie den Datenträger wieder aus oder legen diese FTP-Server-Verbindung als Lesezeichen ab.

24.15.11 Einsatz des FTP-Servers

Der FTP-Server vsFTPd wurde vom Autor installiert, um die Klasse FTPClient zu erkunden. So wurde sichergestellt, dass alle Projekte im Kapitel 24.3.1 FTPClient umfangreich getestet werden konnten. Die Klasse FTPClient stellt einen FTP-Client zur Verfügung, der das Herunterladen von Dateien von einem FTP-Server, das Hochladen von Dateien auf einen FTP-Server und das Senden von FTP-Befehlen zu einem FTP-Server ermöglicht. Das folgende Beispiel zeigt den Einsatz dieser Klasse für ein Projekt, bei dem die Datei-Übertragung von und zu einem FTP-Server im Mittelpunkt stand.

B2

Abbildung 24.15.11.1: FTP-Client auf der Basis der Klasse FTPClient

Den kompletten Quelltext für den FTP-Client finden Sie im Kapitel '24.2.3 FtpClient'.

24.15.12 Webbrowser und Unterstützung von FTP

FTP war jahrzehntelang das Mittel der Wahl für Datei-Downloads. Da sowohl die Anmeldedaten und auch der Dateiinhalt unverschlüsselt übertragen werden, haben Webbrowser wie Google-Crome oder Firefox die Unterstützung von unsicherem FTP eingestellt.

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k24/k24.15/start.txt · Zuletzt geändert: 15.03.2022 (Externe Bearbeitung)

Seiten-Werkzeuge