Úvod
Přenos dat mezi zařízeními v síti musí být regulován, aby zařízení správně komunikovala. Přenos se provádí pomocí sady pravidel známých jako síťový protokol.
Dřívější síťové protokoly jako Telnet a rsh neposkytovaly dostatečnou ochranu před škodlivými kybernetickými útoky. Potřeba bezpečnější metody síťové komunikace inspirovala vytvoření protokolu SSH.
V tomto tutoriálu si povíme, co je SSH, proč se používá a jak funguje.
Co je SSH?
SSH (zkratka pro Secure Shell) je síťový protokol, který poskytuje bezpečný způsob vzdáleného připojení dvou počítačů. SSH využívá šifrování, aby zajistilo, že hackeři nebudou moci interpretovat provoz mezi dvěma připojenými zařízeními.
SSH se skládá ze tří odlišných vrstev:
- Přenosová vrstva zajišťuje bezpečnou a zabezpečenou komunikaci mezi klientem a serverem během a po autentizaci. Dohlíží na šifrování, dešifrování a ochranu integrity dat. Kromě toho pomáhá urychlit výměnu dat tím, že poskytuje kompresi dat a ukládání do mezipaměti.
- Ověřovací vrstva sděluje klientovi podporované metody ověřování. Provádí také celý proces ověření uživatele.
- Vrstva připojení spravuje komunikaci mezi stroji po úspěšné autentizaci. Zvládá otevírání a zavírání komunikačních kanálů a umožňuje více kanálů pro více relací.
K čemu se SSH používá?
SSH poskytuje vrstvu zabezpečení pro přenos informací mezi počítači. Některé důležité případy použití pro SSH jsou:
- Vzdálený přístup – SSH zajišťuje šifrovaná vzdálená připojení pro uživatele a procesy.
- Přenosy souborů – SFTP, protokol pro bezpečný přenos souborů spravovaný SSH, poskytuje bezpečný způsob manipulace se soubory přes síť.
- Přesměrování X11 – Uživatelé mohou spouštět X aplikace hostované na serveru ze svých klientských počítačů.
- Přesměrování portů – Mapováním portu klienta na vzdálené porty serveru pomáhá SSH zabezpečit další síťové protokoly, jako je TCP/IP.
- Tunelování – Tato technika zapouzdření poskytuje bezpečný přenos dat. Tunelování je užitečné pro přístup k citlivým obchodním online materiálům z nezabezpečených sítí, protože může fungovat jako šikovná alternativa VPN.
- Správa sítě – Protokol SSH spravuje síťovou infrastrukturu a další části systému.
Jak SSH funguje?
SSH je protokol založený na klient-server. To znamená, že protokol umožňuje zařízení požadujícímu informace nebo služby (klient) připojit se k jinému zařízení (serveru).
Když se klient připojí k serveru přes SSH, stroj lze ovládat jako místní počítač.
Server má určený port TCP, přes který monitoruje síť a čeká, až klienti inicializují připojení. Než se klient připojí a začne vydávat příkazy SSH, musí projít procesem ověřování.
Navázání připojení SSH
Spusťte na klientském počítači následující příkaz pro zahájení připojení SSH:
ssh [username]@[server_ip_or_hostname]
Když server obdrží požadavky, začne vyjednávání o šifrování relace.
Vyjednávání šifrování relace
Po přijetí požadavku na připojení server odešle klientovi sadu podporovaných šifrovacích protokolů. Server používá veřejný klíč jako metodu ověřování.
Klient porovná protokoly se svou vlastní sadou. Pokud existují odpovídající protokoly, stroje souhlasí s použitím jednoho k navázání spojení.
Klient porovnává veřejný klíč serveru s uloženým soukromým klíčem uloženým v jeho systému při prvním pokusu o připojení. Pokud se klíče shodují, klient a server souhlasí s použitím symetrického šifrování pro komunikaci během relace SSH. Za tímto účelem komunikují pomocí asymetricky šifrovaného procesu, který využívá algoritmus výměny klíčů Diffie-Hellman (DH).
Algoritmus DH umožňuje strojům spolupracovat a bezpečně vytvářet kryptografický klíč přes veřejnou síť. Pro vygenerování klíče provedou stroje následující kroky:
- Stroje se dohodnou na dvou číslech :modul a základní číslo. Aby se zabránilo dešifrování klíče hrubou silou, je zvolený modul prvočíslo o délce alespoň 600 číslic.
- Stroje samostatně vyberou jedno číslo a aplikujte ji na rovnici zahrnující dvě veřejná čísla.
- Server a klient si vyměňují vypočítané hodnoty .
- Každý počítač nyní provádí výpočet pomocí výsledku obdrženého od druhého.
Provedením výše uvedených kroků oba stroje vypočítají stejnou hodnotu, svůj tajný klíč. Nakonec se server pokusí ověřit uživatele, který požaduje přístup.
Ověření uživatele
Dvě nejběžnější používané metody ověřování uživatele SSH jsou hesla a klíče SSH. Klienti bezpečně odesílají na server šifrovaná hesla. Hesla jsou však riskantní metodou ověřování, protože jejich síla závisí na tom, jak si uživatel uvědomuje, co tvoří silné heslo.
Asymetricky zašifrované páry veřejného a soukromého klíče SSH jsou lepší volbou. Jakmile klient zprávu dešifruje, server klientovi udělí přístup do systému.
Chcete-li vygenerovat pár klíčů SSH, zadejte ssh-keygen
v terminálu. V důsledku toho systém generuje a ukládá klíče.
Další informace o tomto procesu najdete v části Jak generovat klíče SSH na Ubuntu (proces je v podstatě stejný ve všech distribucích Linuxu a Mac OS).
Vysvětlení technologií šifrování SSH
SSH používá tři typy šifrování dat během komunikace mezi stroji. Jsou to:
- Symetrické šifrování
- Asymetrické šifrování
- Hašování.
Symetrické šifrování
Symetrické šifrování generuje jeden klíč, který si vyměňují dva stroje. Poté stroje použijí klíč pro šifrování i dešifrování. Tato metoda je rychlá, není náročná na zdroje a SSH ji používá pro každou relaci.
Kdykoli klient a server vyjednávají, který algoritmus použít pro relaci SSH, vždy vyberou první algoritmus na seznamu klienta, který server podporuje.
Asymetrické šifrování
Data jsou asymetricky šifrována, když stroje k provedení šifrování používají dva různé, ale matematicky související klíče, veřejný a soukromý. Klientský počítač, který se podílel na nastavení šifrování, může dešifrovat informace pomocí soukromého klíče.
SSH používá dočasné asymetrické klíče k výměně symetrických klíčů, například během procesu ověřování uživatele.
Hašování
SSH používá hash k ověření, zda datové pakety pocházejí ze zdroje, ze kterého se zdá, že pocházejí. Hašovací algoritmy používané k vytváření hashů v SSH jsou Message Authentication Code (MAC) a Hashed Message Authentication Code (HMAC).
Hašovací algoritmus používá datový paket k vytvoření jedinečného hashovacího řetězce. Stroj odesílající paket vždy odešle paket spolu s hodnotou hash.
Přijímající stroj zná algoritmus použitý k vytvoření hashe a může jej aplikovat na data. Účelem je zjistit, zda bude vypočítaná hodnota hash stejná. Pokud se získaná hodnota hash liší od hodnoty hash odesílatele, data byla během přenosu poškozena.