Przeczytaj
Protokoły komunikacyjne warstwy aplikacji, takie jak HTTP, HTTPS czy FTP, są powszechnie znane i najczęściej wykorzystywane przez użytkowników sieci komputerowych. Istnieją również działające w tej warstwie protokoły, które nie są tak popularne, ale równie często stosowane. Zaliczamy do nich protokoły zdalnego połączenia terminalowego, a mianowicie TELNET i SSH.
Załóżmy, że jesteśmy administratorami sieci komputerowej. Nasza sieć jest bardzo duża, a biura znajdują się w kilku różnych lokalizacjach. Powstaje pytanie: jak administrować taką siecią, w której urządzenia, takie jak rutery, przełączniki sieciowe, a przede wszystkim obsługujące ją serwery, są od nas oddalone o wiele kilometrów? W tej sytuacji mamy dwa wyjścia: możemy za każdym razem, kiedy zaistnieje potrzeba zmiany konfiguracji, jechać do biura, w którym akurat znajduje się serwer wymagający takich zmian, lub też połączyć się z nim zdalnie, nie wychodząc zza biurka. Oczywiście pierwsza opcja nie jest optymalna - musimy przecież dojechać do biura, a to strata czasu i pieniędzy. Wybieramy zatem drugą opcję, czyli połączenie zdalne.
Zdalne połączenie pozwala administratorom sieci na łączenie się ze wszystkimi urządzeniami sieciowymi oraz serwerami, które mają taką usługę uruchomioną. W trakcie połączenia zdalnego możemy konfigurować urządzenia i serwery tak, jakbyśmy pracowali bezpośrednio z nimi.
Takie rozwiązanie bardzo ułatwia pracę administratorom, gdyż często zdarza się, że odpowiadają oni za prawidłową pracę urządzeń znajdujących się w lokalizacjach oddalonych od siebie o dziesiątki, setki, a nawet tysiące kilometrów. A zatem bez możliwości fizycznego do nich dostępu.
Jednym z pierwszych protokołów warstwy aplikacji, jaki w ogóle powstał, był właśnie protokół zdalnego połączenia, czyli Telnet. Telnet to zarówno nazwa protokołu komunikacyjnego działającego w architekturze klient‑serwer, jak i usługi systemu operacyjnego umożliwiające takie połączenie.
Podobnie jak w przypadku usługi FTP, również tutaj obsługa połączenia TELNET może realizować zewnętrzne oprogramowanie, np. PUTTY.
Protokół TELNET ma jednak wadę, która spowodowała, że obecnie praktycznie przestał być używany i rekomenduje się jego wyłączenie na wszystkich urządzeniach, które do tej pory go stosowały.
Niestety TELNET nie oferuje szyfrowania komunikacji. Wszelkie polecenia, a nawet loginy i hasła w sesji TELNET przesyłane są pomiędzy klientem a serwerem poprzez tekst jawny. Stanowi to ogromne zagrożenie - jeśli bowiem ktoś „podsłucha” taką komunikację, uzyska dostęp do wszystkich danych i poleceń, które administrator przesyła do serwera, czy urządzenia sieciowego.
Szyfrowany TELNET, czyli SSH
Następcą protokołu TELNET oferującym szyfrowanie komunikacji jest protokół zdalnego połączenia SSH (ang. Secure Shell). Szyfrowanie danych odbywa się najczęściej z wykorzystaniem metod AESAES.
Podczas instalacji usługi SSH na serwerze czy też na urządzeniu sieciowym tworzona jest para kluczy – klucz publiczny i klucz prywatny usługi SSH. Służą one do szyfrowania i deszyfrowania komunikacji z klientem.
Podczas pierwszego połączenia z serwerem SSH klient zapisuje klucz publiczny tego serwera na swoim dysku, w pliku known_hosts
.
Następnie klient tworzy tzw. klucz sesji, który będzie stosowany do szyfrowania całej komunikacji. Klucz sesji zostaje zaszyfrowany kluczem publicznym otrzymanym wcześniej od serwera i jest do niego odsyłany. Od tego momentu cała komunikacja szyfrowana jest kluczem sesji.
Etap praktyczny nawiązywania sesji ze zdalnym serwerem Linux poprzez protokół SSH z wykorzystaniem programu PUTTY zademonstrowany został w poniższym filmie:
Słownik
(ang. Advanced Encryption Standard) standard kryptograficzny wykorzystujący symetryczny szyfr blokowy