SSH

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 12. června 2019; kontroly vyžadují 23 úprav .
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í).

Technické informace o protokolu

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 ).

  1. Nejběžnější je ověřování heslem. Stejně jako https generuje každé připojení sdílený tajný klíč pro šifrování provozu.
  2. Při ověřování párů klíčů je pro konkrétního uživatele předem vygenerován pár veřejného a soukromého klíče. Na počítači, ze kterého se chcete připojit, je uložen soukromý klíč a na vzdáleném počítači veřejný klíč. Tyto soubory se při autentizaci nepřenášejí, systém pouze kontroluje, zda vlastník veřejného klíče vlastní i ten soukromý. S tímto přístupem se zpravidla konfiguruje automatické přihlášení jménem konkrétního uživatele v OS .
  3. Autentizace pomocí ip-adresy není bezpečná, tato funkce je nejčastěji zakázána.

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.

Historie a vývoj

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í. .

Standardy a softwarové implementace

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.

SSH servery

SSH klienti a shelly

Bezpečnostní tipy SSH

  1. Zákaz vzdáleného přístupu root .
  2. Zakažte připojení s prázdným heslem nebo zakažte přihlášení pomocí hesla.
  3. Výběr nestandardního portu pro SSH server.
  4. Použití dlouhých klíčů SSH2 RSA (2048 bitů nebo více). Šifrovací systémy založené na RSA jsou považovány za bezpečné, pokud je délka klíče alespoň 1024 bitů [5] .
  5. Omezení seznamu IP adres, ze kterých je povolen přístup (například nastavením firewallu ).
  6. Zákaz přístupu z některých potenciálně nebezpečných adres.
  7. Vyhněte se používání běžných nebo dobře známých systémových přihlášení pro přístup SSH .
  8. Pravidelně kontrolujte chybové zprávy ověřování .
  9. Instalace systémů detekce narušení (IDS) .
  10. Používání háčků , které falšují službu SSH ( honeypot ) .
  11. Implementace technologie.

Příklady použití SSH

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-keygen

Generování dvojice klíčů SSH-2 RSA o délce 4096 bitů pomocí puttygen pod OS UNIX:

$ puttygen -t rsa -b 4096 -o ukázka

Ně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 tunelování

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:

$ ssh -L 4430 :jabber.example.com:443 somehost

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.

Viz také

Poznámky

  1. Možnost překladu od Yu. A. Semjonova Archivní kopie z 2. února 2008 na Wayback Machine
  2. Toto používá Port Forwarding Archived 16. prosince 2005 na připojení TCP Wayback Machine .
  3. O SSH Communications Security Archivováno 9. července 2012 na Wayback Machine 
  4. Pokyny pro instalaci ssh serveru pro Windows přes Cygwin (nepřístupný odkaz) . Datum přístupu: 27. ledna 2009. Archivováno z originálu 20. ledna 2009. 
  5. CyberSecurity.ru: „768bitový klíč RSA byl úspěšně prolomen“ Archivováno 14. ledna 2010 na Wayback Machine . 01/08/2010

Odkazy

Normy Klienti SSH
  • OpenSSH  je bezplatná knihovna a sada nástrojů pro podporu šifrování
  • PuTTY  je populární multiplatformní SSH klient.
  • https://serverauditor.com/ – oblíbený mobilní multiplatformní klient SSH (Android, iOS, Google Chrome)
  •  Srovnání SSH klientů
Programy pro přístup k souborům jiný