Frage Wie konfiguriert man vsftpd um mit dem passiven Modus zu arbeiten


Immer wenn ich vsftpd auf Centos installiere, richte ich nur die Jail-Umgebung für die Benutzer ein und Ruhe ist die Standardkonfiguration von vsftpd. Ich erstelle Benutzer und versuche, mich mit dem FTP-Client filezila zu verbinden, aber ich konnte keine Verbindung mit dem passiven Modus herstellen. Ich ändere immer die "Übertragungseinstellungen" in den aktiven Modus, um erfolgreich eine Verbindung zum FTP-Server herzustellen, sonst bekomme ich

 Error: Failed to retrieve directory listing

Gibt es eine Möglichkeit, irgendeine Direktive in der vsftp.conf Datei zu ändern und wir können uns mit dem passiven Modus mit dem Server verbinden?

Update: Danke an alle, die gut mit den Antworten arbeiten.


46
2017-08-25 16:22


Ursprung




Antworten:


Um den passiven Modus für vsftpd zu konfigurieren, müssen Sie einige Parameter in vsftpd.conf setzen.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Dies aktiviert den passiven Modus und beschränkt 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 Test alles funktioniert, speichern Sie den Zustand Ihrer Firewall mit

service iptables save

welches das aktualisieren wird /etc/sysconfig/iptables Datei.

Um dies zu tun ist CentOS 7 Sie müssen die neue Firewall verwenden, nicht iptables:

Finde deine Zone:

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

Meine Zone ist öffentlich, also stelle ich meine Zone auf "public", füge den Port-Bereich hinzu und lade danach erneut:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

Was passiert, wenn Sie eine Verbindung herstellen?

  • Ihr Client stellt eine Verbindung zum vsftpd-Server an Port 21 her.

  • Der Server antwortet dem Client, dass er aus dem oben angegebenen Bereich angibt, mit welchem ​​Anschluss er sich verbinden soll.

  • Der Client stellt am angegebenen Port eine Datenverbindung her, und die Sitzung wird fortgesetzt.

Es gibt eine großartige Erklärung für die verschiedenen FTP Modi Hier.


82
2017-08-25 16:48



Sie fragen sich, warum Sie die max Hafen nach dem min... aber noch wichtiger, 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 ist wirklich egal, da es sich um separate Anweisungen handelt. - Iain
Dies funktioniert nicht ohne mich pasv_address. - fbmd
Ich habe ewig gebraucht, um das zu finden, keiner der vsftpd-Führer zählt das auf ... brilliant - Willshaw Media
Wunderbar - diese vsftp-Konfiguration löste alle meine FTP-Firewall-Probleme :) - BurninLeo


Um den passiven Modus zu aktivieren, setze die folgenden Konfigurationsoptionen in deiner vsftp.conf:

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 End-Port ändern und die xxx's durch die öffentliche IP Ihres Servers ersetzen.

Außerdem sollten Sie den Portbereich für den passiven Modus in Ihrer Firewall öffnen. Auf Centos können Sie die laden ip_conntrack_ftp Modul, um FTP-Verbindungen in Ihrer Firewall zu behandeln. Bearbeiten /etc/sysconfig/iptables-config und füge ip_conntrack_ftp zur IPTABLES_MODULES -Option hinzu. Danach starte iptables erneut:

/sbin/service iptables restart

22
2017-08-25 16:47



pasv_address ist der Trick, wenn alles andere eingerichtet wurde und es immer noch nicht funktioniert. - fbmd
@fbmd vor dem Versuch pasv_address, sollte man auch prüfen, ob sowohl pasv_max als auch min_port in der richtigen Reihenfolge sind. Es ist mir passiert, dass ich den Maximalwert im pasv_min_port konfiguriert habe, und vsftpd ignoriert dies einfach. Es ist ein bekannter stiller Fehler / Bug, der Sie visuell glauben lässt, dass Pasv-Ports korrekt konfiguriert sind, aber das ist nicht der Fall. Das ist mir passiert und hat mein Problem gelöst. - Pedro Sousa


Neben der pasv_enable=YES, geben Sie einen Portbereich an, in dem VSFTP den PASV-Modus ausführt:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Vergessen Sie nicht, iptables zu konfigurieren, ermöglicht Paketübertragung an diesen Ports:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

4
2017-08-25 16:47



Auf einem CentOS-Standardsystem gibt es einen DROP-Befehl, der Regeln hinzufügt iptables -A INPUT ...  ignoriert werden - Iain
Stellen Sie sicher, dass Sie einschließen pasv_address in der vsftpd.conf-Datei. - Pedro Madrid


Normalerweise ist es nicht der ftp-Server vsftpd, sondern die Firewall wie iptable, die verhindert, dass der passive Modus verwendet wird (blockierende TCP-Verbindung, die für den Datentransfer benötigt wird).


2
2017-08-25 16:40



Eigentlich könnte vsftpd schlau genug sein, einen Port in der Firewall zu öffnen ... aber aus den Antworten, die ich hier sehe, sieht es nicht so aus, als ob es in der Lage wäre. - Alexis Wilke
@Alexis. Es gibt keinen Sinn für eine Firewall, wenn Apps die Regeln sowieso ignorieren und trotzdem Ports öffnen. - ekerner