Einzurichten FTP Auf einem Linux-Server vsftpd installieren und konfigurieren, einen eingeschränkten Bereich erstellen FTP Benutzer, Firewall-Ports öffnen (21 und ein passiver Bereich), optionales TLS für die Verschlüsselung aktivieren und mit einem testen FTP Dieser Leitfaden enthält Schritt-für-Schritt-Anweisungen für Ubuntu/Debian und RHEL/CentOS/AlmaLinux mit sicheren, produktionsreifen Einstellungen.
Wenn Sie sich fragen, wie Sie es einrichten FTP Auf einem Linux-Server sind Sie hier genau richtig. In diesem Tutorial führe ich Sie durch den Prozess. Installation und Härtung eines FTP Server mit vsftpd, Öffnen der Firewall und SELinux-Regeln, Aktivieren FTPS-Verschlüsselung und Tests mit FileZilla oder lftp. Der Prozess ist anfängerfreundlich, folgt aber den Best Practices für Unternehmensumgebungen, die ich auch dort anwende.
Bevor Sie beginnen: FTP vs SFTP und was Sie wählen sollten
FTP ist ein veralteter Dateitransfer Protokoll, das Daten im Klartext sendet. SFTP (Teil von Open)SSH) verschlüsselt den Datenverkehr Ende-zu-Ende und wird im Allgemeinen aus Sicherheitsgründen bevorzugt. Wenn Sie unbedingt die klassische Methode verwenden müssen. FTP Aus Gründen der Kompatibilität sollte TLS immer aktiviert sein (FTPS), um Anmeldeinformationen und Daten zu verschlüsseln. Dieser Leitfaden konzentriert sich auf vsftpd (sehr sicher). FTP Daemon) mit optionalem TLS.
Was wir verwenden werden
Wir werden vsftpd einsetzen, da es schnell, stabil und weit verbreitet ist. Die Schritte umfassen Ubuntu/Debian und RHEL/CentOS/AlmaLinux. Wir konfigurieren den passiven Modus, Chroot-Umgebungen, Benutzer-Zulassungslisten und (optional) FTPSo können Sie Sicherheitsprüfungen bestehen und reibungslos mit GUI-Clients wie FileZilla arbeiten.
Voraussetzungen:
- Ein Linux-Server (Ubuntu 22.04+/20.04+, Debian 11/12, AlmaLinux/RHEL/CentOS 8+)
- Root- oder Sudo-Berechtigungen
- Firewall-Zugriff (UFW oder firewalld) und, auf RHEL-basierten Systemen, SELinux-Tools
- Eine Domäne oder IP-Adresse, über die sich Clients verbinden können
Schritt 1: vsftpd installieren
Ubuntu / Debian
sudo apt update
sudo apt install -y vsftpd
sudo systemctl enable --now vsftpd
sudo systemctl status vsftpdRHEL/CentOS/AlmaLinux
sudo dnf install -y vsftpd policycoreutils-python-utils
sudo systemctl enable --now vsftpd
sudo systemctl status vsftpdWenn der Dienst aktiv ist, können Sie mit der Konfiguration fortfahren.
Schritt 2: Sichern und Absichern der vsftpd-Konfiguration
Sichern Sie die Standardkonfiguration und öffnen Sie sie zur Bearbeitung:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.confVerwenden Sie diese sicheren, produktionsreifen Einstellungen. Fügen Sie die folgenden Zeilen hinzu oder aktualisieren Sie sie:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
# Chroot users into their home
chroot_local_user=YES
allow_writeable_chroot=YES
# Passive mode for firewalls/NAT
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
# Allowlist specific users only
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
# Improve security hygiene
pam_service_name=vsftpd
seccomp_sandbox=YESSpeichern und neu starten:
sudo systemctl restart vsftpdSchritt 3: Erstellen Sie eine eingeschränkte FTP Mitglied
Erstellen Sie einen dedizierten Benutzer und verhindern Sie den Shell-Zugriff. Wir fügen außerdem `nologin` zu `/etc/shells` hinzu, damit PAM dies zulässt. FTP Anmeldungen mit dieser Shell.
# Create user and set password
sudo adduser ftpuser
sudo passwd ftpuser
# Restrict shell access
sudo usermod -s /usr/sbin/nologin ftpuser
echo /usr/sbin/nologin | sudo tee -a /etc/shells
# Optional: create a dedicated FTP directory
sudo mkdir -p /home/ftpuser/ftp
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftpErlauben Sie dem Benutzer nun die Anmeldung über die Zulassungsliste:
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
sudo systemctl restart vsftpdSchritt 4: Firewall-Ports öffnen (FTP + Passive Reichweite)
UFW (Ubuntu/Debian)
sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp
sudo ufw reload
sudo ufw statusfirewalld (RHEL/CentOS/AlmaLinux)
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=40000-40100/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-allDie Verwendung des passiven Modus vermeidet komplexe NAT-Traversals und wird für Cloud-Server hinter Sicherheitsgruppen oder Load Balancern empfohlen.
Schritt 5: SELinux konfigurieren für FTP (Nur für RHEL-basierte Systeme)
Aktivieren Sie den Zugriff auf das Home-Verzeichnis und den passiven Modus; teilen Sie SELinux anschließend Ihren passiven Portbereich mit:
sudo setsebool -P ftp_home_dir 1
sudo setsebool -P ftpd_use_passive_mode 1
sudo semanage port -a -t ftp_port_t -p tcp 40000-40100 ||
sudo semanage port -m -t ftp_port_t -p tcp 40000-40100Wenn semanage Falls es nicht gefunden wird, installieren Sie das Paket policycoreutils-python-utils (wie bereits oben beschrieben).
Schritt 6: TLS aktivieren/FTPS-Verschlüsselung (empfohlen)
Verschlüsseln FTP (FTPS) schützt Anmeldeinformationen und Daten während der Übertragung. Generieren Sie ein selbstsigniertes Zertifikat oder verwenden Sie ein gültiges Zertifikat Ihrer Zertifizierungsstelle.
# Generate a self-signed cert (valid 3 years)
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048
-keyout /etc/ssl/private/vsftpd.key
-out /etc/ssl/certs/vsftpd.crt
-subj "/CN=$(hostname -f)"
# Set permissions
sudo chmod 600 /etc/ssl/private/vsftpd.keyBearbeiten Sie die Datei vsftpd.conf und fügen Sie Folgendes hinzu:
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
# Harden TLS
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
require_ssl_reuse=NO
ssl_ciphers=HIGHStarten Sie den Dienst neu:
sudo systemctl restart vsftpdBei Clients wie FileZilla wählen Sie „FTP über TLS (explizit)“, um Anmeldungen im Klartext zu vermeiden.
Schritt 7: Testen Sie Ihre FTP Server
Befehlszeilentest
# Install lftp (recommended)
sudo apt install -y lftp # Ubuntu/Debian
sudo dnf install -y lftp # RHEL/CentOS/AlmaLinux
# Connect (replace server_ip or domain)
lftp -u ftpuser ftp://server_ip
# With FTPS:
lftp -u ftpuser ftps://server_ip
# If certificate is self-signed:
set ssl:verify-certificate noGUI-Test (FileZilla)
- Host: Ihre Server-IP oder Domain
- Protokoll: FTP - wenn FTPS aktiviert, wählen Sie „FTP — TLS (explizit)”
- Hafen: 21
- Verschlüsselung: Erfordert explizite FTP über TLS (empfohlen)
- Anmeldetyp: Normal, Benutzer: ftpuser, Passwort: Ihr Passwort
Häufige Fehlerbehebung FTP Fehler
- 530 Anmeldefehler: Stellen Sie sicher, dass der Benutzer angemeldet ist.
/etc/vsftpd.userlistDas Passwort ist korrekt, und/usr/sbin/nologinist in aufgeführt/etc/shells. - 500 OOPS: Ausführung mit beschreibbarem Root-Verzeichnis wird verweigert: Beibehalten
allow_writeable_chroot=YESoder das Chroot-Verzeichnis des Benutzers nicht beschreibbar machen (und einen beschreibbaren Unterordner verwenden). - Zeitüberschreitung der Verbindung: Offener Port 21 und passive Ports (40000–40100). Überprüfen Sie die Cloud-Sicherheitsgruppen und die lokale Firewall.
- TLS-Handshake/GnuTLS -15: Hinzufügen
require_ssl_reuse=NOinvsftpd.confund neu starten. - RHEL-basierte SELinux-Verweigerungen: Aktivieren
ftp_home_dir,ftpd_use_passive_modeund passive Ports zuweisen mitsemanage.
Bewährte Methoden, um Ihre FTP Server sicher
- Bevorzugen SFTP or FTPS: Vermeiden Sie einfache FTP Einloggen, wann immer möglich.
- Benutzer einschränken: Verwenden
userlist_enable=YESund nur bestimmte Konten zulassen. - Chroot-Benutzer: Verhindern Sie die seitliche Ausbreitung, indem Sie die Benutzer auf ihre Home-Verzeichnisse beschränken.
- Passwörter absichern: Strenge Passwortrichtlinien durchsetzen und MFA auf Anwendungsebene in Betracht ziehen.
- Begrenzung der Exposition: Nur die erforderlichen passiven Portbereiche öffnen; weite Bereiche vermeiden.
- Überwachungsprotokolle: Prüfen
/var/log/vsftpd.logund Systemprotokolle auf verdächtige Aktivitäten überprüfen. - Nutzen Sie Fail2ban: Fügen Sie ein vsftpd-Jail hinzu, um Brute-Force-Angriffe zu blockieren.
- Automatisierte Datensicherung: Regelmäßige Datensicherungen erstellen FTP Inhalte auf externen Speicher auslagern.
Schnelle Alternative: Verwenden Sie SFTP (In Open integriert)SSH)
In vielen Fällen, SFTP ist einfacher und sicherer. Es ist normalerweise Standardmäßig aktiviert mit SSHErstellen Sie einen Benutzer und verbinden Sie sich mit einem SFTP Der Client läuft auf Port 22. Sie können einen chroot-Zugriff durchführen. SFTP-nur Benutzer durch Bearbeiten /etc/ssh/sshd_config mit einem Match Blockieren und Neustarten sshdWenn strenge Compliance-Vorgaben oder veraltete Software erforderlich sind FTP, bleiben bei FTPS.
Häufig gestellte Fragen: So richten Sie es ein FTP auf einem Linux-Server
Is FTP or SFTP Besser geeignet für Linux-Server?
SFTP ist aus Sicherheitsgründen besser, weil es alles verschlüsselt. SSHWenn Sie es unbedingt verwenden müssen FTP Aus Gründen der Kompatibilität verwenden Sie FTPS(FTP (über TLS), sodass Anmeldeinformationen und Dateien nicht im Klartext offengelegt werden. Die meisten modernen Clients unterstützen dies. SFTP und FTPS.
Welche FTP Welchen Server sollte ich unter Ubuntu oder CentOS verwenden?
vsftpd ist aufgrund seines Fokus auf Sicherheit und Stabilität die gängigste Wahl. Alternative Server sind beispielsweise Pro.FTPD und Rein-FTPd, aber vsftpd ist weit verbreitet, einfach abzusichern und wird von den meisten Distributionen unterstützt.
Wie behebe ich den Fehler „500 OOPS: vsftpd: verweigert die Ausführung mit beschreibbarem Root-Verzeichnis“?
Entweder Satz allow_writeable_chroot=YES in /etc/vsftpd.conf oder das chroot-Verzeichnis nicht beschreibbar lassen und ein beschreibbares Unterverzeichnis erstellen (zum Beispiel, /home/ftpuser/ftp/uploadStarten Sie anschließend vsftpd neu.
Welche Firewall-Ports werden benötigt für FTP?
Öffnen Sie TCP 21 für die Steuerung und einen passiven Adressbereich (üblicherweise 40000–40100). Auf RHEL-basierten Systemen mit SELinux muss der passive Adressbereich zusätzlich dem entsprechenden Port zugeordnet werden. ftp_port_t tippe mit semanage und aktivieren ftpd_use_passive_mode.
Wie aktiviere ich? FTP über TLS (FTPS) auf vsftpd?
Generieren Sie ein Zertifikat und fügen Sie es dann hinzu. ssl_enable=YES, einstellen rsa_cert_file und rsa_private_key_filedeaktivieren SSLv2/3 und starten Sie vsftpd neu. Wählen Sie in Ihrem Client „Explizite Anforderung“ aus. FTP über TLS.“ Dadurch werden Anmeldeinformationen und Daten während der Übertragung gesichert.
Fazit
Sie wissen nun, wie Sie es einrichten FTP Auf einem Linux-Server die richtige Vorgehensweise: vsftpd installieren, absichern, die korrekten Firewall-/SELinux-Regeln öffnen und aktivieren FTPS steht für Verschlüsselung. Wenn Sie eine schnellere Route mit professioneller Härtung und 24/7-Support wünschen, hosten Sie auf YouStable und lassen Sie es von unseren Ingenieuren für Sie konfigurieren.
