SSH
| 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 ).
- Nejběžnější je ověřování heslem. Stejně jako https generuje každé připojení sdílený tajný klíč pro šifrování provozu.
- 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 .
- 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
- BSD : OpenSSH
- Linux : dropbear , lsh-server , openssh-server , ssh , Tectia SSH Server
- Windows : freeSSHd , copssh , WinSSHD , KpyM Telnet/SSH Server , MobaSSH , OpenSSH přes Cygwin [4] , Tectia SSH Server
SSH klienti a shelly
- GNU/Linux, *BSD: kdessh, lsh-client, openssh-client, putty, ssh, Vinagre, klient Tectia SSH (SSH Communications Security)
- MS Windows a Windows NT: PuTTY \KiTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD, XShell, klient Tectia SSH (SSH Communications Security)
- MS Windows Mobile: PocketPuTTy, mToken, sshCE, PocketTTY, OpenSSH, PocketConsole, klient Tectia SSH (SSH Communications Security)
- Mac OS: iTerm2 , NiftyTelnet SSH, vSSH, ZOC
- SymbianOS: PuTTY
- Java: MindTerm, AppGate Security Server
- J2ME: MidpSSH
- iPhone: i-SSH, ssh (součástí terminálu), Termius, OpenTerm, LibTerm, Shelly
- Android: connectBot, Admin Hands, Server Auditor, JuiceSSH
- Blackberry: BBSSH
- MAEMO 5: OpenSSH
- MeeGo 1.2 Harmattan: OpenSSH
Bezpečnostní tipy SSH
- Zákaz vzdáleného přístupu root .
- Zakažte připojení s prázdným heslem nebo zakažte přihlášení pomocí hesla.
- Výběr nestandardního portu pro SSH server.
- 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] .
- Omezení seznamu IP adres, ze kterých je povolen přístup (například nastavením firewallu ).
- Zákaz přístupu z některých potenciálně nebezpečných adres.
- 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 .
- Pravidelně kontrolujte chybové zprávy ověřování .
- Instalace systémů detekce narušení (IDS) .
- Používání háčků , které falšují službu SSH ( honeypot ) .
- 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:
- Vytvoření Socks proxy pro aplikace, které nevědí, jak pracovat přes SSH tunel, ale mohou pracovat přes Socks proxy.
- Používání aplikací, které mohou pracovat prostřednictvím tunelu SSH.
- Vytvořením VPN tunelu, vhodného pro téměř jakoukoli aplikaci.
- Pokud aplikace pracuje s jedním konkrétním serverem, můžete nakonfigurovat klienta SSH tak, aby umožňoval připojení TCP přes tunel SSH , která přicházejí na konkrétní port TCP na počítači, na kterém běží klient SSH. Například klienti Jabber se standardně připojují na port 443. Poté, aby bylo možné nastavit připojení k serveru Jabber prostřednictvím tunelu SSH, je klient SSH nakonfigurován tak, aby přesměroval připojení z libovolného portu na místním počítači (například port 4430). na vzdálený server (například jabber .example.com a port 443):
$ 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
- ↑ Možnost překladu od Yu. A. Semjonova Archivní kopie z 2. února 2008 na Wayback Machine
- ↑ Toto používá Port Forwarding Archived 16. prosince 2005 na připojení TCP Wayback Machine .
- ↑ O SSH Communications Security Archivováno 9. července 2012 na Wayback Machine
- ↑ 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.
- ↑ CyberSecurity.ru: „768bitový klíč RSA byl úspěšně prolomen“ Archivováno 14. ledna 2010 na Wayback Machine . 01/08/2010
Odkazy
- Normy
- RFC 4250 - Přidělená čísla protokolu Secure Shell ( SSH).
- RFC 4251 - Architektura protokolu Secure Shell (SSH).
- RFC 4252 – Ověřovací protokol Secure Shell (SSH).
- RFC 4253 – protokol transportní vrstvy Secure Shell ( SSH) .
- RFC 4254 – protokol připojení Secure Shell (SSH).
- RFC 4255 – Použití DNS k bezpečnému publikování otisků klíčů Secure Shell (SSH)
- RFC 4256 – Generic Message Exchange Authentication pro protokol SSH (Secure Shell Protocol)
- RFC 4335 - Rozšíření pro přerušení kanálu zabezpečeného shellu ( SSH) .
- RFC 4344 – Režimy šifrování transportní vrstvy Secure Shell (SSH).
- RFC 4345 – Vylepšené režimy Arcfour pro protokol Transport Layer Secure Shell (SSH)
- RFC 4419 – Diffie-Hellman Group Exchange pro protokol Transport Layer Secure Shell (SSH)
- RFC 4432 - Výměna klíčů RSA pro protokol Transport Layer Secure Shell (SSH).
- RFC 4716 – formát souboru veřejného klíče Secure Shell ( SSH).
- 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
- WinSCP - SFTP klient pro Microsoft Windows
- FileZilla - SFTP klient pro Microsoft Windows , Linux, MacOS
- jiný