Protokół FTP, czyli File Transfer Protocol, jest jednym z najczęściej wykorzystywanych sposobów przesyłania danych w różnorodnych zastosowaniach.
Dostępne są również bezpieczne odmiany FTP, takie jak FTPS i SFTP, które różnią się między sobą pod względem działania. Te różnice dotyczą mechanizmu wymiany danych, poziomu i typu zabezpieczeń komunikacji oraz konfiguracji zapory sieciowej.
Zrozumienie, jak te protokoły działają i jakie są między nimi różnice, pomoże Ci wybrać rozwiązanie najlepiej dopasowane do Twoich indywidualnych potrzeb.
FTP
FTP to protokół transferu plików o długiej historii, który został po raz pierwszy opisany w dokumencie RFC 114. Później ewoluował, a obecnie obowiązującym standardem jest RFC 959.
FTP korzysta z dwóch kanałów wymiany informacji: jednego dla poleceń i drugiego dla danych. Do prawidłowego funkcjonowania FTP niezbędne są dwa porty – jeden dla kanału poleceń, a drugi dla kanału danych.
Kanał poleceń pracuje na porcie 21, który przyjmuje połączenia od klientów i służy do przesyłania poleceń. Pozostaje on otwarty przez cały czas trwania sesji FTP, aż do momentu wysłania przez klienta polecenia QUIT lub gdy serwer wymusi rozłączenie z powodu braku aktywności, bądź innej przyczyny.
Kanał danych wykorzystuje tymczasowy port, który jest otwierany na żądanie na serwerze (tryb pasywny) lub na kliencie (tryb aktywny). Jest on odpowiedzialny za przekazywanie właściwych danych między serwerem a klientem, takich jak listy katalogów i przesyłane pliki.
W odróżnieniu od kanału poleceń, kanał danych jest aktywny tylko w czasie przesyłania plików i jest zamykany po zakończeniu transferu. Do jednoczesnego przesyłania wielu plików lub list katalogów potrzebne jest wykorzystanie większej liczby portów kanału danych.
FTP jest z natury protokołem niezabezpieczonym, ponieważ zarówno kanał poleceń, jak i kanał danych przesyłają informacje w postaci niezaszyfrowanej. Są one tym samym łatwo narażone na przechwycenie przez osoby niepowołane, wykorzystujące ataki typu „man-in-the-middle”.
Jak już wspomniano, FTP wymaga otwarcia portu 21/tcp na serwerze dla kanału poleceń. Dla transferu plików i list katalogów definiowany jest zakres portów dla trybu pasywnego, który umożliwia przychodzące połączenia. Sposób definiowania zakresu portów zależy od konkretnego serwera FTP, dlatego warto zapoznać się z jego dokumentacją. Po stronie klienta powinno być dozwolone połączenie wychodzące na porcie 21/tcp, a także ruch w zakresie portów zdefiniowanym na serwerze dla trybu pasywnego.
Uwierzytelnianie w FTP
Informacje uwierzytelniające w FTP są przesyłane kanałem poleceń podczas nawiązywania połączenia. FTP może wymagać podania nazwy użytkownika i hasła w celu uwierzytelnienia lub może działać w trybie anonimowym, umożliwiając każdemu zalogowanie się i dostęp do serwera.
Aktywne i pasywne tryby FTP
FTP wykorzystuje tryb aktywny lub pasywny do konfigurowania połączeń.
W trybie aktywnym użytkownik łączy się z serwerem FTP, korzystając z losowego portu klienta, do portu 21/tcp serwera. Następnie wysyła polecenie PORT, określając port klienta, z którym ma się połączyć serwer, dla kanału danych.
Serwer łączy się z portu 20/tcp z portem klienta, wskazanym wcześniej przez klienta w poleceniu PORT. Ten kanał danych jest następnie używany do przesyłania plików między serwerem a klientem.
W trybie pasywnym klient łączy się z serwerem FTP, wykorzystując losowy port, do portu 21/tcp. Następnie wysyła polecenie PASV. Serwer odpowiada, udostępniając losowy port, który powinien zostać użyty dla kanału danych. Następnie klient wykorzystuje inny losowy port, aby połączyć się z portem, który został udostępniony przez serwer. To połączenie kanału danych jest wykorzystywane do przesyłania plików pomiędzy serwerem a klientem.
W trybie aktywnym inicjalne żądanie połączenia jest wysyłane przez klienta, a żądanie połączenia kanału danych jest inicjowane przez serwer.
Natomiast w trybie pasywnym, zarówno inicjalne żądanie połączenia, jak i późniejsze żądania kanału danych są inicjowane przez klienta w kierunku serwera. Ta subtelna różnica ma wpływ na to, jak zapora sieciowa przepuszcza lub blokuje połączenia FTP, ze względu na kierunek połączeń przychodzących i wychodzących.
FTPS
Nawet jeśli jesteś świadomy ryzyka związanego z niezabezpieczonym przesyłaniem danych w FTP, wymagania bezpieczeństwa często zmuszają do korzystania z bezpieczniejszych alternatyw, takich jak FTPS i SFTP.
W 1990 roku firma Netscape, w odpowiedzi na zmieniające się zagrożenia bezpieczeństwa, stworzyła protokół SSL (Secure Sockets Layer), który obecnie jest znany jako TLS (Transport Layer Security), aby chronić komunikację w sieci. SSL został zastosowany do FTP, czego efektem jest FTPS (File Transfer Protocol Secure). FTPS zazwyczaj działa na porcie 990/tcp, ale może być również spotykany na porcie 21/tcp. Dla kanału danych powszechnie stosowanym portem jest 989/tcp. Jeśli portem poleceń jest 21/tcp, port danych powinien wynosić 20/tcp.
Podobnie jak FTP, FTPS wykorzystuje dwa kanały do komunikacji: kanał poleceń i kanał danych. Kanał danych może zostać zaszyfrowany w FTPS. W celu zwiększenia bezpieczeństwa można zaszyfrować zarówno kanał poleceń, jak i kanał danych.
FTPS, tak jak i FTP, wykorzystuje wiele portów dla kanałów poleceń i danych. Port 21/tcp służy do nawiązywania połączenia i przekazywania informacji uwierzytelniających. Następnie, do każdego żądania przesyłania plików lub list katalogów od klienta, wymagane są dodatkowe porty do konfigurowania kanałów danych. Podobnie jak FTP, wymaga dostępu do wielu portów w zaporze sieciowej.
Uwierzytelnianie w FTPS
Uwierzytelnianie w FTPS polega na użyciu nazwy użytkownika i hasła, wraz z certyfikatem serwera, który służy do szyfrowania. Podczas połączenia klienta FTPS z serwerem sprawdzana jest wiarygodność certyfikatu serwera. Certyfikat może być wymagany zarówno od klienta, jak i od serwera.
SFTP
SFTP (SSH File Transfer Protocol), w przeciwieństwie do FTP i FTPS, jest odrębnym protokołem, który jest oparty na SSH (Secure Shell). Domyślnie SFTP działa na porcie 22/tcp, czyli tym samym, co SSH, aczkolwiek można go skonfigurować do korzystania z dowolnego wolnego portu na serwerze.
SFTP to bezpieczny protokół FTP, który wykorzystuje SSH do przesyłania plików. Dzięki temu, że SSH jest szyfrowany, SFTP jest solidnym i bezpiecznym sposobem przesyłania plików w sieci.
W przeciwieństwie do FTP i FTPS, SFTP wykorzystuje jeden kanał komunikacyjny do przesyłania poleceń i danych. Cały ruch, wraz z wstępnym uwierzytelnieniem, jest przesyłany w postaci zaszyfrowanej.
Uwierzytelnianie w SFTP
Uwierzytelnianie w SFTP może odbywać się za pomocą nazwy użytkownika i hasła, ale w przeciwieństwie do FTP, wszystkie informacje, w tym dane uwierzytelniające, są przesyłane w postaci zaszyfrowanej.
SFTP obsługuje również uwierzytelnianie za pomocą pary kluczy SSH, czyli kombinacji klucza prywatnego i publicznego. Klient dostarcza klucz prywatny dla danego użytkownika, a serwer powinien posiadać odpowiadający mu klucz publiczny. Jest to bezpieczniejsza forma uwierzytelniania niż użycie nazwy użytkownika i hasła. Możliwe jest uwierzytelnienie tego samego użytkownika za pomocą hasła oraz kluczy SSH, o ile obie metody zostały skonfigurowane na serwerze SFTP.
Podsumowanie
W tym artykule omówiono podstawowe cechy popularnych protokołów transferu plików, jakimi są FTP, FTPS i SFTP. Wskazano na najważniejsze różnice między nimi. Wyjaśniono również, jakie porty powinny być otwarte w zaporze sieciowej, aby prawidłowo skonfigurować serwer FTP/FTPS/SFTP. Ponadto podkreślono potrzebę korzystania z bezpieczniejszych protokołów, takich jak FTPS i SFTP.
Używając tutaj określenia FTP, mam na myśli wszystkie protokoły, które zostały omówione w tym artykule. FTP jest protokołem o długiej historii, dlatego nawet jego nowsze, bezpieczne wersje są czasami potocznie nazywane FTP zamiast ich właściwych nazw.
Zachęcamy również do zapoznania się z informacjami o najlepszym oprogramowaniu serwera FTP i klientów FTP/SFTP.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.