So konfigurieren Sie vsftpd für den passiven Modus

49

Immer , wenn ich installieren vsftpdauf centos, ich nur Setup der Gefängnisumgebung für die Benutzer und Rest ist Standardkonfiguration vsftpd. Ich erstelle einen Benutzer und versuche, eine Verbindung mit dem filezilaFTP-Client herzustellen, aber ich konnte keine Verbindung mit dem passiven Modus herstellen. Ich wechsle immer in den transfer settingsaktiven Modus, um erfolgreich eine Verbindung zu dem ftp serverherzustellen, was ich sonst erhalte

 Error: Failed to retrieve directory listing

Gibt es also eine Möglichkeit, eine Direktive in der vsftp.confDatei zu ändern, und wir können im passiven Modus eine Verbindung zum Server herstellen?

Toqeer
quelle

Antworten:

86

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

Dies aktiviert den passiven Modus und beschränkt ihn auf die Verwendung der elf Ports für Datenverbindungen. 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

Dadurch wird die /etc/sysconfig/iptablesDatei aktualisiert .

Für CentOS 7 muss die neue Firewall verwendet werden, nicht iptables:

Finden Sie Ihre Zone:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

Meine Zone ist "öffentlich", daher setze ich meine Zone auf "öffentlich", füge den Portbereich hinzu und lade danach 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, zu welchem ​​Port aus dem oben angegebenen Bereich eine Verbindung hergestellt werden soll.

  • Der Client stellt eine Datenverbindung auf dem angegebenen Port her und die Sitzung wird fortgesetzt.

Hier finden Sie eine gute Erklärung der verschiedenen FTP- Modi .

user9517 unterstützt GoFundMonica
quelle
Sie fragen sich, warum Sie den maxPort nach dem min... setzen. Aber was noch wichtiger ist: Wenn Sie die Ports 10090 bis 10100 öffnen, sind das 11 Ports und nicht 10, wie Sie sagen.
Alexis Wilke
Ich glaube, es ist alphabetisch, es spielt keine Rolle, da es sich um separate Richtlinien handelt.
user9517 unterstützt GoFundMonica
3
Das geht bei mir nicht ohne pasv_address.
30.
Ich brauchte Ewigkeiten, um das zu finden, keiner der vsftpd-Guides listet das auf ... brillant
Pete
Wunderbar - diese vsftp-Konfiguration löste alle meine FTP-Firewall-Probleme :)
BurninLeo
24

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.

Außerdem sollten Sie den Passivmodus-Portbereich in Ihrer Firewall öffnen. Auf Centos können Sie das ip_conntrack_ftpModul laden , um FTP-Verbindungen in Ihrer Firewall zu verarbeiten. Bearbeiten /etc/sysconfig/iptables-configSie ip_conntrack_ftp und fügen Sie es zur Option IPTABLES_MODULES hinzu. Starten Sie anschließend iptables neu:

/sbin/service iptables restart
brain99
quelle
3
pasv_addressist das, was der Trick macht, wenn alles andere eingerichtet ist und es immer noch nicht funktioniert.
30.
1
@fbmd Bevor man pasv_address versucht, sollte man auch überprüfen, ob sowohl pasv_max als auch min_port in der richtigen Reihenfolge sind. Es ist mir passiert, dass ich den Maximalwert in pasv_min_port konfiguriert habe und vsftpd ignoriert dies einfach. Es ist ein bekannter stiller Fehler, der Sie visuell denken lässt, dass die Pasv-Ports korrekt konfiguriert sind, aber nicht. Das ist mir passiert und hat mein Problem gelöst.
Pedro Sousa
Wenn Sie eine DNS-Adresse in angeben möchten pasv_address, sollten Sie pasv_addr_resolve=YES(standardmäßig NO) hinzufügen
Pierre-Damien
6

pasv_enable=YESGeben Sie neben dem einen Portbereich an, in dem VSFTP den PASV-Modus ausführen soll:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Vergessen Sie nicht, iptables so zu konfigurieren, dass die Paketübertragung an folgenden Ports möglich ist:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
Quanten
quelle
Auf einem Standard CentOS - System gibt es eine Decke DROP , dass Ursachen Regeln hinzugefügt mit iptables -A INPUT ... ignoriert werden
user9517 GoFundMonica unterstützt
pasv_addressStellen Sie sicher, dass Sie die Datei vsftpd.conf enthalten.
Pedro Madrid
3

Normalerweise ist es nicht der FTP-Server vsftpd, sondern die Firewall wie iptable, die die Verwendung des passiven Modus verhindert (Blockierung der TCP-Verbindung für die Datenübertragung erforderlich).


quelle
Eigentlich könnte vsftpd klug genug sein, um einen Port in der Firewall zu öffnen ... aber nach den Antworten, die ich hier sehe, sieht es nicht so aus, als wäre es zu einer solchen Leistung fähig.
Alexis Wilke
3
@Alexsis. Eine Firewall hat keinen Sinn, wenn Apps die Regeln einfach ignorieren und trotzdem Ports öffnen.
Ekerner