Vraag Hoe vsftpd te configureren om te werken met de passieve modus


Telkens wanneer ik vsftpd op centos installeer, heb ik alleen de gevangenisomgeving voor de gebruikers ingesteld en rust is de standaardconfiguratie van vsftpd. Ik maak een gebruiker en probeer verbinding te maken met de filezila ftp-client, maar ik kon geen verbinding maken met de passieve modus. Ik verander altijd de "overdrachtsinstellingen" in de actieve modus om met succes verbinding te maken met de ftp-server anders krijg ik

 Error: Failed to retrieve directory listing

Is er een manier om een ​​willekeurige richtlijn in het bestand vsftp.conf te wijzigen en kunnen we verbinding maken met de passieve modus met de server?

Update: Dank aan allen die goed werken met de gegeven antwoorden.


46
2017-08-25 16:22


oorsprong




antwoorden:


Als u de passieve modus voor vsftpd wilt configureren, moet u enkele parameters instellen in vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Dit maakt de passieve modus mogelijk en beperkt deze tot het gebruik van de elf poorten voor gegevensverbindingen. Dit is handig omdat u deze poorten op uw firewall moet openen.

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

Als na het testen dit allemaal werkt, sla dan de status van uw firewall op

service iptables save

die het /etc/sysconfig/iptables het dossier.

Om dit te doen is CentOS 7 je moet de nieuwe firewalld gebruiken, niet iptables:

Zoek uw zone:

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

Mijn zone is 'openbaar', dus ik heb mijn zone openbaar gemaakt, het poortbereik toegevoegd en daarna opnieuw geladen:

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

Wat gebeurt er als je verbinding maakt?

  • Uw cliënt maakt een verbinding met de vsftpd-server op poort 21.

  • De sever antwoordt op de client en geeft aan met welke poort hij verbinding moet maken vanuit het hierboven gespecificeerde bereik.

  • De client maakt een gegevensverbinding op de opgegeven poort en de sessie gaat door.

Er is een geweldige uitleg over de verschillende ftp modes hier.


82
2017-08-25 16:48



Vraagt ​​u zich af waarom u de max poort na de min... maar wat nog belangrijker is: als u poorten 10090 tot 10100 opent, zijn dat 11 poorten en geen 10 zoals u zegt. - Alexis Wilke
Ik geloof dat het alfabetisch is, het maakt eigenlijk niet uit, het zijn afzonderlijke richtlijnen. - Iain
Dit werkt niet voor mij zonder pasv_address. - fbmd
heeft me eeuwen nodig gehad om dit te vinden, geen van de vsftpd-gidsen vermeldt dit ... geweldig - Willshaw Media
Geweldig - deze vsftp-configuratie loste al mijn FTP-firewallproblemen op :) - BurninLeo


Om de passieve modus in te schakelen, stelt u de volgende configuratie-opties in uw vsftp.conf in:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

U kunt natuurlijk de begin- en eindpoort wijzigen en de xxx's vervangen door het openbare IP-adres van uw server.

Bovendien moet u het poortbereik van de passieve modus in uw firewall openen. Op centos kun je de ip_conntrack_ftp module om ftp-verbindingen in uw firewall af te handelen. Bewerk /etc/sysconfig/iptables-config en voeg ip_conntrack_ftp toe aan de IPTABLES_MODULES optie. Daarna herstart iptables:

/sbin/service iptables restart

22
2017-08-25 16:47



pasv_address is wat de truc doet als al het andere is ingesteld en het werkt nog steeds niet. - fbmd
@fbmd voordat je pasv_address probeert, moet je ook controleren of zowel pasv_max als min_port in de juiste volgorde staan. Het overkwam mij dat ik de maximale waarde had geconfigureerd in de pasv_min_port, en vsftpd negeert dit eenvoudigweg. Het is een bekende stille fout / bug die je visueel doet denken dat pasv-poorten correct geconfigureerd zijn, maar dat zijn ze niet. Dit overkwam mij en loste mijn probleem op. - Pedro Sousa


Naast de pasv_enable=YES, specificeer een poortbereik waarin VSFTP de PASV-modus zal uitvoeren:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Vergeet niet om iptables te configureren voor pakkettransmissie op deze poorten:

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

4
2017-08-25 16:47



Op een standaard CentOS-systeem is er een algemene DROP waardoor regels worden toegevoegd iptables -A INPUT ...  om genegeerd te worden - Iain
Zorg ervoor dat u opneemt pasv_address in het bestand vsftpd.conf. - Pedro Madrid


Meestal is het niet de ftp-server, vsftpd, maar de firewall zoals iptable die voorkomt dat de passieve modus wordt gebruikt (blokkerende tcp-verbinding nodig voor gegevensoverdracht).


2
2017-08-25 16:40



Eigenlijk zou vsftpd slim genoeg kunnen zijn om een ​​poort in de firewall te openen ... maar uit de antwoorden die ik hier zie, lijkt het er niet op dat het zo'n prestatie kan leveren. - Alexis Wilke
@Alexsis. Het heeft geen zin om een ​​firewall te gebruiken als apps de regels en open poorten toch negeren. - ekerner