zawartość:

  • wprowadzenie
  • podstawy
  • aktywny FTP
  • aktywny FTP
  • pasywny FTP
  • inne uwagi
  • podsumowanie
  • Dodatek 1: Konfiguracja popularnych serwerów FTP
  • dodatek 2: Firewall Configuration Guide

wprowadzenie

jednym z najczęściej spotykanych pytań podczas rozwiązywania firewalli i innych problemów z łącznością z Internetem jest różnica między aktywnym i pasywnym FTP oraz jak najlepiej obsługiwać jedną lub obie z nich., Mam nadzieję, że poniższy tekst pomoże wyjaśnić niektóre kwestie dotyczące obsługi FTP w środowisku zaporowym.

To może nie być ostateczne wyjaśnienie, jak twierdzi tytuł, jednak słyszałem wystarczająco dobre opinie i widziałem ten dokument połączony w wystarczająco wielu miejscach, aby wiedzieć, że sporo osób uznało go za przydatny. Zawsze szukam sposobów na poprawę sytuacji, a jeśli znajdziesz coś, co nie jest do końca jasne lub wymaga więcej wyjaśnień, daj mi znać!, Ostatnie dodatki do tego dokumentu zawierają przykłady zarówno aktywnych, jak i pasywnych sesji FTP wiersza poleceń. Te przykłady sesji powinny pomóc uczynić rzeczy nieco jaśniejsze. Zapewniają również ładne zdjęcie tego, co dzieje się za kulisami podczas sesji FTP. Przejdźmy do informacji…

podstawy

FTP jest usługą opartą wyłącznie na TCP. Nie ma komponentu UDP toFTP. FTP jest nietypową usługą, ponieważ wykorzystuje dwa porty, port „danych” i Port ” polecenia „(znany również jako port sterowania)., Tradycyjnie są to port 21 dla portu polecenia i port 20 dla portu danych. Zamieszanie zaczyna się jednak, gdy okaże się, że w zależności od kodu, port danych nie zawsze znajduje się na porcie 20.

aktywny FTP

