Bezpieczniejsza opcja zdalnego dostępu [2023]

W dobie powszechnej komunikacji na odległość, zarówno użytkownicy, jak i administratorzy systemów potrzebują narzędzi umożliwiających bezpieczne i sprawne wykonywanie zadań zdalnych.

Gdy mowa o metodach zdalnego łączenia się, najczęściej wymieniane są dwie nazwy: SSH i Telnet.

Który z nich, SSH czy Telnet, jest lepszy? W niniejszym artykule przyjrzymy się bliżej tym dwóm protokołom i sprawdzimy, który z nich lepiej sprawdza się w roli narzędzia do zdalnego dostępu. Zapraszamy do lektury naszego porównania SSH i Telnet.

Czym jest dostęp zdalny?

Dostęp zdalny to funkcja umożliwiająca użytkownikom lub administratorom łączenie się z komputerami lub innymi urządzeniami w sieci z dowolnego miejsca za pośrednictwem internetu. Dzięki temu mogą oni wykonywać różnorodne operacje, takie jak przesyłanie plików, współpraca nad projektami czy zabezpieczanie danych przesyłanych przez aplikacje.

Zdalny dostęp jest kluczowy dla sprawnego funkcjonowania i rozwoju współczesnych organizacji. Administratorzy korzystają z niego do zarządzania serwerami, sieciami i aplikacjami, bez konieczności fizycznej obecności w serwerowni.

Co to jest SSH?

Secure Shell (SSH), znany również jako Secure Socket Shell, to protokół sieciowy, który umożliwia bezpieczną komunikację pomiędzy komputerami w niechronionej sieci.

Po nawiązaniu chronionego połączenia, użytkownik lub administrator może zalogować się na zdalnym urządzeniu i zdalnie uruchamiać aplikacje lub przesyłać pliki za pośrednictwem szyfrowanego połączenia typu end-to-end.

SSH to zbiór technologii i narzędzi, które implementują protokół SSH. Aby zapewnić bezpieczeństwo, SSH wykorzystuje uwierzytelnianie za pomocą klucza publicznego, szyfrowaną komunikację danych oraz uwierzytelnianie z wykorzystaniem silnego hasła.

Firmą, która stała za rozwojem SSH, jest Netscape Communications Corporation. Jednak pierwszymi projektami SSH zajmował się fiński informatyk, Tatu Ylonen. Opracował on protokół po odkryciu tajnego oprogramowania szpiegującego hasła w swojej nowo utworzonej sieci.

Jak działa SSH?

SSH zastąpił starsze protokoły zdalnej łączności, takie jak Telnet, rlogin czy rsh. Wiele z tych starszych protokołów było popularnych, ale jednocześnie nie zapewniało odpowiedniego poziomu bezpieczeństwa. SSH jest na tyle zaawansowany, że użytkownicy chętnie korzystają z niego zamiast z protokołów przesyłania plików, takich jak zdalne kopiowanie (rcp) i protokół przesyłania plików (FTP).

SSH wykorzystuje model klient-serwer, gdzie klient SSH łączy się z serwerem SSH.

  • Klient SSH to program, który znajduje się na komputerze lub urządzeniu inicjującym protokół SSH. Klient wysyła żądanie do serwera SSH i oczekuje na jego akceptację. Klient SSH używa szyfrowania kluczem publicznym, aby upewnić się, że łączy się z właściwym serwerem. Takie podejście ma na celu zapobieganie atakom typu „man-in-the-middle” i kradzieży poufnych informacji.
  • Serwer SSH obsługuje połączenia SSH i uruchamia usługę. Aby móc przyjmować połączenia, serwer SSH nieustannie nasłuchuje na porcie TCP 22 (domyślnie). Gdy serwer otrzyma żądanie, odpowiada na nie. Serwer SSH weryfikuje i uwierzytelnia klienta za pomocą uwierzytelniania opartego na kluczu publicznym. Dopiero po pomyślnym uwierzytelnieniu klient uzyskuje dostęp do systemu hosta.

Klient i serwer wspólnie wybierają parametry szyfrowania. Mają również możliwość wyłączenia słabszych algorytmów szyfrowania. Ponadto, SSH obsługuje wiele połączeń, umożliwiając wykonywanie różnorodnych zadań (pobieranie, edycja, uruchamianie programów) poprzez otwieranie wielu kanałów za pośrednictwem jednego połączenia SSH.

