Wybierając protokół do transferu plików, powinieneś niemal zawsze wdrożyć SFTP, ponieważ zapewnia on najwyższy poziom kryptografii w oparciu o bezpieczny kanał SSH. Stary protokół FTP nadaje się dziś wyłącznie do kosza z powodu przesyłania haseł jawnym tekstem, a FTPS traktuj jako rozwiązanie ratunkowe dla środowisk, które nie obsługują nowoczesnej architektury. Odpowiedź na pytanie postawione w nagłówku jest prosta, ale mechanika stojąca za tym wyborem wymaga twardej weryfikacji.
Przerzucamy gigabajty danych między serwerami każdego dnia. Robimy to my, robią to systemy księgowe, robią to zautomatyzowane skrypty do robienia kopii zapasowych. Wiele osób konfigurując własny serwer lub wykupując hosting, staje przed panelem wyboru i widzi te trzy opcje. Zazwyczaj klikają pierwszą z brzegu. To błąd. Błąd, który kosztuje utratę bazy klientów, wyciek danych logowania i potężne kary z urzędów ochrony danych.
Zajmuję się administracją serwerami od lat. Widziałem setki wdrożeń. Prawda jest zresztą absolutnie taka, że większość wycieków w małych i średnich firmach nie wynika z zaawansowanych ataków hakerskich. Wynika z lenistwa i zostawienia otwartego portu 21. Przeanalizujemy techniczne powody, dla których protokół do transferu plików musi być wybierany z pełną świadomością architektury sieciowej.
Czym dokładnie jest stary protokół FTP i czy w ogóle wolno go jeszcze używać?
File Transfer Protocol to zabytek. Powstał w latach siedemdziesiątych ubiegłego wieku, kiedy internet przypominał małą wioskę, w której wszyscy się znali i ufali sobie nawzajem. Jego architektura opiera się na prostym modelu klient-serwer. Używa dwóch oddzielnych kanałów do komunikacji. Jeden kanał służy do przesyłania poleceń, a drugi do faktycznego pompowania danych. Brzmi sensownie, prawda? Niestety technologia ta ma jedną dyskwalifikującą wadę.
Brak jakiegokolwiek szyfrowania. To jest najgorsza opcja z wszystkich. Protokół FTP przesyła absolutnie każdą paczkę informacji jawnym tekstem. Dotyczy to nie tylko samych plików, ale również nazwy użytkownika i hasła. Jeśli logujesz się na serwer FTP z kawiarni, z lotniska, a nawet z własnego biura, każdy średnio rozgarnięty człowiek z podpiętym oprogramowaniem typu Wireshark widzi Twoje hasło w ułamku sekundy. Maszyna po prostu wyrzuca to w eter.
Pamiętam audyt w dużej firmie spedycyjnej pod Poznaniem. Wchodzę w logi routera brzegowego na rutynowy przegląd. Widzę wszystko. Hasła do głównego serwera z bazą danych klientów latały jawnym tekstem w pakietach FTP między oddziałami. Główny informatyk tłumaczył, że to wewnętrzna sieć i nic nie grozi. Zablokowaliśmy to w dwie godziny. Zmieniliśmy te zasady na robocie, ucinając dostęp do portu 21 z zewnątrz całkowicie. Jeśli ktoś uważa, że sieć wewnętrzna zwalnia z szyfrowania, to żyje w iluzji.
Z technicznego punktu widzenia FTP korzysta domyślnie z portu 21 dla poleceń i portu 20 dla danych w trybie aktywnym. W trybie pasywnym serwer otwiera losowy wysoki port dla klienta. To generuje koszmarne problemy na zaporach sieciowych. Administratorzy muszą dziurawić firewalle, żeby przepuścić ruch, co potęguje luki bezpieczeństwa. Wniosek jest krótki. Całkowicie wyłącz FTP na swoich serwerach.
Jak działa FTPS i w jakich sytuacjach ratuje stare serwery?
Kiedy branża IT zorientowała się, że czyste FTP to dziurawe sito, postanowiono nałożyć na to łatkę. Tak powstał FTPS, czyli File Transfer Protocol Secure. Mechanika jest prosta. Wzięto stary protokół i owinięto go warstwą szyfrowania SSL, a później TLS. Dzięki temu zyskaliśmy ochronę kryptograficzną w trakcie transportu pakietów.
Wdrożenie FTPS pozwala na ukrycie haseł i plików przed podsłuchem. Używamy tutaj certyfikatów X.509, dokładnie takich samych, jak przy zabezpieczaniu stron internetowych protokołem HTTPS. Serwer przedstawia certyfikat klientowi, klient weryfikuje jego autentyczność, a następnie zestawiają szyfrowany tunel. Występują tu jednak dwa warianty połączenia, o których musisz wiedzieć przed konfiguracją.
- Tryb Explicit (jawny): Klient łączy się na standardowy port 21 i od razu wysyła komendę AUTH TLS. Jeśli serwer to obsługuje, połączenie zostaje zaszyfrowane. Jeśli nie, zrzuca transfer do zwykłego, niebezpiecznego FTP.
- Tryb Implicit (niejawny): Klient łączy się na dedykowany port 990. Serwer zakłada z góry, że cały ruch od pierwszego bajtu musi być zaszyfrowany. Brak obsługi SSL/TLS po stronie klienta oznacza natychmiastowe odrzucenie połączenia.
- Problem z NAT i zaporami: FTPS nadal korzysta z dwóch oddzielnych kanałów. Szyfrowanie kanału sterowania sprawia, że routery z funkcją NAT nie potrafią odczytać numerów portów przydzielanych dynamicznie do transferu danych. Wymaga to ręcznego i żmudnego konfigurowania wyjątków w firewallach.
- Zarządzanie certyfikatami: Administrator musi pamiętać o odnawianiu certyfikatów SSL/TLS. Wygaśnięcie certyfikatu powoduje natychmiastowe zerwanie synchronizacji automatycznych skryptów i blokadę wymiany plików między systemami.
Zalecam FTPS w zdecydowanej większości tylko jako protezę dla starych systemów. Używaj go wtedy, gdy masz na produkcji maszyny typu mainframe lub oprogramowanie klasy ERP, które nie doczekało się aktualizacji od dekady i potrafi rozmawiać wyłącznie w dialekcie FTP. Wtedy FTPS ratuje sytuację przed wyciekiem. W nowej infrastrukturze w ogóle nie zawracaj sobie nim głowy.
Dlaczego to właśnie SFTP uważa się za najlepszy standard przesyłania danych?
SFTP to SSH File Transfer Protocol. Bardzo wielu ludzi myli go z FTPS z powodu podobnej nazwy. To błąd logiczny. SFTP nie ma z protokołem FTP absolutnie nic wspólnego poza tym, że służy do transferu plików. Został napisany od zera jako rozszerzenie protokołu Secure Shell. Cała magia dzieje się wewnątrz jednego, bezpiecznego i hermetycznego tunelu SSH.
Główny podział i przewaga SFTP leży w architekturze portów. SFTP używa tylko jednego portu. Domyślnie jest to port 22. Ten sam, którym logujesz się do terminala serwera Linux. Wszystko, komendy, hasła, katalogi, pliki, leci przez to jedno otwarte okno. To oznacza koniec problemów z zaporami sieciowymi. Otwierasz port 22 i system działa. Firewalle to uwielbiają.
Kolejna potężna przewaga to uwierzytelnianie bez użycia haseł. SFTP natywnie i doskonale obsługuje klucze kryptograficzne. Generujesz parę kluczy. Prywatny zostaje na twoim komputerze, a publiczny wrzucasz na serwer. System loguje cię na podstawie matematycznego dowodu posiadania klucza. Możesz całkowicie zablokować logowanie hasłem w pliku konfiguracyjnym serwera. Nawet jeśli ktoś przeprowadzi atak brute-force na twój serwer, odbije się od ściany z komunikatem o braku uprawnień. Zablokowanie haseł to pierwsza rzecz, jaką robimy na wdrożeniach.
Z punktu widzenia integralności danych SFTP wygrywa z każdym konkurentem na rynku. Protokół weryfikuje każdą paczkę danych pod kątem modyfikacji. Jeżeli cokolwiek w pliku zmieni się podczas przesyłania, protokół natychmiast to wykryje i odrzuci transfer. To daje gwarancję, że przesyłany plik z kopią bazy danych jest w stu procentach identyczny z oryginałem. Przy zwykłym FTP uszkodzenia pakietów często przechodzą niezauważone, co wychodzi na jaw dopiero przy próbie odtworzenia backupu.
Jakie są różnice techniczne między portem 21 a portem 22?
Różnica to nie tylko numerek. To cała filozofia dostępu do maszyny. Port 21 to nasłuch demona FTP, który z natury jest usługą podrzędną, często źle napisaną i pełną starych luk w kodzie. Wielu administratorów instaluje na serwerach pakiety typu vsftpd lub ProFTPD, zostawiając konfigurację domyślną. To zaproszenie dla botów skanujących sieć.
Port 22 to domena demona OpenSSH. To oprogramowanie jest audytowane przez najlepszych specjalistów od cyberbezpieczeństwa na świecie. Każda linijka kodu jest poddawana rygorystycznej weryfikacji. OpenSSH obsługuje transfer SFTP jako wewnętrzny podsystem. Oznacza to, że nie musisz instalować osobnego serwera do transferu plików. Włączasz usługę SSH i od razu masz gotowy, najwyższej klasy serwer SFTP. Mniej oprogramowania to mniejsza powierzchnia ataku.
Jak przygotować bezpieczny serwer plików bez zatrudniania sztabu ludzi?
Wielu przedsiębiorców uważa, że wdrożenie szyfrowanego transferu plików wymaga ogromnych budżetów i armii konsultantów. To bzdura. Wymaga to po prostu trzymania się kilku prostych reguł inżynieryjnych. Jeśli masz serwer VPS na systemie Debian lub Ubuntu, postawienie twardego jak skała serwera SFTP zajmuje maksymalnie trzydzieści minut.
Pierwszym krokiem jest utworzenie osobnego użytkownika w systemie, który nie ma uprawnień do logowania się do powłoki bash. Nie chcesz, żeby osoba przesyłająca pliki mogła wykonywać polecenia na serwerze. Ustawiasz mu powłokę na /bin/false. Drugim krokiem jest wdrożenie mechanizmu Chroot Jail. Zamykasz tego użytkownika w jego własnym katalogu. Po zalogowaniu widzi on ten katalog jako główny korzeń systemu. Nie wyjdzie wyżej, nie podejrzy plików systemowych, nie zobaczy danych innych klientów.
Później edytujesz plik sshd_config. Wyłączasz logowanie hasłem. Zostawiasz tylko klucze. Ograniczasz dostęp do portu 22 z określonych adresów IP, jeśli to tylko sieć firmowa. Na koniec restartujesz usługę. Masz w tym momencie serwer odporny na zdecydowaną większość zautomatyzowanych ataków z sieci. Oczywiście nic nie zastąpi regularnych aktualizacji pakietów bezpieczeństwa w systemie operacyjnym.
FTP, FTPS czy SFTP – co wdrożyć w e-commerce i przemyśle?
Jeśli prowadzisz sklep internetowy, z pewnością importujesz pliki XML lub CSV z hurtowni. Jeżeli hurtownia wymusza na tobie odbieranie cenników po czystym FTP, zażądaj zmiany. To naraża całą twoją infrastrukturę, ponieważ skrypt na twoim serwerze musi autoryzować się jawnym hasłem, które podajesz w konfiguracji sklepu. Ustaw protokół do transferu plików na SFTP w module integracyjnym. Większość nowoczesnych platform e-commerce ma to wbudowane w kod.
W przemyśle, gdzie zarządzamy logami z maszyn produkcyjnych CNC, często spotykamy starą elektronikę. Niektóre maszyny potrafią wysyłać raporty z produkcji tylko po FTP. Tutaj izolujemy takie urządzenia w osobnym VLAN-ie. Sieć nie ma wyjścia do internetu. Maszyna zrzuca pliki FTP na lokalny serwer pośredniczący wewnątrz hali, a dopiero ten serwer pakuje dane i wysyła je bezpiecznym kanałem SFTP do centrali. Zabezpieczenie starych technologii wymaga po prostu dodania jednej warstwy buforowej przed wystawieniem czegokolwiek na zewnątrz.
Zestawienie techniczne protokołów przesyłania plików
Dla ostatecznego uporządkowania danych przygotowałem tabelę, która precyzyjnie rozbija te trzy technologie na czynniki pierwsze. Rzut oka na te parametry ucina wszelkie dyskusje z administratorami upierającymi się przy starych rozwiązaniach.
| Cecha protokołu | FTP | FTPS | SFTP |
| Standardowy port | 21 | 21 (Explicit) / 990 (Implicit) | 22 |
| Szyfrowanie danych | Brak (Jawny tekst) | SSL / TLS | SSH |
| Liczba kanałów komunikacji | 2 (Polecenia i Dane) | 2 (Polecenia i Dane) | 1 (Zunifikowany) |
| Przyjazność dla zapory sieciowej (NAT) | Bardzo niska | Niska | Bardzo wysoka |
| Rekomendacja wdrożeniowa | Bezwzględnie unikać | Tylko systemy starszej generacji (Legacy) | Zalecany standard w branży |
Używanie odpowiedniego klienta też ma znaczenie. Programy takie jak FileZilla, WinSCP czy Cyberduck obsługują wszystkie wymienione standardy. Problem polega na tym, że domyślnie po wpisaniu adresu IP, FileZilla próbuje połączyć się przez zwykłe FTP. Musisz ręcznie zmienić prefix w adresie na sftp:// lub wymusić port 22 w oknie szybkiego łączenia. Edukacja pracowników w tej kwestii zmniejsza ryzyko pomyłki do zera.
Zaloguj się na swój serwer zaraz po przeczytaniu tego tekstu. Uruchom skaner sieciowy lub zapytaj swojego dostawcę hostingu. Sprawdź, czy twój port 21 jest otwarty na świat i czy przyjmuje komendy. Jeśli odpowiada bez wymuszania TLS, masz poważną dziurę w systemie i gotowy problem do rozwiązania na dzisiejszy wieczór.
Często zadawane pytania (FAQ)
- Co to jest protokół do transferu plików?
Jest to zbiór reguł i standardów sieciowych umożliwiających przesyłanie plików między komputerami w sieci lokalnej lub przez internet. Najpopularniejsze standardy to FTP, FTPS oraz SFTP. - Czy FTP jest bezpieczne?
Absolutnie nie. FTP przesyła wszystkie dane, w tym hasła i nazwy użytkowników, jawnym tekstem. Każda osoba monitorująca ruch w sieci może je przechwycić. - Czym różni się FTPS od SFTP?
FTPS to stary protokół FTP zabezpieczony dodatkową warstwą certyfikatów SSL/TLS. SFTP to zupełnie inna technologia zbudowana od podstaw w oparciu o bezpieczny tunel SSH, wykorzystująca tylko jeden port komunikacyjny. - Jaki port wykorzystuje SFTP?
SFTP domyślnie wykorzystuje port 22. Jest to ten sam port, który służy do bezpiecznego zarządzania serwerami poprzez terminal w systemach Linux. - Czy do SFTP potrzebuję certyfikatu SSL?
Nie. SFTP nie używa certyfikatów SSL znanych ze stron internetowych. Uwierzytelnianie i szyfrowanie odbywa się za pomocą kluczy kryptograficznych SSH (publicznych i prywatnych). - Jakiego klienta użyć do SFTP?
Najpopularniejsze darmowe programy obsługujące standard SFTP to FileZilla, WinSCP oraz Cyberduck. Wymagają one jedynie zmiany domyślnego protokołu przed nawiązaniem połączenia z serwerem.
Bibliografia
1. Naukowa i Akademicka Sieć Komputerowa – https://nask.pl
2. Zespół Reagowania na Incydenty Bezpieczeństwa Komputerowego – https://cert.pl
3. Ministerstwo Cyfryzacji – https://www.gov.pl/web/cyfryzacja
4. Urząd Ochrony Danych Osobowych – https://uodo.gov.pl
5. Wydawnictwo Naukowe PWN – https://pwn.pl
