• Czas czytania ~8 min
  • 25.03.2024

Dowiedz się, jak działa SSH, do czego jest zwykle używany i jak może być podatny na ataki.

Secure Shell lub Secure Socket Shell to protokół sieciowy, który pozwala urządzeniom osiągnąć dwie ważne rzeczy: komunikować się i udostępniać dane. Dodatkowo protokół SSH szyfruje również dane, dzięki czemu idealnie nadaje się do niezabezpieczonych sieci. Ale czym dokładnie jest SSH i jak działa?

Termin Secure Socket Shell definiuje zarówno kryptograficzny protokół sieciowy, jak i programy, które umożliwiają jego działanie.

SSH umożliwia administratorom sieci dostęp do komputera za pośrednictwem niezabezpieczonej sieci w bezpieczny sposób. Zapewnia bezpieczne połączenie, które pozwala na obsługę i zarządzanie zdalnymi komputerami bez martwienia się o bezpieczeństwo udostępnianych danych.  

Aby to osiągnąć, protokół SSH zapewnia nie tylko szyfrowanie za pomocą bezpiecznego kanału, ale także silne uwierzytelnianie hasłem i uwierzytelnianie kluczem publicznym.

Protokół SSH i klucze SSH – dane uwierzytelniające dostęp w protokole – zabezpieczają miliony transferów plików, zautomatyzowanych funkcji i sesji utrzymania dziennie. Czytaj dalej, 

jeśli chcesz dowiedzieć się więcej o serwerach SSH i programach klienckich, które umożliwiają dotarcie do nich. A także podstawowe przypadki użycia protokołu SSH i jego luki w zabezpieczeniach.

Jak działa SSH?

SSH używa modelu klient-serwer do połączenia aplikacji i serwera lub lokalizacji, w której sesja jest wyświetlana i miejsca, w którym jest faktycznie uruchomiona.

Innymi słowy, klienci SSH kontaktują się z serwerami SSH, aby rozpocząć proces konfiguracji połączenia. Serwer SSH wysyła swój klucz publiczny, a za pomocą kryptografii klucza publicznego klient próbuje zweryfikować tożsamość serwera. 

Po zakończeniu tego protokół SSH zaczyna używać silnych symetrycznych protokołów szyfrowania i algorytmów haszujących w celu zapewnienia prywatności i bezpiecznego przesyłania plików. W ten sposób odbywa się bezpieczna wymiana danych między klientem a serwerem.

Klient i serwer SSH robią to za pomocą różnych metod szyfrowania, ale najpopularniejsze z nich to Blowfish i Advanced Encryption Standard

Blowfish to najstarszy algorytm szyfrowania symetrycznego. Jednak Advanced Encryption Standard, opracowany przez National Institute of Standards and Technology, jest stosowany szerzej. 

Oto uproszczony widok całego procesu.

Four actions between Klient and Serwer.
How Klient contacts server, Serwer sends public key, client negotiates parameters and server logs into host system

SSH działa również podobnie do typowej wirtualnej sieci prywatnej (VPN). VPN tworzy również zaszyfrowany tunel dla bezpiecznej komunikacji. Jedyna różnica polega na tym, że VPN nie korzysta z modelu klient-serwer, ale zamiast tego z bezpiecznego połączenia między Twoim urządzeniem a serwerem VPN.

Ważne jest również, aby pamiętać, że bezpieczne połączenie SSH działa inaczej w różnych systemach operacyjnych:

  • Na komputerach Mac i Linux – za pośrednictwem terminala
  • W systemie Windows – za pośrednictwem zainstalowanego klienta SSH

Relacja klient-serwer może być trudna do zrozumienia. Zagłębmy się więc w to, jak działają zarówno serwery SSH, jak i klienci SSH. 

Serwer

As stated previously, the Serwer is always the one that initiates the network connection. However, it also stays vigilant for new connections and responds to them. The server does that using the host system’s TCP port 22

Na początku każdego połączenia SSH serwer musi uwierzytelnić się na kliencie przy użyciu kryptografii klucza publicznego. To uwierzytelnianie klienta jest konieczne, aby klient SSH mógł upewnić się, że komunikuje się z legalnym serwerem, a nie z osobą atakującą.

Po nawiązaniu bezpiecznego połączenia między klientem a serwerem użytkownicy mogą wykonywać:

  • Przesyłanie plików
  • Zdalne wykonywanie poleceń
  • Zdalna administracja hostem
  • Inne zabezpieczenia ruchu aplikacji
List of actions internet users can perform because of safe SSH connection.
What internet users can do using a safe connection

