Zrozumienie SFTP a FTPS a FTP

FTP lub File Transfer Protocol to jedna z najpopularniejszych metod przesyłania danych dostępnych dla różnych zastosowań.

FTP ma różne dostępne bezpieczne odmiany, znane jako FTPS i SFTP, które zawierają pewne subtelne i niezbyt subtelne różnice w sposobie ich działania. Różnice te dotyczą sposobu wymiany danych, poziomu i rodzaju zabezpieczeń komunikacji oraz kwestii dotyczących zapory.

Znajomość sposobu działania tych protokołów i różnic między tymi popularnymi mechanizmami przesyłania może pomóc w wyborze tego, który najlepiej odpowiada Twoim potrzebom.

FTP

FTP to kilkudziesięcioletni protokół przesyłania plików, pierwotnie zaproponowany w RFC 114. Później ewoluował jako RFC 959, który jest obecnie używanym standardem.

FTP działa na dwóch kanałach wymiany informacji: jeden dla poleceń, a drugi dla danych. Wymaga to dwóch portów do działania FTP – kanału poleceń i kanału danych.

Kanał poleceń działa na porcie 21, który akceptuje połączenia od klientów i obsługuje przekazywanie poleceń. Kanał poleceń pozostaje otwarty przez cały czas trwania sesji FTP, dopóki klient nie wyśle ​​polecenia QUIT lub serwer wymusza rozłączenie z powodu braku aktywności lub z jakiegokolwiek innego możliwego powodu.

Kanał danych używa tymczasowego portu nasłuchującego na żądanie na serwerze (tryb pasywny) lub kliencie (tryb aktywny). Kanał ten jest odpowiedzialny za udostępnianie rzeczywistych danych między serwerem a klientem w postaci list katalogów i transferów plików.

W przeciwieństwie do kanału poleceń, kanał danych pozostaje otwarty tylko na czas przesyłania plików, a zaraz po jego zakończeniu kanał danych jest zamykany. Do równoczesnego przesyłania wielu plików lub list katalogów wymagane jest wiele portów kanału danych.

FTP jest z natury niezabezpieczonym protokołem, ponieważ zarówno kanały poleceń, jak i dane przesyłają informacje w postaci niezaszyfrowanej, która jest łatwo podatna na przechwycenie przez każdego, kto używa ataków typu man-in-the-middle.

Jak wspomniano wcześniej, FTP wymaga połączenia przychodzącego na porcie 21/tcp po stronie serwera dla kanału poleceń. Pasywny zakres portów jest zdefiniowany dla transferów plików i list katalogów i zezwala na połączenia przychodzące. Ten proces definiowania może się różnić w zależności od używanego serwera FTP. Więcej informacji można znaleźć w jego dokumentacji. Po stronie klienta połączenie wychodzące na porcie 21/tcp powinno być dozwolone wraz z pasywnym zakresem portów zdefiniowanym na serwerze.

Uwierzytelnianie w FTP

Informacje uwierzytelniające FTP są przekazywane przez kanał poleceń podczas początkowego nawiązywania połączenia. FTP może używać nazwy użytkownika i hasła do uwierzytelniania lub może być anonimowy, aby umożliwić każdemu zalogowanie się i dostęp do serwera.

Aktywne i pasywne tryby FTP

FTP używa trybu aktywnego lub pasywnego do konfigurowania połączeń.

W trybie aktywnym użytkownik łączy się z losowego portu klienta FTP do portu FTP 21/tcp na serwerze i wysyła polecenie PORT, określając port klienta, z którym ma się połączyć serwer. Ten port będzie używany dla kanału danych.

Następnie serwer łączy się z portu 20/tcp z portem klienta określonym wcześniej przez klienta poleceniem 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 losowego portu od klienta FTP do portu 21/tcp na serwerze i wysyła polecenie PASV. Następnie serwer odpowiada losowym portem, który powinien być użyty dla kanału danych. Następnie klient używa innego losowego portu do łączenia się z portem, na który odpowiedział serwer we wcześniejszym kroku. To połączenie kanału danych jest następnie używane do przesyłania plików między serwerem a klientem.

Tak więc w trybie aktywnym początkowe żądanie połączenia jest inicjowane przez klienta, podczas gdy żądanie połączenia kanału danych jest inicjowane przez serwer.

Z drugiej strony, w trybie pasywnym, zarówno początkowe żądania połączenia, jak i kolejne żądania kanału danych są inicjowane przez klienta do serwera. Ta subtelna różnica czasami wpływa na sposób, w jaki zapora zezwala lub blokuje tradycyjne żądania FTP ze względu na kierunek typu połączenia przychodzącego/wychodzącego.

