FTP (File Transfer Protocol) ist ein relativ altes und am häufigsten verwendetes Standardnetzwerkprotokoll zum Hochladen/Herunterladen von Dateien zwischen zwei Computern über ein Netzwerk. Allerdings FTP durch seine ursprüngliche unsicher, weil es überträgt Daten zusammen mit Benutzeranmeldeinformationen (Benutzername und Passwort) ohne Verschlüsselung.
Warnung: Wenn Sie FTP verwenden möchten, sollten Sie die FTP-Verbindung mit SSL/TLS konfigurieren (wird im nächsten Artikel behandelt). Andernfalls ist es immer besser, sicheres FTP wie SFTP zu verwenden.,
Empfohlene Lektüre: So installieren und sichern Sie FTP-Server in CentOS 7
In diesem Tutorial zeigen wir, wie Sie einen FTP-Server (VSFTPD in vollem Umfang „Very Secure FTP Daemon“) in Ubuntu installieren, konfigurieren und sichern, um eine leistungsstarke Sicherheit gegen FTP-Schwachstellen zu haben.
Schritt 1: Installieren des VsFTP-Servers in Ubuntu
1. Zuerst müssen wir die Quellenliste des Systempakets 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 manuell für die mittlere Zeit starten und ihn auch beim nächsten Systemstart automatisch starten lassen:
3., Wenn Sie die UFW-Firewall auf dem Server aktiviert haben ( standardmäßig nicht aktiviert), müssen Sie die Ports 21 und 20 öffnen, auf denen die FTP-Daemons abhören, um den Zugriff auf FTP-Dienste von Remotecomputern zuzulassen, und die neuen Firewallregeln wie folgt hinzufügen:
$ 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 wie folgt:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
als Nächstes öffnen wir die vsftpd config-Datei.
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
Fügen Sie die folgenden Optionen mit diesen Werten hinzu/ändern Sie sie:
anonymous_enable=NO # disable anonymous loginlocal_enable=YES# permit local loginswrite_enable=YES# enable FTP commands which change the filesystemlocal_umask=022 # value of umask for file creation for local usersdirmessage_enable=YES # enable showing of messages when users first enter a new directoryxferlog_enable=YES# a log file will be maintained detailing uploads and downloadsconnect_from_port_20=YES # use port 20 (ftp-data) on the server machine for PORT style connectionsxferlog_std_format=YES # keep standard log file formatlisten=NO # prevent vsftpd from running in standalone modelisten_ipv6=YES # vsftpd will listen on an IPv6 socket instead of an IPv4 onepam_service_name=vsftpd # name of the PAM service vsftpd will useuserlist_enable=YES # enable vsftpd to load a list of usernamestcp_wrappers=YES # turn on tcp wrappers
5. Konfigurieren Sie nun VSFTPD, um FTP-Zugriff auf Benutzer basierend auf der Benutzerlistendatei/etc /vsftpd zuzulassen/zu verweigern.userlist.
Beachten Sie, dass Benutzer standardmäßig in userlist_file=/etc/vsftpd aufgeführt sind.userlist wird der Anmeldezugriff mit der Option userlist_deny=YES
verweigert, 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 aufgeführt ist.userlist darf sich beim FTP-Server anmelden.
Wichtig: Wenn sich Benutzer beim FTP-Server anmelden, befinden sie sich in einem Chroot-Gefängnis, dies ist das lokale Stammverzeichnis, das nur für die FTP-Sitzung als Heimatverzeichnis fungiert.
Als nächstes werden wir uns zwei mögliche Szenarien ansehen, wie das chrooted Jail (Local Root) – Verzeichnis festgelegt wird, wie unten erläutert.
6., Zu diesem Zeitpunkt fügen wir diese beiden folgenden Optionen hinzu/ändern/kommentieren Sie sie, um FTP-Benutzer auf ihre Home-Verzeichnisse zu beschränken.
chroot_local_user=YESallow_writeable_chroot=YES
Die Option chroot_local_user=YES
bedeutet, dass lokale Benutzer nach der Anmeldung standardmäßig in einem Chroot-Gefängnis untergebracht werden.
Und wir müssen auch verstehen, dass VSFTPD aus Sicherheitsgründen nicht zulässt, dass das Chroot-Jailverzeichnis 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 es., Dann müssen wir die VSFTPD-Dienste neu starten, damit die obigen Ä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 einen FTP-Benutzer mit dem Befehl useradd wie folgt 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 auflisten.userlist mit dem Befehl echo, gefolgt von tee-Befehl wie folgt:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist$ cat /etc/vsftpd.userlist
8. Jetzt ist es an der Zeit zu testen, ob unsere obigen Konfigurationen wie erforderlich funktionieren., Wir beginnen mit dem Testen anonymer Anmeldungen; Aus der folgenden Ausgabe geht deutlich hervor, dass anonyme Anmeldungen auf dem FTP-Server nicht zulässig sind:
9. Als nächstes testen wir, ob ein Benutzer nicht in der Datei /etc/vsftpd aufgeführt ist.userlist wird die Berechtigung zur Anmeldung erteilt, was aus der folgenden Ausgabe nicht zutrifft:
10. Jetzt führen wir einen letzten Test durch, um festzustellen, ob ein Benutzer in der Datei /etc/vsftpd aufgeführt ist.userlist, wird nach der Anmeldung tatsächlich in seinem Home-Verzeichnis abgelegt., Und das gilt aus der folgenden Ausgabe:
Warnung: Das Festlegen der Option allow_writeable_chroot=YES
kann so gefährlich sein, dass es mögliche Sicherheitsprobleme hat, insbesondere wenn die Benutzer erlaubnis, oder mehr so, Shell-Zugriff. Verwenden Sie es nur, wenn Sie genau wissen, was Sie tun.
Wir sollten beachten, dass diese Auswirkungen auf die Sicherheit nicht spezifisch für VSFTPD sind, sondern sich auch auf alle anderen FTP-Daemons auswirken können, die anbieten, lokale Benutzer in Chroot-Jails zu versetzen.,
Aus diesem Grund werden wir im folgenden Abschnitt eine sicherere Methode zum Festlegen eines anderen nicht beschreibbaren lokalen Stammverzeichnisses für einen Benutzer erläutern.
Schritt 4: Konfigurieren Sie FTP – Benutzer-Home-Verzeichnisse in Ubuntu
11. Öffnen Sie nun die VSFTPD-Konfigurationsdatei noch einmal.,
$ sudo vi /etc/vsftpd.confOR$ sudo nano /etc/vsftpd.conf
und kommentieren Sie die unsichere Option mit dem Zeichen #
wie unten gezeigt:
#allow_writeable_chroot=YES
Erstellen Sie als nächstes das alternative lokale Stammverzeichnis für den Benutzer (aaronkilik, Ihre ist möglicherweise nicht dasselbe) und legen Sie die erforderlichen Berechtigungen fest, indem Sie die Schreibberechtigungen für alle anderen Benutzer in diesem 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 ein Verzeichnis unter dem lokalen Stammverzeichnis mit den entsprechenden Berechtigungen, in dem der Benutzer seine Dateien speichert:
Fügen Sie anschließend die folgenden Optionen in der VSFTPD-Konfigurationsdatei mit den entsprechenden Werten hinzu/ändern Sie sie:
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. Führen wir nun eine letzte Überprüfung durch und stellen Sie sicher, dass das lokale Stammverzeichnis des Benutzers das FTP-Verzeichnis ist, das wir in seinem Home-Verzeichnis erstellt haben.,