Unfortunately, the Serwer is often the chosen target of cyberattackers as it provides remote access to the host system. Due to that, the software quality must be high, and the server must have strict security requirements. In other words, its code has to be reliable to prevent bugs and imperfections that could lead to unnecessary exposure. 

Klient

System administrators can benefit from secure connections by installing a program on their local machine and the remote computer. This software is known as the Secure Socket Client. There are many popular Klient services on the web to choose from for local and remote computers. 

Podczas gdy urządzenia Mac i Linux zwykle korzystają z programu Terminal, system operacyjny Windows wymaga dedykowanego programu klienckiego do uruchamiania poleceń SSH. Na przykład PuTTY, KiTTY, MobaXterm lub WinSCP. 

Once you have a client installed on a local machine, you also have to install an Serwer to accept SSH connections. This is how you can start using this secure alternative to regular remote access options. Essentially, the client acts as a secure environment, via which you connect to a remote host device.

Jeśli chodzi o uwierzytelnianie SSH, używasz nazwy użytkownika i hasła. Możesz również użyć pary kluczy publiczny-prywatny do bezpiecznego zarządzania dostępem zdalnym bez hasła. 

SSH authentication using public and private keys.
How Klients and servers use private and public keys

Ogólnie rzecz biorąc, klucze Secure Shell są ważną częścią protokołu SSH. Dlatego warto przeanalizować je bardziej szczegółowo. 

Klucz

szyfrowania Klucz szyfrowania jest formą uwierzytelniania użytkownika w ramach protokołu SSH. 

Klucze SSH są bezpieczną alternatywą w porównaniu ze zwykłymi hasłami i umożliwiają bezpieczną automatyzację. Na przykład automatyczne przesyłanie plików. Są one również często używane w narzędziach do zarządzania konfiguracją, skryptach i systemach tworzenia kopii zapasowych.

Klucze SSH to w rzeczywistości para kluczy kryptograficznych , która składa się z klucza prywatnego i klucza publicznego.

Klucz publiczny jest konfigurowany na serwerze w unikalnym formacie pliku klucza publicznego. Aby zezwolić użytkownikowi na dostęp z kopią odpowiedniego klucza prywatnego. A dzięki tej unikalnej relacji między kluczem publicznym a prywatnym zaszyfrowane klucze są znacznie bezpieczniejsze niż hasła. 

Jednak system nie jest doskonały, dlatego należy również użyć hasła, ponieważ szyfruje ono klucz prywatny. 

Hasło może chronić przed wyciekiem klucza i zapewnić, że cyberatakujący nie będzie mógł pomyślnie przeprowadzić uwierzytelniania za pomocą klucza publicznego. Krótko mówiąc, hakerzy mogą uzyskać dostęp do kluczy prywatnych, ale są one bezużyteczne, jeśli są zaszyfrowane hasłem. 

Niestety szacuje się, że ponad 90% kluczy SSH w dużych korporacjach nie ma hasła. Niewątpliwie stanowi to poważne zagrożenie dla bezpieczeństwa. 

Dobrą wiadomością jest to, że możesz sobie z tym poradzić, wdrażając różne praktyki zarządzania kluczami SSH , które mogą pomóc w stworzeniu bezpieczniejszej sieci. 

Do czego zwykle służy SSH?

Protokół SSH jest najczęściej używany w centrach danych, gdzie zapewnia:

  • Zdalny dostęp do różnych zasobów
  • Bezpieczne zarządzanie
  • Dostawa poprawek do oprogramowania
  • Administracja platformą wirtualizacji
  • Bezpieczne zarządzanie routerem
  • Konserwacja sprzętu serwerowego
List of ways in which the SSH is useful.
How SSH is typically used

W prawie wszystkich centrach danych SSH współpracuje z systemami operacyjnymi Mac, Unix i Linux.  

Protokół sieciowy SSH jest idealny dla administratorów sieci, którzy chcą uzyskać bezpieczny dostęp do zdalnego logowania do systemów zdalnych. Rutynowo używają protokołu do wykonywania poleceń do testowania aplikacji, ponownego uruchamiania systemów, automatyzacji transferów danych i wielu innych. 

SSH jest również bardzo przydatny dla dużych firm . Korporacje używają protokołu SSH do wykonywania szyfrowanych transferów plików, unikając w ten sposób innych, mniej bezpiecznych metod przesyłania plików. Grupa zadaniowa IETF ( Internet Engineering Task Force ) stworzyła protokół SSH File Transfer Protocol (SFTP) jako rozszerzenie protokołu SSH, aby zapewnić bezpieczeństwo każdego transferu plików.

