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

Wie man vsftpd unter Debian einrichtet

Vsftpd ist das Akronym für Very Secure FTP Daemon:Es ist einer der am häufigsten verwendeten FTP-Server unter Linux und anderen Unix-ähnlichen Betriebssystemen. Es ist Open Source und unter der GPL-Lizenz veröffentlicht und unterstützt virtuelle Benutzer und SSL für die Datenverschlüsselung. In diesem Tutorial werden wir sehen, wie man es unter Linux installiert und konfiguriert.

In diesem Tutorial lernen Sie :

  • Wie man vsftpd unter Debian 10 installiert
  • Wie man vsftpd konfiguriert
  • So richten Sie die anonyme Nutzung ein
  • So richten Sie die Anmeldung mit lokalen Benutzern ein
  • So richten Sie virtuelle Benutzer ein
  • So richten Sie ufw ein, um eingehenden Datenverkehr zuzulassen

Wie man vsftpd unter Debian einrichtet

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System Debian 10 (Buster)
Software vsftpd, openssl, libpam-pwdfile
Andere Root-Berechtigungen zum Installieren und Konfigurieren von vsftpd
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 gegebene Linux-Befehle als normaler nicht-privilegierter Benutzer ausgeführt werden

Installation

Vsftpd ist in den offiziellen Debian-Repositories verfügbar, daher können wir zur Installation unseren bevorzugten Paketmanager verwenden; Es ist nur eine Frage der Synchronisierung der Repositories und der Installation des Pakets. Beide Dinge können erreicht werden, indem
die folgenden Befehle ausgeführt werden:

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

Wenige Sekunden und das Paket wird auf unserem Debian-System installiert. Die im Paket enthaltenen Installationsskripte kümmern sich auch um den Start des vsftpd Dienst automatisch, aber wir müssen daran denken, den Dienst jedes Mal neu zu starten oder neu zu laden, wenn wir die Konfigurationsdatei ändern. Um die virtuellen Benutzer verwenden zu können Funktion, die vom vsftpd bereitgestellt wird, müssen wir auch ein anderes Paket installieren:

$ sudo apt-get install libpam-pwdfile

Wir werden seine Verwendung im entsprechenden Abschnitt dieses Tutorials sehen.

Sobald die benötigten Pakete installiert sind, können wir fortfahren und vsftpd konfigurieren:Wir werden im nächsten Abschnitt dieses Tutorials sehen, wie das geht.

Vsftpd-Setup

Die vsftpd-Konfigurationsdatei ist /etc/vsftpd.conf . Wenn wir es öffnen, sehen wir die verschiedenen Anweisungen, die bereits darin enthalten sind. Mal sehen, was für die häufigsten Fälle am relevantesten ist.

Anonyme Anmeldung aktivieren

Der nicht authentifizierte Zugriff auf den Server als anonymer Benutzer ist standardmäßig deaktiviert. Um es zu aktivieren, müssen wir den anonymous_enable verwenden Direktive, die in der Konfigurationsdatei in Zeile 25 platziert wird . Alles, was wir tun müssen, ist es auf YES zu setzen :
muss die Anweisung ändern in:

anonymous_enable=YES

Eine weitere Anweisung, die wir möglicherweise ändern möchten, ist diejenige, die es uns ermöglicht, ein Verzeichnis festzulegen, in dem vsftpd versucht, nach einem anonymen Zugriff zu navigieren. Die Direktive, mit der wir diese Einstellung steuern können, ist anon_root . Angenommen, wir möchten, dass ein anonymer Benutzer auf /srv/ftp zugreift Standardmäßig würden wir schreiben:

anon_root=/srv/ftp

Alle anonymen Anmeldungen werden intern einem bestimmten Benutzer zugeordnet, der standardmäßig ftp ist . Um diese Zuordnung zu ändern, müssen wir den ftp_username verwenden Option und setzen Sie sie auf den Namen des Benutzers, dem wir anonyme Benutzer zuordnen möchten.

Standardmäßig darf ein anonymer Benutzer aus offensichtlichen Sicherheitsgründen nichts auf dem Server schreiben. Wenn Sie dieses Verhalten ändern möchten (nicht empfohlen), gibt es einige Optionen, die geändert werden müssen. Zunächst einmal das allgemeine write_enable Direktive muss auf YES gesetzt werden . Diese Direktive ist in Zeile 31 kommentiert der Konfigurationsdatei, Sie müssen also nur den Kommentar entfernen.

