Protokół SSH: Co to jest? Jak działa?
SSH jest szeroko stosowany do zarządzania infrastrukturą sieciową, przesyłania plików i wydawania zdalnych poleceń. W tym artykule wyjaśnimy, czym jest protokół SSH, jak działa i dlaczego jest ważny.
Co to jest SSH?
SSH oznacza Secure Shell, co oznacza, że zapewnia powłokę (interfejs wiersza poleceń), która jest bezpieczna (zaszyfrowana i uwierzytelniona). SSH może również wykonywać inne czynności, takie jak wysyłanie plików, uruchamianie programów lub zmiana ustawień na innym komputerze.
Secure Shell to zestaw reguł, które mówią komputerom, jak bezpiecznie ze sobą rozmawiać. Składa się z trzech głównych komponentów: warstwy transportowej, warstwy uwierzytelniania użytkownika i warstwy połączenia. Część transportowa zapewnia, że komputery mogą sobie ufać i nikt nie może ich szpiegować ani zmieniać ich wiadomości. Część użytkownika zapewnia, że tylko właściwa osoba może uzyskać dostęp do drugiego komputera. Warstwa połączenia zapewnia, że komputery mogą wykonywać różne czynności w tym samym czasie, takie jak wpisywanie poleceń, wysyłanie plików lub otwieranie programów.
Protokół SSH chroni przed różnymi atakami, takimi jak podsłuchiwanie, manipulowanie, spoofing lub ataki typu man-in-the-middle. Secure Shell umożliwia również użytkownikom zdalne wykonywanie różnych zadań bez narażania swoich haseł lub danych na ataki hakerów lub złośliwych podmiotów.
Umożliwia ona przesyłanie dowolnego typu danych przez zaszyfrowany kanał, o ile zarówno klient, jak i serwer obsługują ten sam protokół. Na przykład SSH może przesyłać pliki tekstowe, binarne, audio, wideo lub obrazy za pomocą SCP lub SFTP. Można również wysyłać inne rodzaje danych, takie jak grafika, porty TCP/IP lub gniazda przy użyciu przekierowania portów lub tunelowania.
Jedną z najbardziej przydatnych funkcji SSH jest możliwość tworzenia tuneli lub serwerów proxy. Funkcja ta pozwala użytkownikom na przekazywanie lub przekierowywanie ruchu sieciowego z jednego portu lub adresu na inny port lub adres za pośrednictwem Secure Shell. Może to być przydatne do omijania zapór sieciowych, uzyskiwania dostępu do ograniczonych zasobów, szyfrowania niezabezpieczonych protokołów lub ukrywania aktywności sieciowej.
Jaka jest historia protokołu SSH?
Protokół bezpiecznego logowania został stworzony w 1995 roku przez fińskiego informatyka Tatu Ylönena. Chciał on stworzyć lepszy sposób łączenia się z innymi komputerami niż stare sposoby, które nie były bezpieczne i mogły zostać łatwo zhakowane. Wydał pierwszą wersję SSH (SSH-1) jako wolne oprogramowanie na licencji open-source. Później założył firmę zajmującą się rozwojem i sprzedażą produktów SSH.
SSH był początkowo nazywany Secure Remote Login (SRL), ale został zmieniony na Secure Shell (SSH), ponieważ SRL był już używany przez inny program. Innym ciekawym faktem jest to, że SSH został zainspirowany filmem o Jamesie Bondzie GoldenEye, w którym haker używa podobnego narzędzia do włamania się do systemu kontroli satelitarnej.
W 1996 roku grupa programistów pod przewodnictwem Björna Grönvalla rozpoczęła pracę nad darmową implementacją SSH o nazwie OpenSSH, opartą na kodzie źródłowym wcześniejszej wersji Secure Shell. OpenSSH został wydany w 1999 roku jako część systemu operacyjnego OpenBSD i szybko stał się najpopularniejszą implementacją SSH. OpenSSH dodał wiele funkcji i ulepszeń do SSH, takich jak obsługa SSH-2 (poprawiona wersja protokołu z ulepszonym bezpieczeństwem i funkcjonalnością), przekazywanie X11, przekazywanie agenta i obsługa IPv6.
W 2006 roku Internet Engineering Task Force (IETF) opublikowała serię dokumentów RFC, które ustandaryzowały protokół Secure Shell jako standard internetowy. RFC obejmują protokół podstawowy, protokół warstwy transportowej, protokół uwierzytelniania użytkownika, protokół połączenia oraz różne rozszerzenia i algorytmy.
Jak działa SSH?
Szyfrowane zdalne log owanie działa w oparciu o dwa komputery: klienta i serwer. Klient to komputer używany do łączenia się z serwerem. Serwer to komputer, na którym chcesz wykonywać różne czynności. Klient i serwer używają specjalnego programu o nazwie SSH, aby rozmawiać ze sobą.
Pierwszym krokiem jest rozpoczęcie połączenia poprzez poinformowanie klienta, z którym serwerem chcesz się połączyć. Można to zrobić, wpisując w terminalu coś takiego:
ssh username@ip_address
Oznacza to: użycie Secure Shell do połączenia się z serwerem o tym adresie IP (numer identyfikujący komputer w Internecie) przy użyciu tej nazwy użytkownika (nazwa identyfikująca użytkownika na komputerze).
Drugim krokiem jest sprawdzenie, czy można zaufać serwerowi za pomocą kryptografii klucza publicznego. Jest to sposób wykorzystania matematyki do tworzenia tajnych kodów, które mogą zrozumieć tylko dwie osoby. Serwer posiada dwa kody: klucz publiczny i klucz prywatny. Klucz publiczny jest jak otwarty zamek, który każdy może zobaczyć. Klucz prywatny jest jak tajny klucz, który posiada tylko serwer. Serwer wysyła swój klucz publiczny do klienta, który sprawdza, czy jest on zgodny z zaufanym kluczem przechowywanym na komputerze użytkownika lub przekazanym przez zaufaną osobę. Jeśli klucz jest zaufany, można kontynuować. Jeśli nie, możesz zatrzymać lub zaakceptować klucz po sprawdzeniu jego odcisku palca (krótkiego kodu, który go identyfikuje).
Trzecim krokiem jest udowodnienie serwerowi, kim jesteś, za pomocą uwierzytelniania użytkownika. Jest to sposób na pokazanie, że masz pozwolenie na dostęp do serwera. Istnieją różne sposoby, takie jak hasła, klucze publiczne lub certyfikaty. Najpopularniejsze z nich to hasła i klucze publiczne. Uwierzytelnianie hasłem jest łatwe, ale niezbyt bezpieczne. Polega na wpisaniu hasła w kliencie i wysłaniu go do serwera za pośrednictwem tajnego połączenia. Serwer sprawdza, czy pasuje ono do hasła przechowywanego dla nazwy użytkownika.
Uwierzytelnianie kluczem publicznym jest bezpieczniejsze, ale wymaga więcej konfiguracji. Polega ono na użyciu innej pary kodów: klucza prywatnego i klucza publicznego. Klucz prywatny jest jak tajny klucz, który przechowujesz u swojego klienta i nigdy nikomu go nie udostępniasz. Klucz publiczny jest jak otwarty zamek, który udostępniasz serwerowi przed połączeniem. Możesz utworzyć te klucze za pomocą narzędzia takiego jak ssh-keygen i skopiować je na serwer za pomocą narzędzia takiego jak ssh-copy-id. Serwer przechowuje klucz publiczny w pliku o nazwie authorized_keys w folderze domowym (gdzie przechowywane są pliki na serwerze). Podczas logowania z uwierzytelnianiem kluczem publicznym, klient tworzy tajną wiadomość z kluczem prywatnym i wysyła ją do serwera, który sprawdza ją z kluczem publicznym.
Po pomyślnym uwierzytelnieniu użytkownika, klient może zażądać jednej lub więcej usług z serwera przy użyciu różnych kanałów w zaszyfrowanym tunelu. Najpopularniejszą usługą jest dostęp do powłoki, który umożliwia użytkownikowi wykonywanie poleceń na zdalnym serwerze. Inną popularną usługą jest transfer plików, który pozwala użytkownikowi kopiować pliki między systemem lokalnym i zdalnym przy użyciu protokołów takich jak SCP (Secure Copy Protocol) lub SFTP (SSH File Transfer Protocol). SCP to starszy protokół, który wykorzystuje Secure Shell do bezpiecznego przesyłania plików, ale ma pewne ograniczenia i wady. SFTP to bardziej nowoczesny i elastyczny protokół, który zapewnia dostęp do plików, przesyłanie plików i funkcje zarządzania plikami za pośrednictwem SSH.
Jakie są typowe zastosowania protokołu SSH?
Protokół Secure Socket Shell jest powszechnie używany do różnych celów, takich jak:
- Zapewnianie bezpiecznego dostępu użytkownikom i zautomatyzowanym procesom do zdalnych systemów
- Bezpieczne przesyłanie plików między systemami lokalnymi i zdalnymi
- zdalne wykonywanie poleceń w systemach zdalnych
- Zarządzanie infrastrukturą sieciową i innymi krytycznymi komponentami systemu
- Tunelowanie innych protokołów lub aplikacji
- Pośredniczenie w ruchu sieciowym
Podsumowanie
Secure Shell to potężne i wszechstronne narzędzie, które umożliwia bezpieczne zdalne logowanie, przesyłanie plików i wykonywanie poleceń w niezabezpieczonych sieciach. Wykorzystuje kryptografię klucza publicznego i szyfrowanie symetryczne, aby zapewnić uwierzytelnianie serwera, uwierzytelnianie użytkownika, poufność i integralność. SSH umożliwia również wykonywanie różnych czynności na drugim komputerze, takich jak wpisywanie poleceń, wysyłanie plików lub otwieranie programów. Bezpieczny protokół logowania jest bardzo ważny dla każdego użytkownika systemu Linux / Windows lub administratora, który chce bezpiecznie i wydajnie pracować z systemami zdalnymi.