Wenn ich vsftpd
auf installiere centos
, richte ich nur die Jail-Umgebung für die Benutzer ein und der Rest ist die Standardkonfiguration von vsftpd
. Ich erstelle einen Benutzer und versuche, mich mit dem FTP-Client zu verbinden filezila
, aber ich kann mich nicht im passiven Modus verbinden. Ich wechsle immer transfer settings
in den aktiven Modus, um eine erfolgreiche Verbindung herzustellen, ftp server
sonst bekomme ich
Error: Failed to retrieve directory listing
Gibt es also eine Möglichkeit, eine beliebige Direktive in vsftp.conf
der Datei zu ändern, sodass wir im passiven Modus eine Verbindung zum Server herstellen können?
Antwort1
Um den passiven Modus für vsftpd zu konfigurieren, müssen Sie einige Parameter in vsftpd.conf festlegen.
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
Dadurch wird der passive Modus aktiviert und auf die Verwendung der elf Ports für Datenverbindungen beschränkt. Dies ist nützlich, da Sie diese Ports in Ihrer Firewall öffnen müssen.
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
Wenn nach dem Testen alles funktioniert, speichern Sie den Status Ihrer Firewall mit
service iptables save
/etc/sysconfig/iptables
wodurch die Datei aktualisiert wird .
Dazu müssen Sie unter CentOS 7 die neue Firewall und nicht iptables verwenden:
Finden Sie Ihre Zone:
# firewall-cmd --get-active-zones
public
interfaces: eth0
Meine Zone ist „öffentlich“, also stelle ich sie auf öffentlich, füge den Portbereich hinzu und danach laden wir neu:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
Was passiert, wenn Sie eine Verbindung herstellen
Ihr Client stellt über Port 21 eine Verbindung zum vsftpd-Server her.
Der Server antwortet dem Client und teilt ihm mit, mit welchem Port aus dem oben angegebenen Bereich eine Verbindung hergestellt werden soll.
Der Client stellt über den angegebenen Port eine Datenverbindung her und die Sitzung wird fortgesetzt.
Es gibt eine tolle Erklärung der verschiedenen FTPModiHier.
Antwort2
Um den passiven Modus zu aktivieren, legen Sie die folgenden Konfigurationsoptionen in Ihrer vsftp.conf fest:
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
Sie können natürlich den Start- und Endport ändern und sollten die xxx durch die öffentliche IP Ihres Servers ersetzen.
Darüber hinaus sollten Sie den Portbereich für den passiven Modus in Ihrer Firewall öffnen. Unter CentOS können Sie das ip_conntrack_ftp
Modul laden, um FTP-Verbindungen in Ihrer Firewall zu handhaben. Bearbeiten Sie /etc/sysconfig/iptables-config
ip_conntrack_ftp und fügen Sie es der Option IPTABLES_MODULES hinzu. Starten Sie anschließend iptables neu:
/sbin/service iptables restart
Antwort3
Geben Sie daneben pasv_enable=YES
einen Portbereich an, in dem VSFTP im PASV-Modus ausgeführt wird:
pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES
Vergessen Sie nicht, iptables so zu konfigurieren, dass die Paketübertragung auf diesen Ports zulässig ist:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
Antwort4
Normalerweise ist es nicht der FTP-Server vsftpd, sondern eine Firewall wie iptable, die die Verwendung des passiven Modus verhindert (Blockierung der für die Datenübertragung erforderlichen TCP-Verbindung).