Składnia polecenia SSH wygląda następująco:

$ ssh [email protected]

Nazwa_użytkownika to nazwa użytkownika, której używasz do łączenia się z hostem. Hostem może być adres IP lub nazwa domeny.

Uproszczony proces połączenia SSH składa się z następujących etapów:

  • Klient SSH inicjuje połączenie z określonym serwerem SSH.
  • Serwer SSH odbiera połączenie i przesyła swój klucz publiczny do klienta.
  • Klient zapisuje klucz publiczny serwera w pliku swojego hosta (na potrzeby przyszłych połączeń).
  • Serwer i klient uzgadniają parametry połączenia.
  • SSH to solidne rozwiązanie do komunikacji zdalnej, które oferuje wysoki poziom bezpieczeństwa i chroni integralność danych. Protokół SSH jest zgodny ze standardami IETF, co ułatwia jego wdrożenie. Na rynku jest obecny i sprawdzony od ponad 15 lat.

    Jeśli chcesz zgłębić techniczne aspekty SSH, zapoznaj się z dokumentem standaryzacyjnym RFC 4253. Polecamy również artykuł na newsblog.pl, który w przystępny sposób wyjaśnia działanie SSH.

    Co to jest Telnet?

    Telnet to skrót od Teletype Network. Jest to kolejny popularny protokół sieciowy, który umożliwia zdalne połączenie za pośrednictwem interfejsu wiersza poleceń. Podobnie jak SSH, pozwala na zdalne kontrolowanie komputera i wykonywanie zadań. Jednak w przeciwieństwie do SSH, Telnet nie oferuje żadnych mechanizmów bezpieczeństwa.

    Brak zabezpieczeń w Telnet wynika z tego, że powstał on w 1969 roku, gdy większość komunikacji odbywała się w bezpiecznej sieci lokalnej. W dzisiejszych czasach, kiedy większość komunikacji odbywa się przez niechroniony internet, brak zabezpieczeń Telnet stanowi poważny problem.

    Jak działa Telnet?

    Telnet działa na zasadzie przesyłania tekstowych komunikatów między terminalami klienta i serwera. Protokół wykorzystuje model klient-serwer z 8-bitowym połączeniem.

    Po nawiązaniu połączenia, możesz zdalnie wykonywać różne operacje na komputerze, takie jak sprawdzanie otwartych portów, konfigurowanie urządzeń, edycja plików, a nawet uruchamianie programów.

    Składnia polecenia Telnet wygląda następująco:

    $ telnet nazwa_hosta port

    Aby dowiedzieć się więcej o usłudze Telnet, polecamy artykuł „Polecenia usługi Telnet do testowania i rozwiązywania problemów z połączeniem”.

    Kiedy i gdzie należy używać SSH?

    SSH jest najczęściej wykorzystywane do:

    • Zdalnej administracji systemem
    • Zdalnego wykonywania poleceń
    • Zabezpieczania ruchu aplikacji
    • Transferu plików

    Administratorzy mogą również konfigurować zautomatyzowane sesje SSH do wykonywania powtarzalnych zadań, takich jak tworzenie kopii zapasowych, gromadzenie plików dziennika, okresowe prace konserwacyjne.

    SSH powinno być używane do wszelkich operacji zdalnego połączenia, szczególnie w niezabezpieczonych sieciach, takich jak Internet. SSH jest również zalecane w sieciach lokalnych, ponieważ nigdy nie można mieć pewności co do ich całkowitego bezpieczeństwa.

    Kiedy i gdzie należy korzystać z Telenetu?

    Z racji braku zabezpieczeń, należy unikać korzystania z Telnetu do zdalnego łączenia się w niezabezpieczonych sieciach. Nie oznacza to jednak, że Telnet jest całkowicie bezużyteczny.

    Telnet można wykorzystać do:

    • Rozwiązywania problemów z SSH (tak, to nie pomyłka 😃)
    • Rozwiązywania problemów z serwerami FTP, SMTP i WWW.
    • Sprawdzania, czy port jest otwarty
    • Uzyskiwania dostępu do zaufanych sieci internetowych

    SSH kontra Telnet

    W tej części porównamy SSH i Telnet pod względem różnych kryteriów. Dla tych, którzy się spieszą, przygotowaliśmy tabelę porównawczą SSH i Telnet.

    SSHTelnetBezpieczeństwoWysoce bezpieczny, umożliwia klientowi i serwerowi uzgodnienie algorytmów szyfrowania.Niezabezpieczony, brak mechanizmów chroniących połączenie i pakiety danych.UwierzytelnianieSSH korzysta z szyfrowania kluczem publicznym do celów uwierzytelnienia.Telnet nie ma mechanizmu uwierzytelniania. Wymaga podania nazwy użytkownika i hasła, które są przesyłane bez żadnej ochrony.DziałanieSSH domyślnie używa portu TCP 22. Możliwa jest zmiana portu, aby uniemożliwić nieautoryzowany dostęp.Telnet domyślnie korzysta z portu 23 do nasłuchiwania przychodzących połączeń. Możliwa jest konfiguracja w celu ochrony przed nieautoryzowanym dostępem.ModelModel klient-serwer.Model klient-serwer.Szybkość przesyłania danychTechnicznie wolniejsza niż Telnet, ale w praktyce różnica jest niemal niezauważalna.Szybsza niż SSH, z uwagi na brak protokołów bezpieczeństwa.Tabela: SSH vs Telnet

    Bezpieczeństwo

    SSH to bezpieczny protokół. Zapewnia ochronę połączenia poprzez zastosowanie odpowiednich algorytmów szyfrowania. Z kolei Telnet jest całkowicie pozbawiony jakichkolwiek zabezpieczeń.

    W przypadku SSH, klient i serwer uzgadniają parametry połączenia, w tym algorytm szyfrowania typu end-to-end. Takie podejście eliminuje możliwość wykorzystania słabszych algorytmów szyfrowania, co gwarantuje maksymalne bezpieczeństwo połączenia.

    Po nawiązaniu połączenia TCP/UDP między klientem a serwerem, rozpoczyna się proces tworzenia bezpiecznego połączenia.

    Aby lepiej zrozumieć, jak działa bezpieczeństwo w SSH, przyjrzyjmy się strukturze pakietu SSH. Pakiet SSH składa się z pięciu elementów:

    • Długość pakietu: 4 bajty, informacja o wielkości pakietu
    • Wielkość dopełnienia: 1 bajt, informacja o ilości dopełnienia w pakiecie
    • Ładunek: rzeczywiste przesyłane dane, jego rozmiar jest zmienny
    • Dopełnienie: losowe bajty dodawane do ładunku w celu jego zaszyfrowania
    • Kod uwierzytelniania wiadomości: znacznik służący do weryfikacji autentyczności pakietu i sprawdzenia, czy dane nie zostały zmienione

    W SSH, dzięki zastosowaniu szyfrowania, dostępne do odczytu są jedynie długość pakietu i kod uwierzytelniania wiadomości. Klient i serwer uzgadniają parametry połączenia przy użyciu kodu uwierzytelniania. Dodatkowo, pakiety SSH mogą być kompresowane za pomocą różnych algorytmów kompresji.

    Telnet nie posiada żadnych zabezpieczeń. Uwierzytelnianie odbywa się w sposób niechroniony. W związku z tym, każdy złośliwy podmiot może odczytać pakiety Telnet i przejąć połączenie.

    Uwierzytelnianie

    SSH jest bezpiecznym protokołem. Do uwierzytelniania klienta i serwera wykorzystuje szyfrowanie kluczem publicznym. W bardziej szczegółowym ujęciu, SSH może wykorzystywać symetryczne lub asymetryczne algorytmy kryptograficzne do parowania kluczy publicznych i prywatnych.

    Z drugiej strony, Telnet nie ma mechanizmów ochrony uwierzytelniania. Proces uwierzytelniania w Telnet wymaga podania nazwy konta i hasła przed połączeniem. Co więcej, nazwa użytkownika i hasło są przesyłane bez żadnych zabezpieczeń, co czyni je łatwym celem dla osób niepowołanych.

    Działanie

    Jeśli chodzi o działanie, SSH domyślnie używa portu TCP 22, natomiast Telnet korzysta z portu TCP 23. Używając tych protokołów, bez podawania numeru portu, polecenie automatycznie połączy się z portami 22 lub 23.

    Jednak te porty są powszechnie znane, co może być wykorzystane przez hakerów do przeprowadzania nieautoryzowanych ataków.

    Aby zwiększyć bezpieczeństwo, można zmienić domyślne porty SSH i Telnet. Najlepiej zamknąć standardowe porty i wybrać port z zakresu od 1024 do 65535.

    W Telnet, polecenia przesyłane są w formacie Network Virtual Terminal (NVT). Serwer Telnet jest w stanie odbierać i rozumieć ten format. Jak widać, w procesie tym nie ma żadnego szyfrowania ani uwierzytelniania.

    W przypadku SSH, po nawiązaniu połączenia klient-serwer, generowana jest sesja, która jest identyfikowana za pomocą klucza sesji. Ten klucz szyfruje ruch w trakcie całej sesji. Ponadto, serwer musi zweryfikować klienta, generując parę kluczy SSH. Po zakończeniu procesu weryfikacji, tworzony jest szyfrowany kanał typu end-to-end, który służy do bezpiecznego przesyłania danych.

    Model

    Zarówno SSH, jak i Telnet korzystają z modelu klient-serwer. Model ten niesie ze sobą szereg korzyści, takich jak:

    • Możliwość skalowania w poziomie, gdzie serwer może w razie potrzeby dodawać więcej zasobów.
    • Możliwość zoptymalizowania klientów pod kątem poprawnego wprowadzania danych.
    • Podział przetwarzania aplikacji między klientem a serwerem.

    Szybkość i koszty ogólne

    Aby dobrze zrozumieć różnice między SSH i Telnet, należy przeanalizować ich wpływ na koszty ogólne. Ogólnie rzecz biorąc, SSH ma większy narzut niż Telnet, ale w rzeczywistości ta różnica jest praktycznie nieodczuwalna.

    Zarówno Telnet, jak i SSH wymieniają klucze po 1 godzinie połączenia lub po przesłaniu 1 GB danych.

    SSH ma większy narzut w zakresie przepustowości, jednak ma to minimalny wpływ na odczucia użytkownika. W przypadku obciążenia procesora klienta i serwera, narzut jest minimalny, ze względu na efektywne działanie standardu AES w połączeniach SSH.

    Reasumując, z punktu widzenia użytkownika, nie widać różnicy w prędkości i kosztach między SSH a Telnetem. Jednak z technicznego punktu widzenia, SSH generuje nieco większe obciążenie niż Telnet.

    Przypadki użycia SSH i Telnet

    W tej części przyjrzymy się konkretnym przypadkom użycia protokołów SSH i Telnet.

    Przykłady zastosowania SSH:

    SSH znajduje zastosowanie w następujących sytuacjach:

    • Zdalne wykonywanie poleceń
    • Bezpieczny dostęp do zdalnych zasobów
    • Przesyłanie plików na odległość
    • Zdalne wdrażanie aktualizacji oprogramowania
    • Konfigurowanie automatycznego lub ręcznego transferu plików

    Przykłady zastosowania Telnetu:

    Telnet można wykorzystać w następujących przypadkach:

    • Rozwiązywanie problemów z SSH
    • Rozwiązywanie problemów z serwerami FTP, SMTP i WWW.
    • Sprawdzanie, czy port jest otwarty
    • Dostęp do zaufanych sieci internetowych

    Podsumowanie: Który protokół jest lepszy?

    Odpowiedź jest jednoznaczna: SSH jest lepszy. To nowoczesny, stale rozwijany protokół sieciowy, który zapewnia bezpieczny zdalny dostęp. Jak dotąd nie stwierdzono w nim żadnych poważnych luk w zabezpieczeniach. Ponadto jest prosty w użyciu i konfiguracji.

    Z drugiej strony, Telnet przechodzi do historii. Protokół ma już prawie 50 lat. Niemniej jednak, nadal jest użyteczny w niektórych sytuacjach, na przykład do rozwiązywania problemów z SSH czy sprawdzania, czy port jest otwarty. Administratorzy mogą korzystać z Telnetu do rozwiązywania wielu problemów sieciowych.