# Uncomment this to enable any form of FTP write command.
write_enable=YES

Sobald diese Direktive aktiviert ist, müssen wir nur noch an zwei weiteren Optionen arbeiten:anon_upload_enable und anon_mkdir_write_enable . Wenn Ersteres auf YES gesetzt ist ein anonymer Benutzer kann hochladen Dateien, aber nur, wenn der Benutzer, dem es zugeordnet ist (wie gesagt standardmäßig ftp), Schreibrechte für das Zielverzeichnis hat. Um diese Option zu aktivieren, müssen wir lediglich den Kommentar aus der Zeile 40 entfernen der Konfigurationsdatei:

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES

Der anon_mkdir_write_enable stattdessen, wenn sie auf YES gesetzt ist erlaubt anonymen Benutzern, neue Verzeichnisse auf dem Server zu erstellen, unter den gleichen Bedingungen, die wir oben gesehen haben (der zugrunde liegende Benutzer auf dem Server muss Schreibberechtigungen für das übergeordnete Verzeichnis haben). Die Direktive befindet sich in Zeile 44 der Konfigurationsdatei:

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES

Noch einmal, da die Variable bereits auf YES gesetzt ist , damit es relevant ist, müssen wir nur den Kommentar daraus entfernen.

Damit anonyme Benutzer auch andere Arten von Schreibvorgängen durchführen können, wie zum Beispiel Umbenennung oder löschen ein Verzeichnis, müssen wir eine andere Direktive verwenden, die nicht in der Konfigurationsdatei vorhanden ist, anon_other_write_enable und setzen Sie es auf YES wenn das obige unser gewünschtes Verhalten ist:

anon_other_write_enable=YES

Authentifizierte Anmeldungen

Damit die Benutzer des lokalen Systems mit ihrem Systemkennwort auf den FTP-Server zugreifen können, muss der local_enable Direktive muss auf YES gesetzt werden :Dies ist die Standardeinstellung auf dem Debian-System. Die Direktive befindet sich in Zeile 28 der
Daemon-Konfigurationsdatei:

# Uncomment this to allow local users to log in.
local_enable=YES

Wenn sich ein lokaler Benutzer erfolgreich authentifiziert, hat er/sie standardmäßig sein eigenes Home-Verzeichnis als root. Es ist jedoch möglich, mit local_root einen alternativen Startpunkt anzugeben Richtlinie. Diese Direktive ist nicht in der Konfigurationsdatei vorhanden, daher müssen wir sie hinzufügen, wenn wir sie verwenden möchten. Um den /srv/ftp einzustellen Verzeichnis als lokales Root-Verzeichnis würden wir beispielsweise schreiben:

local_root=/srv/ftp

Lokale Chroot-Benutzer

Als Sicherheitsmaßnahme ist ein Chroot möglich jeder authentifizierte Benutzer in seinem eigenen Home-Verzeichnis. Um diese Aufgabe zu erfüllen, müssen wir den chroot_local_user verwenden Direktive:

chroot_local_user=YES

Wenn diese Funktion aktiviert ist, ist es möglich, eine Liste von Ausschlüssen anzugeben (eine Liste von Benutzern, die nicht chrooted werden sollen), indem die folgenden Direktiven verwendet werden:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Die erste Anweisung wird benötigt, um die Funktion zu aktivieren, die andere, um den Speicherort der Datei anzugeben, die die Ausschlussliste enthält . Die Datei muss erstellt werden, falls sie noch nicht existiert, sonst schlägt die Anmeldung fehl.

Als Sicherheitsmaßnahme sollte ein Benutzer, der chrooted ist, nicht in der Lage sein, in das oberste Verzeichnis der Chroot zu schreiben. Wenn dies der Fall ist, kann sich ein Benutzer in den neuesten Versionen von vsftpd nicht anmelden, und der Server antwortet mit der folgenden Nachricht:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Dieses Problem kann grundsätzlich auf zwei Arten gelöst werden. Dieser erste besteht offensichtlich darin, die Berechtigungen zu korrigieren , indem Sie dem Benutzer den Schreibzugriff auf das oberste Verzeichnis der Chroot verweigern und ihn nur auf Unterverzeichnisse schreiben lassen.
Die zweite Möglichkeit, das Problem zu lösen, wenn Sie sich nicht um die möglichen Auswirkungen auf die Sicherheit kümmern, ist diese Einschränkung umgehen , indem Sie die folgende Direktive verwenden:

allow_writeable_chroot=YES

Apropos Berechtigungen, es ist wichtig zu bedenken, dass die Standard-Umask für lokale Benutzer auf 077 eingestellt ist . Wenn diese Einstellung als zu restriktiv angesehen wird, ist es möglich, sie mit local_umask zu ändern Richtlinie. Diese Direktive ist in Zeile 35 kommentiert der Konfigurationsdatei:

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

Anmeldung mit virtuellen Benutzern

Eine nette Funktion, die vsftpd bietet, ist die Möglichkeit, sich mit virtuellen Benutzern anzumelden . Ein virtueller Benutzer ist ein Benutzer, der nicht wirklich auf dem System existiert, sondern nur im Kontext der sftpd-Anwendung. Um diese Funktion zu aktivieren, müssen wir die folgende Direktive verwenden:

guest_enable=YES

Wenn die Funktion aktiv ist, werden alle nicht anonymen Anmeldungen (also sogar echte/lokale Benutzer) dem Benutzer zugeordnet, der mit dem guest_username angegeben ist Direktive, die standardmäßig, wie wir bereits gesehen haben, ftp ist .

Der nächste Schritt besteht darin, eine Datei zu erstellen, die die Benutzernamen und Passwörter der virtuellen Benutzer enthält. Um ein gehashtes Passwort zu generieren, können wir openssl verwenden und geben Sie den folgenden Befehl ein:

$ openssl passwd -1
Password:
Verifying - Password:
$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

Das Passwort Befehl von openssl wird verwendet, um gehashte Passwörter (md5) zu generieren. Im obigen Beispiel wurden wir nach dem zu hashenden Passwort und seiner Bestätigung gefragt. Schließlich wird das gehashte Passwort generiert und auf dem Bildschirm angezeigt.

Der Benutzername muss zusammen mit dem Passwort in eine Datei geschrieben werden, sagen wir mal /etc/virtual_users.pwd , im folgenden Format:

username:hashed_password

Angenommen, unser virtueller Benutzer heißt „linuxconfig“, würden wir schreiben:

linuxconfig:$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

Der Vorgang muss für jeden virtuellen Benutzer, den wir konfigurieren möchten, wiederholt werden.

Jetzt müssen wir die pam erstellen Dienst, der von vsftpd verwendet wird, um virtuelle Benutzer zu authentifizieren. Wir nennen die Datei vsftpd_virtual und platzieren Sie es in /etc/pam.d Verzeichnis. Sein Inhalt wird folgender sein:

#%PAM-1.0
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd
account required pam_permit.so

Wie Sie sehen können, haben wir in der ersten Zeile den Pfad der Datei angegeben, die den Benutzernamen und die Passwörter der virtuellen Benutzer enthält. Alles, was wir jetzt tun müssen, ist, vsftpd anzuweisen, diesen pam-„Dienst“ zu verwenden. Wir können dies mit dem pam_service_name tun Direktive:

pam_service_name=vsftpd_virtual

An diesem Punkt können wir die Konfigurationsdatei speichern, den Daemon neu starten und überprüfen, ob wir uns mit dem gerade erstellten virtuellen Benutzer anmelden können.

SSL-Unterstützung für Datenverschlüsselung aktivieren

Standardmäßig ist die SSL-Unterstützung auf vsftpd deaktiviert, sodass übertragene Daten nicht verschlüsselt werden. Um die SSL-Unterstützung zu aktivieren, müssen wir die folgenden Anweisungen verwenden, die sich in den Zeilen 149 befinden bis 151 der Konfigurationsdatei:

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

Die erste Direktive, rsa_cert_file wird verwendet, um den Pfad des RSA-Zertifikats anzugeben, das für SSL-verschlüsselte Verbindungen verwendet werden soll. Der zweite, rsa_private_key , wird stattdessen verwendet, um den Speicherort des privaten RSA-Schlüssels anzugeben. Schließlich das ssl_enable Direktive wird verwendet, um die Verwendung von SSL-Verschlüsselung zu ermöglichen.

Das Beispiel verwendet /etc/ssl/certs/ssl-cert-snakeoil.pem und /etc/ssl/private/ssl-cert-snakeoil.key Dateien, aber Sie möchten mit ziemlicher Sicherheit eine dedizierte verwenden.

Angeben des Portbereichs für den passiven Modus

Der passive FTP-Modus ist die Standardeinstellung bei einer Neuinstallation von vsftpd, aber wenn wir ihn explizit aktivieren möchten, können wir die folgende Direktive verwenden:

# Set to NO if you want to disallow the PASV method of obtaining a data connection
# (passive mode). Default: YES
pasv_enable=YES

Wenn der Server im passiven Modus arbeitet , sendet es eine IP-Adresse und einen Port an den Client, die er auf eine Verbindung überwachen soll. Diese Ports werden standardmäßig zufällig ausgewählt, da wir jedoch eine Firewall auf unserem Server verwenden müssen, müssen wir wissen, welche Ports wir den Datenverkehr vollständig zulassen sollten. Der Bereich der zu verwendenden Ports kann mit pasv_min_port angegeben werden und pasv_max_port Direktiven, zum Beispiel:

# The minimum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling.
pasv_min_port=10090

# The maximum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling. Default: 0 (use any port)
pasv_max_port=10100

Mit der folgenden Konfiguration verwendet der Server einen Bereich von Ports, der von 10090 geht bis 10100 .

Firewall-Setup

Damit unser vsftpd-Server richtig funktioniert, müssen wir Datenverkehr durch die erforderlichen Ports zulassen, einige müssen wir die entsprechenden Regeln für unsere Firewall einrichten. In diesem Tutorial gehe ich von der Verwendung des ufw aus Firewall-Manager (unkomplizierte Firewall).

Der erste Port, durch den Datenverkehr zugelassen werden soll, ist Port 21 , das ist der vom FTP-Protokoll verwendete Standardport:

$ sudo ufw allow in 21/tcp

Als zweites müssen wir eingehenden Datenverkehr über den angegebenen Portbereich zulassen, den wir im vorherigen Abschnitt eingerichtet haben. Um eine Reihe von Ports anzugeben, können wir Folgendes ausführen:

$ sudo ufw allow in 10090:10100/tcp

Schlussfolgerungen

In diesem Artikel haben wir gesehen, wie man vsftpd unter Debian 10 Buster installiert und konfiguriert. Wir haben gesehen, wie man die anonyme Nutzung und die Nutzung durch lokale Benutzer einrichtet und wie wir die Vorteile der virtuellen Benutzer nutzen können vom Dienst bereitgestellte Funktion. Da FTP keine Datenverschlüsselung bietet, haben wir gesehen, wie die SSL-Unterstützung aktiviert und schließlich die Firewall so eingerichtet wird, dass eingehender Datenverkehr über die erforderlichen Ports zugelassen wird. Eine vollständige Liste der möglichen Anweisungen, die in der vsftpd-Konfigurationsdatei verwendet werden können, finden Sie in der vsftpd.conf Manpage (VSFTPD.CONF(5)). Möchten Sie wissen, wie Sie programmgesteuert mit einem FTP-Server arbeiten? Sehen Sie sich unseren Artikel zum Herstellen einer Verbindung zu einem FTP-Server mit Python an.


Debian
  1. So installieren Sie R unter Debian 9

  2. So richten Sie einen FTP-Server mit VSFTPD unter Debian 9 ein

  3. So installieren Sie R unter Debian 10

  4. So richten Sie den Rsyslog-Server unter Debian 11 ein

  5. Wie richte ich VSFTPD unter CentOS 7.x ein?

So installieren Sie den vsftpd-Server unter Debian 11

So richten Sie die UFW-Firewall unter Debian 10 ein

So installieren Sie Go unter Debian 10

So richten Sie die UFW-Firewall unter Debian 11 ein

So richten Sie den OpenLDAP-Server unter Debian 10 ein

So installieren Sie Go unter Debian