Korporacje używają również protokołu do wykonywania różnych zautomatyzowanych zadań, takich jak:

  • Reporting
  • Kopia zapasowa systemu
  • Kopia zapasowa danych
  • Archiwizacja danych
  • Czyszczenie bazy danych
  • Konserwacja sieci

Mniejsze firmy mogą również skorzystać z zastosowania protokołu SSH. Na przykład mogą go używać do bezpiecznego udostępniania plików swoim klientom. 

Ogólnie rzecz biorąc, SSH jest korzystny dla nawiązywania szyfrowanych połączeń, bez względu na rzeczywisty przypadek użycia. Ruch SSH jest zawsze szyfrowany. Dlatego osoby, które chcą chronić swoją prywatność podczas przeglądania lub przesyłania plików, mogą skorzystać z protokołu Secure Shell. 

Czy SSH jest podatny na ataki?

Bezpieczeństwo komunikacji SSH nie jest idealne. Na szczęście znamy jego wady, które zazwyczaj wynikają z kluczy SSH i ich niewłaściwego użycia. Wiemy na przykład, że klucze SSH mogą zostać skradzione, a hakerzy mogą następnie wykorzystać je jako backdoora do podatnych na ataki systemów.

Nie jest to rzadkością i zwykle wiąże się z tym, że ludzie skupiają się tylko na ochronie swoich danych uwierzytelniających, całkowicie zapominając o ochronie kluczy.

Problem polega na tym, że gdy osoba atakująca uzyskuje dostęp do klucza SSH, uzyskuje również dostęp do wszystkich innych kluczy przechowywanych na urządzeniu. Zasadniczo, jeśli uda im się zdobyć tylko kilka kluczy, mogą uzyskać zdalny dostęp użytkownika do całej firmy. 

Hacker uses SSH key illegally to gain access.
How a hacker can use an SSH key illegally to gain unauthorized access

Rzućmy okiem na kilka luk w zabezpieczeniach SSH, na które należy zachować szczególną ostrożność:

  • Nieodpowiednie śledzenie kluczy SSH
  • Częste udostępnianie kluczy SSH
  • Statyczne klucze SSH i klucze osadzone

Nieodpowiednie śledzenie

kluczy SSH Duże firmy zwykle gromadzą ogromną liczbę kluczy SSH. Jeśli mają 10 000 lub więcej serwerów, mają miliony kluczy. Nic więc dziwnego, że mogą stracić z oczu niektóre z nich. 

Może to jednak łatwo doprowadzić do uzyskania przez hakerów dostępu do nierozliczonych kluczy. Dzięki temu mogą uzyskać długoterminowy dostęp do firmy. 

Częste udostępnianie kluczy

SSH Niestety, niektórzy pracownicy duplikują klucze, myśląc, że mogliby je efektywniej wykorzystać

To powiedziawszy, atakujący potrzebuje tylko kilku kluczy, aby uzyskać nieautoryzowany dostęp. Dlatego udostępnianie kluczy SSH jest czymś, co powinno być ściśle monitorowane i ograniczane, gdy tylko jest to możliwe.

Statyczne klucze SSH i klucze

osadzone Specjaliści ds. bezpieczeństwa i administratorzy IT często nie zmieniają kluczy, ponieważ obawiają się, że po drodze coś może zostać zapomniane. Tworzy to jednak wiele statycznych kluczy, które mogą szybko otworzyć tylne drzwi dla potencjalnych cyberprzestępców, jeśli je znajdą. 

Co więcej, klucze osadzone w skryptach i aplikacjach mogą również stać się statyczne. Administratorzy unikają ich zmiany, ponieważ nie rozumieją kodu źródłowego i nie chcą powodować awarii systemu. Ale te statyczne osadzone klucze mogą stać się problemem, podobnie jak inne statyczne klucze SSH. 

Wnioski

SSH might be one of the more complicated network protocols. However, the reason for its wide use and popularity is simple: All communication between the Klient and server is entirely encrypted and, therefore, incredibly safe. 

Oczywiście protokół SSH nie jest pozbawiony wad. To powiedziawszy, nadal jest znacznie lepszy niż inne metody uwierzytelniania. Może okazać się bardzo korzystny dla praktycznie każdej firmy, która potrzebuje bezpiecznej metody udostępniania plików i komunikacji przez Internet.

Jeśli chcesz zacząć korzystać z SSH, mamy nadzieję, że ten przewodnik pomógł Ci zrozumieć, jak to działa, do czego służy i jak możesz z niego bezpiecznie korzystać.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297