Jak skonfigurować vsftpd do pracy z trybem pasywnym

49

Ilekroć zainstalować vsftpdna centos, ja tylko konfiguracja środowiska więzienie dla użytkowników i reszta jest domyślna konfiguracja vsftpd. Tworzę użytkownika i próbuję połączyć się z filezilaklientem ftp, ale nie mogłem połączyć się w trybie pasywnym. Zawsze zmieniam transfer settingstryb na aktywny, aby pomyślnie połączyć się z ftp serverinnym urządzeniem

 Error: Failed to retrieve directory listing

Czy istnieje sposób na zmianę jakiejkolwiek dyrektywy w vsftp.confpliku i możemy połączyć się z serwerem w trybie pasywnym?

Toqeer
źródło

Odpowiedzi:

86

Aby skonfigurować tryb pasywny dla vsftpd, musisz ustawić niektóre parametry w vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Umożliwia to tryb pasywny i ogranicza go do korzystania z jedenastu portów do połączeń danych. Jest to przydatne, ponieważ musisz otworzyć te porty w zaporze.

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

Jeśli po przetestowaniu to wszystko działa, zapisz stan zapory za pomocą

service iptables save

który zaktualizuje /etc/sysconfig/iptablesplik.

Aby to zrobić, to CentOS 7, musisz użyć nowej zapory ogniowej, a nie iptables:

Znajdź swoją strefę:

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

Moja strefa jest „publiczna”, więc ustawiłem moją strefę na publiczną, dodaj zakres portów, a następnie przeładujemy:

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

Co dzieje się po nawiązaniu połączenia

  • Twój klient nawiązuje połączenie z serwerem vsftpd na porcie 21.

  • Serwer odpowiada klientowi, informując go, z którego portu się połączyć, z zakresu określonego powyżej.

  • Klient nawiązuje połączenie danych na określonym porcie i sesja jest kontynuowana.

Jest tutaj świetne wyjaśnienie różnych trybów ftp .

user9517 obsługuje GoFundMonica
źródło
Zastanawiasz się, dlaczego umieściłeś maxport po min... ale, co ważniejsze, jeśli otworzysz porty 10090 do 10100, to 11 portów, a nie 10, jak mówisz.
Alexis Wilke,
Uważam, że jest to alfabetycznie, to naprawdę nie ma znaczenia, ponieważ są to osobne dyrektywy.
user9517 obsługuje GoFundMonica
3
Bez mnie to nie działa pasv_address.
fbmd
zajęło mi wieki, aby to znaleźć, żaden z przewodników vsftpd nie wymienia tego ... genialnego
Pete
Cudownie - ta konfiguracja vsftp rozwiązała wszystkie moje problemy z zaporą FTP :)
BurninLeo
24

Aby włączyć tryb pasywny, ustaw następujące opcje konfiguracji w pliku vsftp.conf:

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

Możesz oczywiście zmienić port początkowy i końcowy i powinieneś zamienić xxx na publiczny adres IP twojego serwera.

Ponadto należy otworzyć zakres portów trybu pasywnego w zaporze. W centos można załadować ip_conntrack_ftpmoduł do obsługi połączeń ftp w zaporze. Edytuj /etc/sysconfig/iptables-configi dodaj ip_conntrack_ftp do opcji IPTABLES_MODULES. Następnie uruchom ponownie iptables:

/sbin/service iptables restart
brain99
źródło
3
pasv_addressco robi, gdy wszystko inne zostało skonfigurowane i nadal nie działa.
fbmd
1
@fbmd przed wypróbowaniem adresu pasv_address, należy również sprawdzić, czy pasv_max i min_port są w odpowiedniej kolejności. Zdarzyło mi się, że mam maksymalną wartość skonfigurowaną w pasv_min_port i vsftpd po prostu to ignoruje. Jest to znana cicha wada / błąd, który wizualnie sprawia, że ​​myślisz, że porty pasv są skonfigurowane poprawnie, ale tak nie jest. To mi się przydarzyło i rozwiązało mój problem.
Pedro Sousa
Jeśli chcesz podać adres DNS pasv_address, powinieneś dodać pasv_addr_resolve=YES(domyślnie NO)
Pierre-Damien
6

Oprócz tego pasv_enable=YESokreśl zakres portów, w których VSFTP będzie działać w trybie PASV:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Nie zapomnij skonfigurować iptables umożliwia transmisję pakietów na tych portach:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
kwanty
źródło
W standardowym systemie CentOS występuje iptables -A INPUT ...
ogólny KROK,
Upewnij się, że pasv_addressdołączasz do pliku vsftpd.conf.
Pedro Madrid
3

Zwykle to nie serwer ftp, vsftpd, ale zapora ogniowa, taka jak iptable, uniemożliwia użycie trybu pasywnego (blokowanie połączenia tcp potrzebne do przesyłania danych).


źródło
W rzeczywistości vsftpd może być wystarczająco inteligentny, aby otworzyć port w zaporze ogniowej ... ale z odpowiedzi, które tu widzę, nie wygląda na to, aby był w stanie dokonać takiego wyczynu.
Alexis Wilke,
3
@Alexsis. Zapora ogniowa nie ma sensu, jeśli aplikacje i tak ignorują reguły i otwierają porty.
ekerner