SSH | |
---|---|
název | Secure Shell |
Úroveň (podle modelu OSI ) | Aplikovaný |
Rodina | TCP/IP |
Port/ID | 22/ TCP |
Účel protokolu | Vzdálený přístup |
Specifikace | RFC 4251 |
Hlavní implementace (klienti) | OpenSSH , PuTTY / KiTTY , SecureCRT , Xshell |
Implementace jádra ( servery ) | OpenSSH |
Mediální soubory na Wikimedia Commons |
SSH ( angl. Security Shell - "secure shell" [ 1 ] ) je síťový protokol aplikační vrstvy, který umožňuje vzdáleně ovládat operační systém a tunelovat TCP spojení (například pro přenos souborů). Funkčnost je podobná protokolům Telnet a rlogin , ale na rozdíl od nich šifruje veškerý provoz, včetně přenášených hesel . SSH umožňuje výběr různých šifrovacích algoritmů. Klienti SSH a servery SSH jsou k dispozici pro většinu síťových operačních systémů.
SSH vám umožňuje bezpečně přenášet téměř jakýkoli jiný síťový protokol v nezabezpečeném prostředí . Můžete tak nejen vzdáleně pracovat na počítači pomocí příkazového shellu , ale také přenášet audio stream nebo video přes šifrovaný kanál (například z webové kamery ) [2] . SSH může také využít kompresi přenášených dat pro následné šifrování, což se hodí například pro vzdálené spouštění klientů X Window System .
Většina poskytovatelů hostingu poskytuje zákazníkům za poplatek SSH přístup do jejich domovského adresáře . To může být výhodné jak pro práci v příkazovém řádku, tak pro vzdálené spouštění programů (včetně grafických aplikací).
SSH je protokol aplikační vrstvy. Server SSH obvykle naslouchá připojení na portu TCP 22. Specifikace protokolu SSH-2 je v RFC 4251 . Pro autentizaci serveru používá SSH autentizační protokol strany založený na algoritmech digitálního podpisu RSA nebo DSA , ale je povoleno i ověřování heslem (režim zpětně kompatibilní s Telnetem ) a dokonce i IP adresa hostitele (režim zpětně kompatibilní s rlogin ).
Algoritmus Diffie-Hellman (DH) se používá k vytvoření sdíleného tajemství (klíč relace ). Přenášená data jsou šifrována pomocí symetrického šifrování , AES , Blowfish nebo 3DES algoritmů . Integrita přenosu dat se kontroluje pomocí CRC32 v SSH1 nebo HMAC - SHA1 / HMAC - MD5 v SSH2.
Ke kompresi zašifrovaných dat lze použít algoritmus LempelZiv ( LZ77 ), který poskytuje stejnou úroveň komprese jako archivátor ZIP . Komprese SSH je povolena pouze na žádost klienta a v praxi se používá zřídka.
Verze 1.x
V roce 1995 Tatu Ylönen , výzkumník z Helsinské technologické univerzity ve Finsku, vyvinul první verzi protokolu (nyní nazvanou SSH-1), spuštěnou útokem na dolování hesel na jeho univerzitní síti. Cílem SSH bylo nahradit dřívější protokoly rlogin, TELNET, FTP [16] a rsh, které neposkytovaly silnou autentizaci a soukromí. Ylönen vydal svou implementaci jako svobodný software v červenci 1995 a nástroj si rychle získal popularitu. Do konce roku 1995 se uživatelská základna SSH rozrostla na 20 000 uživatelů v padesáti zemích.
V prosinci 1995 Ylönen založil SSH Communications Security za účelem podpory a rozvoje SSH. Původní verze softwaru SSH používala různé části svobodného softwaru, jako je GNU libgmp, ale pozdější verze vydané SSH Communications Security se vyvinuly ve stále více proprietární software.
Odhaduje se, že do roku 2000 počet uživatelů vzrostl na 2 miliony.
Verze 2.x
„Secsh“ byl oficiální název Internet Engineering Task Force (IETF) pro pracovní skupinu IETF odpovědnou za verzi 2 protokolu SSH. V roce 2006 byla jako standard přijata aktualizovaná verze protokolu SSH-2. Tato verze není kompatibilní s SSH-1. SSH-2 nabízí jak zabezpečení, tak vylepšené funkce oproti SSH-1. Lepšího zabezpečení je například dosaženo výměnou klíčů Diffie-Hellman a silnou kontrolou integrity pomocí ověřovacích kódů zpráv. Mezi nové funkce SSH-2 patří možnost spouštět libovolný počet relací shellu přes jediné připojení SSH. Vzhledem k nadřazenosti a popularitě SSH-2 nad SSH-1 některé implementace jako libssh (v0.8.0+), Lsh a Dropbear podporují pouze protokol SSH-2.
Verze 1.99
V lednu 2006, tedy dlouho po vytvoření verze 2.1, RFC 4253 specifikovalo, že server SSH, který podporuje verzi 2.0 i předchozí verze SSH, by měl identifikovat svou prototypovou verzi jako 1.99. Nejedná se o aktuální verzi, ale o metodu pro zjištění zpětné kompatibility.
OpenSSH a OSSH
V roce 1999 se vývojáři, kteří chtěli bezplatnou verzi softwaru, vrátili ke staré verzi 1.2.12 původního programu SSH, která byla naposledy vydána pod licencí open source. Z této kódové základny byl následně vyvinut OSSH Bjorna Grönwalla. Krátce nato vývojáři OpenBSD rozdělili kód Grónska a udělali na něm spoustu práce a vytvořili OpenSSH , který byl dodáván s verzí OpenBSD 2.6. Počínaje touto verzí byla vytvořena větev „portability“, která portuje OpenSSH na jiné operační systémy.
Od roku 2005 byl OpenSSH jedinou nejoblíbenější implementací SSH, která je standardně zahrnuta na velkém počtu operačních systémů. OSSH je mezitím zastaralý. OpenSSH je nadále podporován a podporuje protokol SSH-2, přičemž s vydáním OpenSSH 7.6 se podpora pro SSH-1 z kódové základny vypouští. .
První verze protokolu, SSH-1, byla vyvinuta v roce 1995 výzkumníkem Tatu Ulönenem z Helsinské technologické univerzity ( Finsko ). SSH-1 byl napsán tak, aby byl soukromější než protokoly rlogin, telnet a rsh. V roce 1996 byla vyvinuta bezpečnější verze protokolu, SSH-2, která není kompatibilní s SSH-1. Protokol si získal ještě větší oblibu a do roku 2000 měl asi dva miliony uživatelů. V současné době se termín "SSH" obvykle vztahuje na SSH-2, protože první verze protokolu se kvůli významným nedostatkům nyní prakticky nepoužívá.
V roce 2006 byl protokol schválen pracovní skupinou IETF jako internetový standard.
Běžné jsou dvě implementace SSH: soukromá komerční a bezplatná. Bezplatná implementace se nazývá OpenSSH. V roce 2006 používalo OpenSSH 80 % počítačů na internetu . Soukromou implementaci vyvíjí SSH Communications Security, plně vlastněná dceřiná společnost Tectia [3] , a je zdarma pro nekomerční použití. Tyto implementace obsahují téměř stejnou sadu instrukcí.
Protokol SSH-1, na rozdíl od protokolu telnet , je odolný proti útokům typu traffic sniffing (" sniffing "), ale není odolný proti útokům typu man-in-the-middle . Protokol SSH-2 je také odolný vůči útokům spojením se uprostřed ( anglicky session hijacking ), protože není možné se připojit k již vytvořené relaci nebo ji zachytit.
Aby se zabránilo útokům typu man-in-the-middle , při připojování k hostiteli , jehož klíč klient ještě nezná, klientský software zobrazí uživateli otisk klíče . Doporučuje se pečlivě porovnat „osazení klíče“ zobrazené klientským softwarem s obsazením klíče serveru, nejlépe získané prostřednictvím spolehlivých komunikačních kanálů nebo osobně.
Podpora SSH je dostupná na všech systémech typu UNIX a většina z nich má jako standardní nástroje ssh klienta a server . Existuje mnoho implementací klientů SSH i pro jiné operační systémy než UNIX. Protokol si získal velkou oblibu po rozsáhlém rozvoji analyzátorů provozu a metod pro narušení provozu lokálních sítí jako alternativa k nezabezpečenému protokolu Telnet pro správu důležitých uzlů.
SSH vyžaduje server SSH a klienta SSH. Server naslouchá připojení z klientských počítačů a po navázání připojení provede ověření , po kterém začne obsluhovat klienta. Klient se používá k přihlášení ke vzdálenému počítači a provádění příkazů.
Pro připojení musí server a klient vytvořit páry klíčů – veřejný a soukromý – a vyměnit si veřejné klíče. Obvykle se také používá heslo.
Příkaz pro připojení k místnímu serveru SSH z příkazového řádku GNU/Linux nebo FreeBSD pro uživatele pacify (server naslouchá na nestandardním portu 30000):
$ ssh -p 30 000 [email protected]Generování páru klíčů (v OS typu UNIX) se provádí příkazem
$ ssh-keygenGenerování dvojice klíčů SSH-2 RSA o délce 4096 bitů pomocí puttygen pod OS UNIX:
$ puttygen -t rsa -b 4096 -o ukázkaNěkteří klienti, jako například PuTTY, mají také grafické uživatelské rozhraní .
Pro použití SSH v Pythonu existují moduly jako python-paramiko a python-twisted-conch.
SSH tunel je tunel vytvořený přes SSH připojení a používaný k šifrování tunelovaných dat. Používá se k zabezpečení přenosu dat na internetu ( IPsec má podobný účel ). Při předávání přes tunel SSH je nešifrovaný provoz libovolného protokolu šifrován na jednom konci připojení SSH a dešifrován na druhém konci.
Praktická implementace může být provedena několika způsoby:
V tomto případě je klient Jabber nakonfigurován pro připojení k portu 4430 serveru localhost (pokud klient ssh běží na stejném počítači jako klient Jabber).
K vytvoření ssh tunelu potřebujete počítač se spuštěným ssh serverem a přístupem na jabber.example.com. Tuto konfiguraci lze použít, pokud je přístup na jabber.example.com z místního počítače blokován firewallem, ale existuje přístup k některému ssh serveru, který nemá omezení přístupu k internetu.
protokoly TCP /IP podle vrstev modelu OSI | Základní|
---|---|
Fyzický | |
odvedeny | |
síť | |
Doprava | |
zasedání | |
Zastoupení | |
Aplikovaný | |
Uplatněno jiné | |
Seznam portů TCP a UDP |
URI | Schémata|
---|---|
Oficiální | |
neoficiální |