w trybie aktywnym FTP klient łączy się z losowego, nieuprzywilejowanego portu (n> 1023) z portem poleceń serwera FTP, port 21. Następnie klient zaczyna nasłuchiwać portu N+1 i wysyła polecenie FTP PORTN+1 na serwer FTP., Następnie serwer połączy się z określonym portem danych Klienta z lokalnego portu danych, którym jest port 20.,21 do portów > 1023 (serwer odpowiada na port sterowania klienta)

  • port serwera FTP 20 do portów > 1023 (Serwer inicjuje połączenie danych do portu danych Klienta)
  • port serwera FTP 20 z portów iv id=”ca080e36a2″1023 (klient wysyła acks do portu danych serwera)
  • po wylosowaniu, połączenie pojawia się w następujący sposób:

    w kroku 1, polecenie klienta Port kontaktuje się z poleceniem serwera portand wysyła poleceniePORT 1027., Następnie serwer wysyła pakiet z powrotem do portu poleceń klienta w Kroku 2. W kroku 3 Serwer uruchamia połączenie na swoim lokalnym porcie danych z portem danych określonym wcześniej przez klientów. Na koniec klient odsyła ACK z powrotem, jak pokazano w kroku 4.

    główny problem z active mode FTP faktycznie spada na klienta. Klient FTP nie dokonuje rzeczywistego połączenia z portem danych serwera-po prostu informuje serwer, na którym porcie nasłuchuje, a serwer łączy się z powrotem do określonego portu na kliencie., Od strony klienta firewall wygląda na zewnętrzny system inicjujący połączenie z wewnętrznym klientem-coś, co zwykle jest blokowane.

    przykład aktywnego FTP

    poniżej znajduje się przykład aktywnej sesji FTP. Jedyne, co zostało zmienione, to nazwy serwerów, adresy IP i nazwy użytkowników. W tym przykładzie sesja FTP jest inicjowana z testbox1.slacksite.com (192.168.150.80), Linux box uruchamiający standardowego klienta wiersza poleceń FTP, do testbox2.slacksite.com (192.168.150.90), Linux box z ProFTPd 1.2.2rc2., Flaga debugowania (-d) jest używana z klientem FTP, aby pokazać, co dzieje się za kulisami. Wszystko na Czerwono jest wyjściem debugowania, które pokazuje rzeczywiste polecenia FTP wysyłane do serwera i odpowiedzi generowane z tych poleceń. Normalne wyjście serwera jest pokazane na czarno, a wejście użytkownika pogrubione.

    jest kilka ciekawych rzeczy do rozważenia w tym oknie dialogowym. Zauważ, że gdy wydano polecenie PORT, określa ono port w systemie klienta (192.168.150.80), a nie serwer., Widzimy odwrotne zachowanie, gdy używamy pasywnego FTP. Podczas gdy jesteśmy w temacie, krótka notka o formacie polecenia PORT. Jak widać w poniższym przykładzie jest on sformatowany jako seria sześciu liczb oddzielonych przecinkami. Pierwsze cztery oktety to adres IP, podczas gdy dwa ostatnie oktety to port, który będzie używany do połączenia danych. Aby znaleźć właściwy port, należy pomnożyć piąty oktet przez 256, a następnie dodać szósty oktet do sumy. Tak więc w poniższym przykładzie numer portu jest ( (14*256) + 178), lub 3762., Szybkie sprawdzenie za pomocą netstat powinno potwierdzić te informacje.

    pasywny FTP

    w celu rozwiązania problemu serwera inicjującego połączenie z klientem opracowano inną metodę połączeń FTP. To było znane jako tryb pasywny, lub PASV, po poleceniu używanym przez theclient, aby powiedzieć serwerowi, że jest w trybie pasywnym.

    w trybie pasywnym FTP klient inicjuje oba połączenia z serwerem, rozwiązując problem firewalli filtrujących przychodzące połączenie do klienta z serwera., Podczas otwierania połączenia FTP klient otwiera dwa losowe porty nieuprzywilejowane lokalnie (n > 1023 andN+1). Pierwszy port kontaktuje się z serwerem na porcie 21, ale zamiast polecenia PORT I pozwalając serwerowi połączyć się z jego portem danych, klient wyda polecenie PASV. W rezultacie serwer otwiera randomunprivileged port (P > 1023) i wysyła P z powrotem do Klienta w odpowiedzi na polecenie PASV., Następnie klient inicjuje połączenie z Portun+1 do portu P na serwerze w celu przesyłania danych.,do portu kontrolnego klienta)

  • porty serwera FTP > 1023 z dowolnego miejsca (Klient inicjuje połączenie danych do losowego portu określonego przez serwer)
  • porty serwera FTP > 1023 do portów zdalnych > 1023 (serwer wysyła pakiety (i dane) do portu danych Klienta)
  • Po pobraniu połączenie FTP w trybie pasywnym wygląda następująco:

    w kroku 1 klient kontaktuje się z serwerem na porcie poleceń i wydaje poleceniePASV., Serwer odpowiada w Kroku 2 za pomocąPORT 2024, informując klienta, na którym porcie nasłuchuje połączenia danych. W kroku 3 klient inicjuje połączenie dataconnection ze swojego portu danych do określonego portu danych serwera. Na koniec serwer wysyła z powrotem ACK w kroku 4 do portu danych Klienta.

    podczas gdy tryb pasywny FTP rozwiązuje wiele problemów po stronie klienta, otwiera cały szereg problemów po stronie serwera. Największym problemem jest konieczność umożliwienia zdalnego połączenia z wysokimi numerami portów na serwerze., Na szczęście, wiele demonów FTP, w tym popularne WU-Ftpzwalają administratorowi określić zakres portów, z których będzie korzystać serwer FTP. Więcej informacji znajduje się w dodatku 1.

    drugi problem polega na wspieraniu i rozwiązywaniu problemów klientów, którzy obsługują (lub nie) tryb pasywny. Na przykład, narzędzie FTP command line dostarczone z Solarisem nie obsługuje passivemode, co wymaga klienta FTP innej firmy, takiego jak ncftp.
    uwaga: tak już nie jest-użyj opcji -p z klientem FTP Solaris w trybie pasywnym!,

    dzięki ogromnej popularności World Wide Web, Wiele osób woli używać swojej przeglądarki internetowej jako klienta FTP. Większość przeglądarek obsługuje tylko tryb assive podczas uzyskiwania dostępu do adresów URL ftp://. Może to być dobre lub złe w zależności od tego, co serwery i zapory sieciowe są skonfigurowane do obsługi.

    przykład pasywnego FTP

    poniżej znajduje się rzeczywisty przykład pasywnej sesji FTP. Jedyne, co zostało zmienione, to nazwy serwerów, adresy IP i nazwy użytkowników. W tym przykładzie sesja FTP jest inicjowana z testbox1.slacksite.com (192.168.150.*),80), Linux box uruchamiający standardowego klienta wiersza poleceń FTP, do testbox2.slacksite.com (192.168.150.90), Linux box z ProFTPd 1.2.2rc2. Flaga debugowania (-d) jest używana z klientem FTP, aby pokazać, co dzieje się za kulisami. Wszystko na Czerwono jest wyjściem debugowania, które pokazuje rzeczywiste polecenia FTP wysyłane do serwera i odpowiedzi generowane z tych poleceń. Normalne wyjście serwera jest pokazane na czarno, a wejście użytkownika pogrubione.,

    zauważ różnicę w poleceniuPORT w tym przykładzie w przeciwieństwie do aktywnego przykładu FTP. Tutaj widzimy otwarcie portu na serwerze (192.168.150.90), a nie na kliencie. Zobacz dyskusję na temat formatu poleceniaPORT powyżej, w sekcji Active FTP Example.,

    inne uwagi

    czytnik Maarten Sjouw zauważył, że aktywny FTP nie będzie działał w połączeniu z urządzeniem NAT po stronie klienta (Network Address Translation), które nie jest wystarczająco inteligentne, aby zmienić informacje o adresie IP w pakietach FTP.

    podsumowanie

    Poniższy wykres powinien pomóc administratorom zapamiętać, jak działa każdy tryb FTP:

     Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023

    krótkie podsumowanie zalet i wad aktywnego i pasywnego FTP jest również w porządku:

    aktywny FTP jest korzystny dla administratora serwera FTP, ale szkodliwy dla administratora po stronie klienta., Serwer FTP próbuje nawiązać połączenia z losowymi wysokimi portami na kliencie, które prawie na pewno byłyby blokowane przez firewall po stronie klienta. Pasywny FTP jest korzystny dla klienta, ale szkodliwy dla administratora serwera FTP. Klient nawiąże oba połączenia z serwerem, ale jedno z nich będzie do losowego wysokiego portu, który prawie na pewno byłby zablokowany przez firewall po stronie serwera.

    na szczęście jest pewien kompromis., Ponieważ administratorzy działający na serwerach FTP będą musieli udostępnić swoje serwery największej liczbie klientów, prawie na pewno będą musieli obsługiwać pasywny FTP. Ekspozycja portów wysokiego poziomu na serwerze może być zminimalizowana przez określenie ograniczonego zakresu portów dla serwera FTP. Tak więc, wszystko oprócz tego zakresu portów może być zaporą po stronie serwera. Chociaż nie eliminuje to całego ryzyka dla serwera, zmniejsza je ogromnie. Więcej informacji znajduje się w dodatku 1.,

    doskonałe odniesienie do tego, jak działają różne protokoły internetowe i kwestie związane z ich zaporą można znaleźć w książce O ' Reilly andasociates, Building Internet Firewalls, 2nd Ed, autorstwa Brentchapmana i Elizabeth Zwicky.
    Uwaga 2012: ta książka jest bardzo stara, a informacje w niej zawarte mogą być nieaktualne!

    Dodaj komentarz

    Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *