Website-Suche

So installieren und konfigurieren Sie den FTP-Server in Ubuntu


FTP (File Transfer Protocol) ist ein relativ altes und am häufigsten verwendetes Standard-Netzwerkprotokoll, das zum Hoch-/Herunterladen von Dateien zwischen zwei Computern über ein Netzwerk verwendet wird. Allerdings ist FTP ursprünglich unsicher, da es Daten zusammen mit Benutzeranmeldeinformationen (Benutzername und Passwort) unverschlüsselt überträgt.

Warnung: Wenn Sie FTP verwenden möchten, sollten Sie die Konfiguration einer FTP-Verbindung mit SSL/TLS in Betracht ziehen (wird behandelt in nächster Artikel). Ansonsten ist es immer besser, sicheres FTP wie SFTP zu verwenden.

Empfohlene Lektüre: So installieren und sichern Sie den FTP-Server in CentOS 7

In diesem Tutorial zeigen wir, wie man einen FTP-Server (VSFTPD im vollständigen Wortlaut „Very Secure FTP Daemon“) installiert, konfiguriert und sichert Ubuntu verfügt über einen leistungsstarken Schutz gegen FTP-Schwachstellen.

Schritt 1: VsFTP-Server in Ubuntu installieren

1. Zuerst müssen wir die Liste der Systempaketquellen aktualisieren und dann das VSFTPD-Binärpaket wie folgt installieren:

sudo apt-get update
sudo apt-get install vsftpd

2. Sobald die Installation abgeschlossen ist, wird der Dienst zunächst deaktiviert. Daher müssen wir ihn in der Zwischenzeit manuell starten und ihn außerdem so aktivieren, dass er beim nächsten Systemstart automatisch startet:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Wenn Sie als Nächstes die UFW-Firewall auf dem Server aktiviert haben (diese ist standardmäßig nicht aktiviert), müssen Sie die Ports 21 und 20 öffnen wo die FTP-Daemons lauschen, um den Zugriff auf FTP-Dienste von Remote-Rechnern aus zu ermöglichen, fügen Sie dann die neuen Firewall-Regeln wie folgt hinzu:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Schritt 2: Konfigurieren und Sichern des VsFTP-Servers in Ubuntu

4. Lassen Sie uns nun einige Konfigurationen durchführen, um unseren FTP-Server einzurichten und zu sichern. Zuerst erstellen wir eine Sicherungskopie der ursprünglichen Konfigurationsdatei /etc/vsftpd/vsftpd.conf Also:

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

Als nächstes öffnen wir die vsftpd-Konfigurationsdatei.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Fügen Sie die folgenden Optionen mit diesen Werten hinzu bzw. ändern Sie sie:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Konfigurieren Sie nun VSFTPD, um Benutzern basierend auf der Benutzerlistendatei /etc/vsftpd.userlist den FTP-Zugriff zu erlauben/verweigern.

Beachten Sie, dass Benutzern, die in userlist_file=/etc/vsftpd.userlist aufgeführt sind, standardmäßig der Anmeldezugriff mit der Option userlist_deny=YES verweigert wird, wenn userlist_enable=YES .

Die Option userlist_deny=NO verdreht jedoch die Bedeutung der Standardeinstellung, sodass nur Benutzer, deren Benutzername explizit in userlist_file=/etc/vsftpd.userlist aufgeführt ist, dazu berechtigt sind Melden Sie sich beim FTP-Server an.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Wichtig: Wenn sich Benutzer beim FTP-Server anmelden, werden sie in einem chroot-Jail abgelegt. Dies ist das lokale Stammverzeichnis, das als Home-Verzeichnis für die FTP-Sitzung fungiert nur.

Als Nächstes werden wir uns zwei mögliche Szenarien zum Festlegen des chrooted-Jail-Verzeichnisses (lokales Root-Verzeichnis) ansehen, wie unten erläutert.

6. An dieser Stelle fügen wir die beiden folgenden Optionen hinzu, ändern sie bzw. entfernen ihre Kommentare, um FTP-Benutzer auf ihre Home-Verzeichnisse zu beschränken.

chroot_local_user=YES
allow_writeable_chroot=YES

Die Option chroot_local_user=YES bedeutet vor allem, dass lokale Benutzer nach der Anmeldung standardmäßig in einem Chroot-Gefängnis, ihrem Home-Verzeichnis, abgelegt werden.

Und wir müssen auch verstehen, dass VSFTPD aus Sicherheitsgründen standardmäßig nicht zulässt, dass das Chroot-Gefängnisverzeichnis beschreibbar ist. Wir können jedoch die Option allow_writeable_chroot=YES verwenden, um diese Einstellung zu deaktivieren.

Speichern Sie die Datei und schließen Sie sie. Dann müssen wir die VSFTPD-Dienste neu starten, damit die oben genannten Änderungen wirksam werden:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Schritt 3: Testen des VsFTP-Servers in Ubuntu

7. Jetzt testen wir den FTP-Server, indem wir wie folgt einen FTP-Benutzer mit dem Befehl useradd erstellen:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Dann müssen wir den Benutzer aaronkilik explizit in der Datei /etc/vsftpd.userlist mit dem echo-Befehl und dem tee-Befehl wie folgt auflisten:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Jetzt ist es an der Zeit zu testen, ob unsere oben genannten Konfigurationen wie erforderlich funktionieren. Wir beginnen mit dem Testen anonymer Anmeldungen. Aus der folgenden Ausgabe können wir deutlich erkennen, dass anonyme Anmeldungen auf dem FTP-Server nicht zulässig sind:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Als Nächstes testen wir, ob einem Benutzer, der nicht in der Datei /etc/vsftpd.userlist aufgeführt ist, die Berechtigung zur Anmeldung erteilt wird, was aus der folgenden Ausgabe nicht zutrifft :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Nun führen wir einen abschließenden Test durch, um festzustellen, ob ein Benutzer, der in der Datei /etc/vsftpd.userlist aufgeführt ist, danach tatsächlich in seinem Home-Verzeichnis abgelegt wird Anmeldung. Und das trifft auch auf die folgende Ausgabe zu:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Warnung: Das Setzen der Option allow_writeable_chroot=YES kann so gefährlich sein, dass es möglicherweise Auswirkungen auf die Sicherheit hat, insbesondere wenn die Benutzer über Upload-Berechtigungen verfügen, oder mehr noch, Shell-Zugriff. Benutzen Sie es nur, wenn Sie genau wissen, was Sie tun.

Wir sollten beachten, dass diese Sicherheitsauswirkungen nicht spezifisch für VSFTPD sind, sondern auch alle anderen FTP-Daemons betreffen können, die anbieten, lokale Benutzer in Chroot-Gefängnisse zu stecken.

Aus diesem Grund erklären wir im folgenden Abschnitt eine sicherere Methode zum Festlegen eines anderen nicht beschreibbaren lokalen Stammverzeichnisses für einen Benutzer.

Schritt 4: Konfigurieren Sie FTP-Benutzer-Home-Verzeichnisse in Ubuntu

11. Öffnen Sie nun die VSFTPD-Konfigurationsdatei noch einmal.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

und kommentieren Sie die unsichere Option mit dem Zeichen # aus, wie unten gezeigt:

#allow_writeable_chroot=YES

Erstellen Sie als Nächstes das alternative lokale Stammverzeichnis für den Benutzer (aaronkilik, Ihr Verzeichnis ist möglicherweise nicht dasselbe) und legen Sie die erforderlichen Berechtigungen fest, indem Sie die Schreibberechtigungen für alle anderen Benutzer für dieses Verzeichnis deaktivieren:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Erstellen Sie dann im lokalen Stammverzeichnis ein Verzeichnis mit den entsprechenden Berechtigungen, in dem der Benutzer seine Dateien speichert:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Fügen Sie anschließend die folgenden Optionen in der VSFTPD-Konfigurationsdatei mit den entsprechenden Werten hinzu bzw. ändern Sie sie:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Speichern Sie die Datei und schließen Sie sie. Und starten Sie die VSFTPD-Dienste mit den letzten Einstellungen neu:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Jetzt führen wir eine abschließende Prüfung durch und stellen sicher, dass das lokale Stammverzeichnis des Benutzers das FTP-Verzeichnis ist, das wir in seinem Home-Verzeichnis erstellt haben.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Das ist es! Denken Sie daran, Ihre Meinung zu diesem Leitfaden über das Kommentarformular unten mitzuteilen oder uns möglicherweise wichtige Informationen zum Thema mitzuteilen.

Verpassen Sie nicht zuletzt unseren nächsten Artikel, in dem wir beschreiben, wie Sie einen FTP-Server mithilfe von SSL/TLS-Verbindungen in Ubuntu 16.04/16.10 sichern. Bleiben Sie bis dahin immer auf dem Laufenden bei TecMint.