Rozumiem, że FTP przez SSL (ftps) jest taki, że nie działa dobrze z zaporami ogniowymi i NAT. W zwykłej sesji FTP informacje o połączeniach danych są odczytywane przez zaporę i modyfikowane przez NAT, aby zapora mogła dynamicznie otwierać potrzebne porty. Jeśli te informacje są zabezpieczone przez SSL, zapora ogniowa nie może ich odczytać ani zmienić.
Korzystanie z SFTP lub scp znacznie ułatwia zadanie administratorowi sieci - wszystko dzieje się na porcie 22 serwera, a transakcja przebiega zgodnie z normalnym modelem klient / serwer.
Jedną z rzeczy, o których nie wspomniano, jest to, czy twoja zapora działa NAT i czy jest statycznym NAT czy dynamicznym NAT. Jeśli komputer kliencki ma adres statyczny lub ma statyczną translację NAT, może nie być konieczne wprowadzanie żadnych zmian zapory, zakładając, że zezwalasz na cały ruch wychodzący, a serwer działa tylko w trybie pasywnym (PASV).
Aby dokładnie wiedzieć, jakie porty trzeba otworzyć, musisz:
a) porozmawiaj ze sprzedawcą, aby uzyskać szczegółowe informacje na temat konfiguracji jego systemu.
b) Użyj analizatora protokołów, takiego jak tcpdump lub wireshark, aby sprawdzić ruch, zarówno spoza zapory, jak i wewnątrz zapory
Musisz dowiedzieć się, który port jest połączeniem sterującym. Wymieniasz 3, co wydaje mi się dziwne. Zakładając, że serwer działa tylko w trybie PASV (pasywnym), musisz dowiedzieć się, jak serwer jest skonfigurowany do przydzielania portów DATA. Czy zablokowali kanał DATA do pojedynczego portu wejściowego? Czy zablokowali kanał DATA do małego zasięgu lub portów?
Dzięki tym odpowiedziom możesz rozpocząć konfigurację zapory.
Uważam, że porty około 990 były dla niejawnego protokołu SSL, który był starym niestandardowym sposobem wykonywania FTP / SSL. „Właściwy” sposób to obecnie jawne SSL, co oznacza, że nadal łączysz się przez port 21, a następnie negocjujesz SSL przed wysłaniem gadżetów. Aby obsługiwać połączenia przez zaporę, musisz użyć trybu PASV i ustawić porty danych, które mają być używane.
Uważam, że potrzebujesz co najmniej jednego portu na połączenie danych, które chcesz obsługiwać. Jeśli to tylko ty, prawdopodobnie dobrze jest, otwierając tylko kilka dodatkowych portów. Specjalnie dla mnie używam 21000-21010.
W vsftpd.conf mam te dwie linie (wraz z wszystkimi innymi rzeczami do obsługi SSL):
Na mojej zaporze mam publiczny statyczny adres IP z bezpośrednim / statycznym NAT do wewnętrznego adresu IP i otwarte tylko porty TCP 21, 21000-21010.
źródło
Wiem, że to bardzo stary wątek, jednak ..
Należy pamiętać, że SFTP różni się całkowicie od FTPS. (SSH vs SSL)
FTPS działa na 2 sposoby. Jawne i niejawne. Jawne jest mniej bezpieczne, ponieważ po wstępnym uzgadnianiu pomija szyfrowanie podczas przesyłania danych [jeśli szyfrowanie danych jest utrzymywane, można je konfigurować po stronie serwera za pomocą PROT P], podczas gdy Implicit utrzymuje szyfrowanie danych również po uzgadnianiu. Domyślny jawny port FTPS to 21. Domyślny niejawny port to 990 (po uzgadnianiu automatycznie przełączy się na 989 w celu transmisji danych, jeśli nie zostanie skonfigurowany inaczej). Podczas gdy port 21 jest ogólnie akceptowany jako EXPLICIT FTPS, a 990 jako IMPLICIT FTPS, w rzeczywistości dowolny port, który skonfigurujesz, z wyjątkiem 990/989, doprowadzi do EXPLICIT FTPS, a TYLKO 990/989 zostanie zaakceptowany jako IMPLICIT FTPS.
Tak więc, aby odpowiedzieć na twoje pytanie: - w zależności od konfiguracji serwera FTPS, musisz otworzyć port 21 lub 990/989. Jednak dla pewności powinieneś skontaktować się z administratorem serwera FTPS i zapytać o drogę. Pamiętaj również, że w trybie pasywnym, podobnie jak w przypadku każdego innego oprogramowania FTP, będziesz musiał otworzyć dodatkowe porty (TCP / UDP), zwykle coś z zakresu 64000-65000.
źródło
Zasadniczo ftps jest prawie bezużyteczny, ponieważ musisz składać żenujące żądania administratorom zapory. Porada dotycząca ograniczenia portów do 10 jest dobra. Co więcej, robi się żałosny.
sftp jest znacznie lepszy w teorii. Ale potrzebujesz wydajnego serwera sftp, np. Takiego, który ogranicza klientów do własnego katalogu domowego.
W zależności od aplikacji rozważ HTTPS. Przesyłanie pliku jest naprawdę proste, a pobieranie oczywiście jest również. Jeśli i tak skryptujesz FTP, prawdopodobnie łatwiej będzie napisać skrypt do przesłania pliku HTTPS.
Zautomatyzowany FTP jest oznaką problemu projektowego. Zauważyłem to, gdy miałem do czynienia z około tuzinem dostawców, którzy „wymagali” miejsca, w którym pracowałem, aby zrobić automatyczny FTP (dla BARDZO ważnych rzeczy), a kiedy zmuszałem dziesiątki klientów, aby robili to w tym samym sklepie (błąd projektowy dla około 20 różnych zastosowań, których byłem świadkiem). Łatwo było przekonać większość osób korzystających z aplikacji do korzystania z HTTPS (zwykle na ten temat powiedzieli: „czekaj, nie ma powodu, dla którego nie mamy ich po prostu dzięki HTTPS z serwera internetowego, na którym już obsługujemy dane?” ), z wyjątkiem kilku, które udzieliły odpowiedzi typu „no cóż, mamy już te skrypty, które wydają się działać, i nikt w naszym zespole nie jest naprawdę dobry w skryptach, więc nie możemy naprawdę wprowadzać żadnych zmian” (zespół 5-10 programistów,
źródło
Dostawca może skonfigurować wąski zakres portów dla portów połączeń DATA, jeśli jeszcze tego nie zrobił. Następnie możesz otworzyć ten sam zakres dla swoich hostów, które potrzebują takiego dostępu. Należy użyć trybu PASV.
źródło
Port 22 jest standardem, ponieważ demon SSH w systemie UNIX ma moduł SFTP, który umożliwia włączenie tworzenia jawnego serwera SFTP. Jeśli chcesz uruchomić niejawny serwer FTP z Filezillą, możesz uruchomić go na dowolnym porcie, ale istnieje pewien haczyk: jeśli używasz klienta FileZilla, musisz podać adres URL strony ftp jako ftps: //mysite.com: 8086 zamiast umieszczania portu w oddzielnym polu portu udostępnianym przez klienta FileZilla.
W przypadku opcji jawnej potrzebny jest tylko JEDEN port: 22. W przypadku opcji niejawnej wystarczy mieć zaporę otwartą dla portu kontrolnego: 8086 (który przekazuje wewnętrznie do portu 21 na serwerze filezilla).
źródło
jeśli ftps jest taki sam jak sftp , to musisz mieć dostęp tylko do portu 22 w witrynie producenta.
Na swoim końcu powinieneś skonfigurować zaporę ogniową, aby zezwalała na port wychodzący 22 i związany z nim ruch przychodzący . Umożliwi to komunikację na dowolnym porcie wejściowym, który jest powiązany z początkowym połączeniem wychodzącym na porcie 22.
źródło