FTPS

Nawet jeśli chcesz podjąć ryzyko związane z FTP z nieszyfrowaną transmisją danych i atakami typu main-in-the-middle, wymagania branżowe zmuszają Cię do korzystania z bezpieczniejszej alternatywy, takiej jak FTPS i SFTP, które są stosunkowo dużo bezpieczniejsze.

W 1990 roku, wraz ze zmieniającym się krajobrazem bezpieczeństwa, firma Netscape stworzyła protokół SSL lub Secure Sockets Layer (SSL, obecnie znany jako TLS), aby chronić komunikację w sieci. SSL został zastosowany do FTP, który stał się FTPS lub File Transfer Protocol Secure. FTPS lub FTP/S zwykle działa na porcie 990/tcp, ale można go również zobaczyć na porcie 21/tcp. Podobnie dla kanału danych port 989/tcp jest wspólnym portem używanym przez FTPS. Jeśli port poleceń to 21/tcp, jego port danych powinien wynosić 20/tcp.

Podobnie jak FTP, FTPS wykorzystuje do komunikacji dwa kanały: kanał poleceń i kanał danych. Kanał danych można zaszyfrować za pomocą protokołu FTPS lub w celu zwiększenia bezpieczeństwa można zaszyfrować zarówno kanały poleceń, jak i kanały danych.

FTPS, podobnie jak FTP, również wykorzystuje wiele portów dla kanałów poleceń i danych. Tak więc port 21/tcp jest używany do początkowego połączenia i transmisji informacji uwierzytelniających. Później różne porty będą potrzebne do skonfigurowania kanałów danych dla każdego żądania transferu plików lub listy katalogów od klienta. Tak więc, podobnie jak FTP, wymaga dostępu do szeregu portów w zaporze.

Uwierzytelnianie w FTPS

Uwierzytelnianie dla FTPS działa przy użyciu nazwy użytkownika i hasła wraz z certyfikatem serwera do szyfrowania. Gdy klient FTPS łączy się z serwerem, sprawdza, czy certyfikat serwera jest zaufany, aby kontynuować połączenie. Ten certyfikat można zażądać od klienta i serwera.

SFTP

W przeciwieństwie do FTP i FTPS, SFTP (SSH File Transfer Protocol) to zupełnie inny protokół zbudowany na SSH (lub Secure Shell). SFTP domyślnie działa na porcie 22/tcp, tak samo jak SSH, chociaż można go skonfigurować tak, aby używał niestandardowego wolnego portu na serwerze.

SFTP to bezpieczny protokół FTP, który wykorzystuje pod spodem SSH do wysyłania i odbierania plików. SSH jest całkowicie zaszyfrowany, SFTP jest solidną i bezpieczną metodą przesyłania plików przez sieć.

SFTP, w przeciwieństwie do FTP i FTPS, wykorzystuje jeden kanał komunikacyjny do przesyłania poleceń i ruchu danych, z których wszystkie są przekazywane w postaci zaszyfrowanej wraz z wstępnym uwierzytelnianiem.

Uwierzytelnianie w SFTP

Uwierzytelnianie w SFTP można przeprowadzić za pomocą prostej 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 przez sieć.

SFTP obsługuje również uwierzytelnianie za pomocą pary kluczy SSH, kombinacji kluczy prywatnych i publicznych, gdzie klient dostarcza klucz prywatny dla określonego użytkownika, a serwer powinien mieć odpowiedni klucz publiczny, aby uwierzytelnienie się powiodło. Jest to bezpieczniejsze niż używanie kombinacji nazwy użytkownika i hasła. Możliwe jest uwierzytelnienie tego samego użytkownika za pomocą hasła i kluczy SSH, jeśli obie metody są skonfigurowane na serwerze SFTP.

Streszczenie

W tym artykule podsumowano podstawowe cechy różnych popularnych protokołów przesyłania plików, a mianowicie FTP, FTPS i SFTP, oraz podkreślono subtelne i główne różnice między tymi protokołami. Obejmuje porty, które należy zezwolić w zaporze ogniowej, aby skonfigurować działający serwer FTP/FTPS/SFTP, jednocześnie podkreślając potrzebę przełączenia się na bezpieczniejsze protokoły, takie jak FTPS i SFTP.

Kiedy mówię tutaj FTP, mam na myśli wszelkie protokoły omówione w tym artykule. Powód, dla którego FTP jest stary, ma dziesięciolecia, a nawet nowsze bezpieczne wersje są czasami określane jako FTP zamiast ich nazwy wyznaczonej do codziennego użytku.

Możesz być również zainteresowany poznaniem najlepszego oprogramowania serwera FTP i klientów FTP/SFTP.