Website-Suche

So installieren, konfigurieren und sichern Sie den FTP-Server in CentOS 7 – [Umfassende Anleitung]


FTP (File Transfer Protocol) ist ein traditionelles und weit verbreitetes Standardtool zum Übertragen von Dateien zwischen einem Server und Clients über ein Netzwerk, insbesondere dort, wo keine Authentifizierung erforderlich ist (anonyme Benutzer sind möglich). um eine Verbindung zu einem Server herzustellen). Wir müssen verstehen, dass FTP standardmäßig unsicher ist, da es Benutzeranmeldeinformationen und Daten unverschlüsselt überträgt.

In dieser Anleitung beschreiben wir die Schritte zum Installieren, Konfigurieren und Sichern eines FTP-Servers (VSFTPD steht für „Very Secure FTP Daemon“) in CentOS/RHEL 7- und Fedora-Distributionen.

Beachten Sie, dass alle Befehle in diesem Handbuch als root ausgeführt werden. Falls Sie den Server nicht mit dem root-Konto betreiben, verwenden Sie den Befehl sudo, um Root-Rechte zu erhalten.

Schritt 1: FTP-Server installieren

1. Die Installation des vsftpd-Servers ist unkompliziert. Führen Sie einfach den folgenden Befehl im Terminal aus.

yum install vsftpd

2. Nach Abschluss der Installation wird der Dienst zunächst deaktiviert, daher müssen wir ihn vorerst manuell starten und ihn so aktivieren, dass er auch beim nächsten Systemstart automatisch startet:

systemctl start vsftpd
systemctl enable vsftpd

3. Um den Zugriff auf FTP-Dienste von externen Systemen zu ermöglichen, müssen wir als Nächstes Port 21 öffnen, an dem die FTP-Daemons wie folgt lauschen:

firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-service=ftp
firewall-cmd --reload

Schritt 2: FTP-Server konfigurieren

4. Nun gehen wir dazu über, einige Konfigurationen zur Einrichtung und Sicherung unseres FTP-Servers vorzunehmen. Beginnen wir mit der Erstellung einer Sicherungskopie der ursprünglichen Konfigurationsdatei /etc/vsftpd/vsftpd.conf :

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

Öffnen Sie als Nächstes die Konfigurationsdatei oben und legen Sie die folgenden Optionen mit den entsprechenden Werten fest:

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 FTP, um Benutzern basierend auf der Benutzerlistendatei /etc/vsftpd.userlist den FTP-Zugriff zu erlauben/verweigern.

Standardmäßig wird Benutzern, die in userlist_file=/etc/vsftpd.userlist aufgeführt sind, der Anmeldezugriff verweigert, wenn die Option userlist_deny auf JA gesetzt ist, wenn userlist_enable=JA.

Allerdings ändert userlist_deny=NO die Einstellung, was bedeutet, dass nur Benutzer, die explizit in userlist_file=/etc/vsftpd.userlist aufgeführt sind, sich anmelden dürfen.

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   

Das ist aber noch nicht alles: Wenn sich Benutzer beim FTP-Server anmelden, werden sie in einem chroot-geschützten Gefängnis abgelegt. Dabei handelt es sich um das lokale Root-Verzeichnis, das nur für die FTP-Sitzung als Home-Verzeichnis fungiert.

Als Nächstes betrachten wir zwei mögliche Szenarien, wie FTP-Benutzer in Home-Verzeichnisse (lokales Root-Verzeichnis) für FTP-Benutzer chrooten, wie unten erläutert.

6. Fügen Sie nun die beiden folgenden Optionen hinzu, um FTP-Benutzer auf ihre Home-Verzeichnisse zu beschränken.

chroot_local_user=YES
allow_writeable_chroot=YES

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

Außerdem lässt vsftpd aus Sicherheitsgründen standardmäßig nicht zu, dass das Chroot-Gefängnisverzeichnis beschreibbar ist. Wir können jedoch die Option allow_writeable_chroot=YES verwenden, um diese Einstellung zu überschreiben.

Speichern Sie die Datei und schließen Sie sie.

Sichern des FTP-Servers mit SELinux

7. Nun legen wir unten den booleschen Wert SELinux fest, damit FTP Dateien im Home-Verzeichnis eines Benutzers lesen kann. Beachten Sie, dass dies ursprünglich mit dem folgenden Befehl erfolgte:

setsebool -P ftp_home_dir on

Allerdings wurde die ftp_home_dir-Direktive standardmäßig deaktiviert, wie in diesem Fehlerbericht erläutert: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Jetzt verwenden wir den Befehl semanage, um die SELinux-Regel so festzulegen, dass FTP das Home-Verzeichnis des Benutzers lesen/schreiben kann.

semanage boolean -m ftpd_full_access --on

An diesem Punkt müssen wir vsftpd neu starten, um alle oben vorgenommenen Änderungen zu übernehmen:

systemctl restart vsftpd

Schritt 4: FTP-Server testen

8. Jetzt testen wir den FTP-Server, indem wir mit dem Befehl useradd einen FTP-Benutzer erstellen.

useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
passwd ravi

Anschließend müssen wir den Benutzer ravi mit dem Echo-Befehl wie folgt zur Datei /etc/vsftpd.userlist hinzufügen:

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

9. Jetzt ist es an der Zeit zu testen, ob unsere oben genannten Einstellungen korrekt funktionieren. Beginnen wir mit dem Testen anonymer Anmeldungen. Aus dem Screenshot unten können wir ersehen, dass anonyme Anmeldungen nicht zulässig sind:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

10. Testen wir auch, ob einem Benutzer, der nicht in der Datei /etc/vsftpd.userlist aufgeführt ist, die Berechtigung zur Anmeldung erteilt wird, was im Screenshot nicht der Fall ist unten:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. Führen Sie nun eine abschließende Prüfung durch, ob ein in der Datei /etc/vsftpd.userlist aufgeführter Benutzer nach der Anmeldung tatsächlich in seinem Home-Verzeichnis abgelegt wird:

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

Aktivieren Sie diese Option nur, wenn Sie genau wissen, was Sie tun. Es ist wichtig zu beachten, dass diese Sicherheitsauswirkungen nicht vsftpd-spezifisch sind, sondern für alle FTP-Daemons gelten, die auch anbieten, lokale Benutzer in Chroot-Gefängnisse zu stecken.

Daher werden wir uns im nächsten Abschnitt mit einer sichereren Möglichkeit befassen, ein anderes nicht beschreibbares lokales Stammverzeichnis festzulegen.

Schritt 5: Konfigurieren Sie verschiedene FTP-Benutzer-Home-Verzeichnisse

12. Öffnen Sie die vsftpd-Konfigurationsdatei erneut und kommentieren Sie zunächst die unsichere Option unten:

#allow_writeable_chroot=YES

Erstellen Sie dann das alternative lokale Stammverzeichnis für den Benutzer (ravi, Ihres ist wahrscheinlich anders) und entfernen Sie die Schreibberechtigungen für alle Benutzer für dieses Verzeichnis:

mkdir /home/ravi/ftp
chown nobody:nobody /home/ravi/ftp
chmod a-w /home/ravi/ftp

13. Erstellen Sie als Nächstes ein Verzeichnis im lokalen Stammverzeichnis, in dem der Benutzer seine Dateien speichert:

mkdir /home/ravi/ftp/files
chown ravi:ravi  /home/ravi/ftp/files
chmod 0700 /home/ravi/ftp/files/

Fügen Sie dann die folgenden Optionen in der vsftpd-Konfigurationsdatei hinzu bzw. ändern Sie sie mit diesen Werten:

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. Starten wir den Dienst noch einmal mit den neuen Einstellungen neu:

systemctl restart vsftpd

14. Führen Sie nun noch einmal einen letzten Test durch und stellen Sie sicher, dass das lokale Stammverzeichnis des Benutzers das FTP-Verzeichnis ist, das wir in seinem Home-Verzeichnis erstellt haben.

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
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! In diesem Artikel haben wir beschrieben, wie Sie einen FTP-Server in CentOS 7 installieren, konfigurieren und sichern. Nutzen Sie den Kommentarbereich unten, um uns bezüglich dieser Anleitung zu schreiben oder nützliche Informationen zu diesem Thema mitzuteilen.

Empfohlene Lektüre: Installieren Sie ProFTPD Server unter RHEL/CentOS 7

Im nächsten Artikel zeigen wir Ihnen auch, wie Sie einen FTP-Server mithilfe von SSL/TLS-Verbindungen in CentOS 7 sichern. Bleiben Sie bis dahin mit TecMint verbunden.