Einrichten von vsftpd für anonyme Downloads unter Ubuntu 16.04

Einführung

FTP, kurz für File Transfer Protocol, ist ein Netzwerkprotokoll, das früher häufig zum Verschieben von Dateien zwischen einem Client und einem Server verwendet wurde. Seitdem wurde es durch schnellere, sicherere und bequemere Methoden zur Übermittlung von Dateien ersetzt. Viele gelegentliche Internetnutzer erwarten, dass sie mit "+ https " direkt von ihrem Webbrowser herunterladen können, und Befehlszeilenbenutzer verwenden mit größerer Wahrscheinlichkeit sichere Protokolle wie " scp +" oder "https://www.digitalocean.com/community/tutorials" / wie-man-sftp-benutzt-um-Dateien-mit-einem-Remote-Server-sicher zu übertragen [sFTP].

FTP wird häufig verwendet, um ältere Anwendungen und Workflows mit sehr spezifischen Anforderungen zu unterstützen. Wenn Sie die Wahl haben, welches Protokoll Sie verwenden möchten, sollten Sie die moderneren Optionen in Betracht ziehen. Wenn Sie jedoch FTP benötigen, ist vsftpd eine ausgezeichnete Wahl. Vsftpd ist auf Sicherheit, Leistung und Stabilität optimiert und bietet starken Schutz vor vielen Sicherheitsproblemen, die bei anderen FTP-Servern auftreten, und ist die Standardeinstellung für viele Linux-Distributionen.

In diesem Tutorial zeigen wir Ihnen, wie Sie vsftpd für eine anonyme FTP-Download-Site einrichten, mit der öffentliche Dateien weit verbreitet werden sollen. Anstatt FTP zum Verwalten der Dateien zu verwenden, wird von lokalen Benutzern mit "+ sudo " - Berechtigungen erwartet, dass sie " scp ", " sFTP +" oder ein anderes sicheres Protokoll ihrer Wahl zum Übertragen und Verwalten von Dateien verwenden.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie:

  • * Ein Ubuntu 16.04-Server mit einem Nicht-Root-Benutzer mit "+ sudo +" - Berechtigungen *: Weitere Informationen zum Einrichten eines Benutzers mit diesen Berechtigungen finden Sie unter https://www.digitalocean.com/community/tutorials/initial -server-setup-with-ubuntu-16-04 [Erstes Server-Setup mit Ubuntu 16.04].

Sobald Sie den Server eingerichtet haben, können Sie beginnen.

Schritt 1 - vsftpd installieren

Zunächst aktualisieren wir unsere Paketliste und installieren den Daemon "+ vsftpd +":

sudo apt-get update
sudo apt-get install vsftpd

Nach Abschluss der Installation kopieren wir die Konfigurationsdatei, damit wir mit einer leeren Konfiguration beginnen und das Original als Backup speichern können.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Nach einem Backup der Konfiguration können wir die Firewall konfigurieren.

Schritt 2 - Öffnen der Firewall

Überprüfen Sie zunächst den Firewall-Status, um festzustellen, ob er aktiviert ist. Wenn dies der Fall ist, können Sie feststellen, was derzeit zulässig ist, damit Sie beim Testen der Konfiguration nicht auf Firewall-Regeln stoßen, die Sie blockieren.

sudo ufw status

In unserem Fall sehen wir Folgendes:

OutputOutput
Status: active

To Action  From
-- ------  ----
OpenSSH ALLOW   Anywhere
OpenSSH (v6)   ALLOW   Anywhere (v6)

Möglicherweise gibt es andere Regeln oder gar keine Firewall-Regeln. In diesem Beispiel ist nur "+ ssh +" - Verkehr zulässig. Daher müssen Regeln für den FTP-Verkehr hinzugefügt werden.

Bei vielen Anwendungen können Sie "+ sudo ufw app list " verwenden und sie nach Namen aktivieren, aber FTP ist keine davon. Da ufw auch / etc / services auf den Port und das Protokoll eines Dienstes überprüft, können wir FTP weiterhin namentlich hinzufügen. Wir benötigen sowohl ` ftp-data ` auf Port 20 als auch ` ftp +` (für Befehle) auf Port 21:

sudo ufw allow ftp-data
sudo ufw allow ftp
sudo ufw status

Jetzt sehen unsere Firewall-Regeln so aus:

OutputStatus: active

To Action  From
-- ------  ----
OpenSSH  ALLOW   Anywhere


OpenSSH (v6)   ALLOW   Anywhere (v6)

Wenn "+ vsftpd +" installiert und die erforderlichen Ports geöffnet sind, können Sie fortfahren.

Schritt 3 - Speicherplatz für Dateien vorbereiten

Zuerst erstellen wir das Verzeichnis, in dem wir die Dateien hosten möchten, und verwenden das Flag "+ -p +", um das Zwischenverzeichnis zu erstellen. Mit der Verzeichnisstruktur können Sie alle FTP-Verzeichnisse zusammenhalten und später weitere Ordner hinzufügen, die eine Authentifizierung erfordern:

sudo mkdir -p /var/ftp/pub

Als Nächstes setzen wir die Verzeichnisberechtigungen auf "+ nobody: nogroup +". Später konfigurieren wir den FTP-Server so, dass alle Dateien dem FTP-Benutzer und der FTP-Gruppe gehören.

sudo chown nobody:nogroup /var/ftp/pub

Zum Schluss erstellen wir eine Datei im Verzeichnis, um sie später testen zu können.

echo "vsftpd test file" | sudo tee /var/ftp/pub/test.txt

Mit dieser Beispieldatei können wir den vsftpd-Daemon konfigurieren.

Schritt 4 - Konfigurieren des anonymen Zugriffs

Wir richten uns an Benutzer mit "+ sudo " - Berechtigungen, um Dateien für die breite Verbreitung an die Öffentlichkeit zu verwalten. Dazu konfigurieren wir " vsftpd ", um anonymes Herunterladen zu ermöglichen. Wir erwarten, dass die Dateiverwalter " scp ", " sftp +" oder eine andere sichere Methode zum Verwalten von Dateien verwenden, sodass das Hochladen von Dateien über FTP nicht möglich ist.

Die Konfigurationsdatei enthält einige der vielen Konfigurationsoptionen für vsftpd.

Beginnen wir damit, die bereits festgelegten zu ändern:

sudo nano /etc/vsftpd.conf

Suchen Sie die folgenden Werte und bearbeiten Sie sie so, dass sie mit den folgenden Werten übereinstimmen:

/etc/vsftpd.conf

. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=
#

We’ll set the local_enable setting to “NO” because we’re not going to allow users with local accounts to upload files via FTP. The comment in the configuration file can be a little confusing, too, because the line is uncommented by default.
# Uncomment this to allow local users to log in.
local_enable=
. . .

Zusätzlich zur Änderung bestehender Einstellungen werden wir einige zusätzliche Konfigurationen hinzufügen.

Fügen Sie diese Einstellungen zur Konfigurationsdatei hinzu. Sie hängen nicht von der Reihenfolge ab, sodass Sie sie an einer beliebigen Stelle in der Datei platzieren können.

#
# Point users at the directory we created earlier.
anon_root=/var/ftp/
#
# Stop prompting for a password on the command line.
no_anon_password=YES
#
# Show the user and group as ftp:ftp, regardless of the owner.
hide_ids=YES
#
# Limit the range of ports that can be used for passive FTP
pasv_min_port=40000
pasv_max_port=50000

Sobald diese hinzugefügt wurden, speichern und schließen Sie die Datei. Starten Sie dann den Daemon mit dem folgenden Befehl neu:

sudo systemctl restart vsftpd

+ systemctl + zeigt nicht das Ergebnis aller Dienstverwaltungsbefehle an. Wenn Sie also sicher sein möchten, dass Sie erfolgreich waren, verwenden Sie den folgenden Befehl:

sudo systemctl status vsftpd

Wenn in der letzten Zeile Folgendes angezeigt wird, haben Sie Erfolg gehabt:

OutputAug 17 17:49:10 vsftpd systemd[1]: Starting vsftpd FTP server...
Aug 17 17:49:10 vsftpd systemd[1]: Started vsftpd FTP server.

Jetzt können wir Ihre Arbeit testen.

Schritt 5 - Testen des anonymen Zugriffs

Geben Sie in einem Webbrowser ftp: // gefolgt von der IP-Adresse Ihres Servers ein.

ftp: //

Wenn alles wie erwartet funktioniert, sollten Sie das Verzeichnis + pub + sehen:

image: https://assets.digitalocean.com/articles/vsftp-anon/anonftp-pub.png [Bild des Ordners 'pub' in einem Browser]

Sie sollten auch in der Lage sein, auf "+ pub " zu klicken, siehe " test.txt +" und dann mit der rechten Maustaste zu klicken, um die Datei zu speichern.

image: https://assets.digitalocean.com/articles/vsftp-anon/anonftp-test1.png [Bild der Datei 'test.txt' in einem Browser]

Sie können auch über die Befehlszeile testen, wodurch Sie viel mehr Feedback zu Ihrer Konfiguration erhalten. Wir werden im passiven Modus zum Server ftpen, was auf vielen Befehlszeilen-Clients das "+ -p +" - Flag ist. Im passiven Modus können Benutzer verhindern, dass lokale Firewall-Konfigurationen geändert werden, damit Server und Client eine Verbindung herstellen können.

ftp -p

Wenn Sie zur Eingabe eines Benutzernamens aufgefordert werden, können Sie entweder "ftp" oder "anonym" eingeben. Sie sind gleichwertig, daher verwenden wir das kürzere "ftp":

Connected to 203.0.113.0.
220 (vsftpd 3.0.3)
Name (203.0.113.0:21:sammy):

Nach dem Drücken der Eingabetaste sollten Sie Folgendes erhalten:

Output
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Stellen Sie sicher, dass der passive Modus wie erwartet funktioniert:

ls
Output227 Entering Passive Mode (45,55,187,171,156,74).
150 Here comes the directory listing.
drwxr-xr-x    2 ftp      ftp          4096 Aug 17 19:30 pub
226 Directory send OK.

Als anonymer Benutzer sollten Sie in der Lage sein, die Datei mit dem Befehl "+ get +" auf Ihren lokalen Computer zu übertragen:

cd pub
get test.txt
Outputftp> get test.txt
227 Entering Passive Mode (45,55,187,171,156,73).
150 Opening BINARY mode data connection for test.txt (14 bytes).
226 Transfer complete.
16 bytes received in 0.0121 seconds (1325 bytes/s)

In dieser Ausgabe erfahren Sie, dass Sie die Datei erfolgreich heruntergeladen haben, und Sie können einen kurzen Blick darauf werfen, ob sie sich auf Ihrem lokalen Dateisystem befindet.

Wir möchten auch sicherstellen, dass anonyme Benutzer unser Dateisystem nicht ausfüllen. Zum Testen werden wir uns umdrehen und versuchen, dieselbe Datei wieder auf dem Server zu speichern, jedoch mit einem neuen Namen:

put test.txt upload.txt
Output227 Entering Passive Mode (104,236,10,192,168,254).
550 Permission denied.

Nachdem wir dies bestätigt haben, verlassen wir den Monitor, um den nächsten Schritt vorzubereiten:

bye

Nachdem wir bestätigt haben, dass die anonyme Verbindung wie erwartet funktioniert, werden wir uns damit befassen, was passiert, wenn der Benutzer versucht, eine Verbindung herzustellen.

Schritt 6 - Versuchen, eine Verbindung als Benutzer herzustellen

Möglicherweise möchten Sie auch sicherstellen, dass Sie keine Verbindung als Benutzer mit einem lokalen Konto herstellen können, da durch diese Einrichtung die Anmeldeinformationen nicht verschlüsselt werden. Anstatt "ftp" oder "anonym" einzugeben, wenn Sie aufgefordert werden, sich anzumelden, versuchen Sie, Ihren sudo-Benutzer zu verwenden:

ftp -p
OutputConnected to 203.0.113.0:21.
220 (vsFTPd 3.0.3)
Name (203.0.113.0:21:)
530 This FTP server is anonymous only.
ftp: Login failed.
ftp>

Diese Tests bestätigen, dass Sie das System nur für den anonymen Download eingerichtet haben.

Fazit

In diesem Tutorial wurde beschrieben, wie vsftpd nur für anonyme Downloads konfiguriert wird. Auf diese Weise können wir ältere Anwendungen unterstützen, die keine moderneren Protokolle oder weit verbreiteten FTP-URLs verwenden können, deren Aktualisierung schwierig wäre. Weitere Informationen zum Verwalten der Dateien finden Sie unter How To Use SFTP zum sicheren Übertragen von Dateien mit einem Remote-Server.