SSH: Secure Shell
SSH znamená Secure Shell. Je tiež známy ako Secure Socket Shell. Na bezpečné prevádzkovanie sieťových služieb v nezabezpečených sieťach sa používa kryptografický sieťový protokol s názvom Secure Shell (SSH). Architektúra klientskeho servera je základom aplikácií SSH, ktoré spájajú inštanciu klienta SSH so serverom SSH.
Ako nástupca Telnetu a nebezpečných vzdialených unixových shell protokolov, ako je Berkeley Remote Shell (rsh) a jeho pridružené protokoly rlogin a rexec, bol SSH vytvorený pre operačné systémy podobné Unixu, ktoré využívajú nezabezpečenú komunikáciu pomocou tokenov na autentifikáciu s obyčajným textom.
Definícia
SSH môžeme použiť niekoľkými rôznymi spôsobmi. Najjednoduchšia implementácia šifruje údaje pomocou automaticky generovaných párov verejných a súkromných kľúčov na oboch koncoch komunikačného kanála a sieťového pripojenia. Potom overí používateľa pomocou hesla. Keď používateľ manuálne vygeneruje pár verejný-súkromný kľúč, autentifikácia je prakticky dokončená po vytvorení páru kľúčov, čo umožňuje okamžité spustenie relácie bez výzvy na zadanie hesla.
riadkový príkaz autocad
V tomto prípade vlastník uchováva príslušný súkromný kľúč v tajnosti a verejný kľúč je nainštalovaný na všetkých počítačoch, ktoré musia vlastníkovi udeliť prístup. Aj keď súkromný kľúč slúži ako základ pre autentifikáciu, kľúč sa pri autentifikácii nikdy neodošle cez sieť. SSH potvrdzuje, že poskytovateľ verejného kľúča vlastní aj zodpovedajúci súkromný kľúč.
Spojenie neznámeho verejného kľúča so známym súkromným kľúčom vo všetkých verziách SSH je rozhodujúce predtým, ako ich akceptujete ako legitímne verejné kľúče s ID. Prijatie verejného kľúča od útočníka bez jeho overenia prijme nedôveryhodného útočníka ako legitímneho používateľa.
Tvorba
Tatu Ylönen, počítačový vedec z Fínska, vytvoril SSH prvýkrát v roku 1995. Ďalší vývoj sady protokolov prebiehal v mnohých vývojárskych skupinách, čo viedlo k rôznym implementačným iteráciám. K dispozícii sú implementácie pre všetky populárne operačné systémy vrátane vstavaných systémov. OpenSSH, ktorý tvorcovia OpenBSD sprístupnili ako open-source softvér v roku 1999, je najčastejšie používaný softvérový balík.
Správa kľúčov OpenSSH pre autentifikáciu
Schválený zoznam verejných kľúčov sa bežne na systémoch podobných Unixu uchováva v súbore ~/.ssh/authorized keys v domovskom adresári používateľa, ktorý má privilégiá na vzdialené prihlásenie. SSH rešpektuje tento súbor iba vtedy, ak ho nemôže upraviť nikto iný ako vlastník a root. Heslo už nie je potrebné, ak je prítomný verejný kľúč vzdialeného konca aj zodpovedajúci súkromný kľúč lokálneho konca. Môžeme však použiť prístupovú frázu na uzamknutie súkromného kľúča pre oveľa väčšiu ochranu. Môžeme tiež prehľadávať tajný kód na bežných miestach a môžeme použiť voľbu príkazového riadku na poskytnutie jeho úplnej cesty (možnosť -i pre ssh).
SSH ďalej poskytuje automatické generovanie kľúčov šifrované overovanie založené na hesle. Útočník sa v tomto scenári môže vydať za dôveryhodnú stranu servera, vyžiadať si heslo a získať ho (útok typu man-in-the-middle). Na strane servera môžeme vypnúť overovanie hesla.
Použite
SSH používa paradigmu klient-server. SSH sa zvyčajne používa na protokolovanie. Môže tiež tunelovať porty TCP, preposielať pripojenia X11 a vykonávať príkazy na vzdialenom systéme. Pripojenie k démonu SSH umožňujúcemu vzdialené pripojenia sa zvyčajne uskutočňuje pomocou klientskej aplikácie SSH. Oba sa často nachádzajú na väčšine súčasných operačných systémov, ako sú macOS, distribúcie Linuxu, OpenBSD, FreeBSD, NetBSD, Solaris a OpenVMS. Niektoré verzie sú proprietárne, freeware a open source s rôznym stupňom zložitosti a komplexnosti (napríklad PuTTY a verzia OpenSSH, ktorá je súčasťou Cygwin a OpenSSH). Je pozoruhodné, že SSH nie je predvolene zahrnuté vo verziách systému Windows až do verzie Windows 10 verzie 1709.
Podobnú funkcionalitu správy súborov (synchronizáciu, kopírovanie a vzdialené mazanie) ponúka bezplatná a open-source windows aplikácia WinSCP, ktorá využíva PuTTY ako back-end. Bez nutnosti inštalácie na klientskom počítači sú WinSCP a PuTTY dostupné zabalené tak, aby fungovali priamo z USB disku. Povolenie funkcie v aplikácii nastavení je často potrebné na nastavenie servera SSH v systéme Windows.
Na zvládnutie problémov s pripojením a zabránenie bezpečnostným rizikám priameho vystavenia cloudového virtuálneho stroja na internet je SSH v cloud computingu kľúčové. Bezpečné pripojenie cez internet môže byť umožnené prostredníctvom virtuálneho počítača s tunelom SSH cez firewall. Pre tento protokol určila IANA port TCP 22, UDP port 22 a SCTP port 22.
Už v roku 2001 IANA klasifikovala predvolený TCP port 22 pre SSH servery ako jeden zo známych portov. Na spustenie SSH namiesto TCP možno použiť protokol SCTP orientovaný na spojenie.
Historický progres
Iterácia 1
Útok odhaľovania hesiel na sieť jeho inštitúcie inšpiroval Tatu Ylönena, výskumníka Helsinskej technickej univerzity vo Fínsku, ktorý v roku 1995 vytvoril počiatočnú iteráciu protokolu (dnes známy ako SSH-1).
SSH bol navrhnutý tak, aby prevzal úlohu predchádzajúcich protokolov vrátane rlogin, TELNET, FTP a rsh, ktorým chýbali robustné záruky autentifikácie a utajenia. Ylönen sprístupnil svoju aplikáciu ako freeware. V júli 1995 sa zariadenie rýchlo stalo obľúbeným. Do konca roku 1995 bolo 20 000 používateľov SSH v 50 rôznych krajinách.
Na podporu a rozvoj SSH založil Ylönen v decembri 1995 SSH Communications Security. V prvom vydaní programu SSH boli použité rôzne komponenty slobodného softvéru, vrátane GNU libgmp, ale neskoršie iterácie poskytované SSH Communications Security prerástli do čoraz viac proprietárneho softvéru. Podľa odhadov to bolo do roku 2000 2 milióny používateľov.
Iterácia 2
Pracovná skupina Internet Engineering Task Force (IETF) označila vo svojej oficiálnej dokumentácii pracovnú skupinu zodpovednú za vytvorenie protokolu SSH verzie 2 ako „Secsh“.
čo je automaticky zapojené v jave
SSH-2, vylepšená iterácia protokolu, sa stala štandardom v roku 2006. SSH-1 nie je kompatibilný s touto verziou. SSH-2 ponúka vylepšenia funkčnosti a zabezpečenia oproti SSH-1. Napríklad výmena kľúčov Diffie-Hellman a robustné overenie integrity prostredníctvom autentifikačných kódov správ poskytujú vyššiu bezpečnosť. Schopnosť prevádzkovať neobmedzený počet relácií shellu cez jedno pripojenie SSH je jednou z nových schopností SSH-2. Pretože SSH-2 je pokročilejší a široko používaný ako SSH-1, niektoré implementácie, ako napríklad libssh (v0.8.0+), Lsh a Dropbear, podporujú iba SSH-2.
Iterácia 1,99
RFC 4253 vyžaduje, aby server SSH podporujúci 2.0, ako aj staršie verzie, uvádzal svoju verziu protokolu ako 1.99 v januári 2006, teda dlho po vývoji verzie 2.1. Toto číslo verzie sa používa skôr na označenie spätnej kompatibility než na vyjadrenie predchádzajúcej revízie softvéru.
OSSH a OpenSSH
Od poslednej verzie pôvodného programu SSH, verzie 1.2.12, bola distribuovaná pod open-source licenciou v roku 1999, vývojári pracovali na voľnej verzii softvéru. Toto bolo použité ako základ pre program OSSH Björna Grönvalla. Čoskoro potom tím OpenBSD naklonoval Grönvallovu prácu na vytvorenie OpenSSH, ktoré bolo zahrnuté vo vydaní OpenBSD 2.6. Z tejto verzie vytvorili pobočku „prenosnosti“ na prenos OpenSSH do rôznych operačných systémov.
Najpoužívanejšou implementáciou SSH od roku 2005 bol OpenSSH, predvolená verzia v mnohých distribúciách operačného systému. Po odstránení podpory SSH-1 z kódovej základne vo vydaní OpenSSH 7.6 sa OpenSSH stále aktualizuje a podporuje protokol SSH-2. Medzitým už OSSH nie je relevantný.
Využitie
Používateľ 'josh' 'SSHed' z lokálneho počítača 'foo fighter' na vzdialený stroj 'tengwar', aby spustil xeyes ako príklad tunelovania programu X11 cez SSH. Ľudia využívajú Windows SSH klienta PuTTY na prístup k OpenWrt.
SSH je protokol, ktorý funguje s mnohými systémami vrátane Microsoft Windows a väčšinou variácií Unixu (Linux, BSD, vrátane macOS od Apple a Solaris). Nasledujúce aplikácie môžu potrebovať funkcie, ktoré sú exkluzívne alebo kompatibilné s konkrétnymi klientmi alebo servermi SSH. Napríklad na vytvorenie VPN je v súčasnosti možné použiť implementáciu protokolu SSH servera OpenSSH a klienta.
- Prístup k shellu na vzdialenom hostiteľovi (nahradenie Telnetu a rlogin)
- Na vykonanie samostatného príkazu na vzdialenom hostiteľovi (nahradenie rsh)
- Na konfiguráciu automatického prihlásenia (bez hesla) vzdialeného servera (napríklad pomocou OpenSSH)
- Keďže ide o plne funkčnú šifrovanú sieť VPN, majte na pamäti, že túto schopnosť podporuje iba klient a server OpenSSH.
- Na prenos X zo vzdialeného hostiteľa (možné prostredníctvom viacerých medzihostiteľov)
- Na používanie klientov SSH, ktorí podporujú protokol SOCKS, na prehliadanie internetu cez šifrované pripojenie proxy.
- Pre bezpečné pripojenie adresára vzdialeného servera ako súborového systému na lokálny počítač využívajúci SSHFS.
- Prostredníctvom jednej alebo viacerých vyššie uvedených technológií na automatické vzdialené monitorovanie a správu serverov.
- Pre vývoj mobilných alebo vstavaných zariadení kompatibilných s SSH.
- Na ochranu mechanizmov prenosu súborov.
Metódy prenosu súborov
Niekoľko systémov prenosu súborov využíva protokoly Secure Shell, ako napr
- Cez SSH je Secure Copy (SCP) vyvinutá z protokolu RCP.
- rsync, ktorý má byť efektívnejší ako SCP, sa často prevádzkuje cez SSH pripojenie.
- Alternatívou k FTP, ktorá je bezpečná, je SSH File Transfer Protocol (SFTP) (nezamieňať s FTP cez SSH alebo FTPS)
- FISH, alebo súbory prenášané cez protokol shell, boli predstavené v roku 1998 a vyvinuté z inštrukcií SSH cez Unix shell.
- Aspera, tiež známy ako Fast and Secure Protocol (FASP), využíva SSH na príkazy a prenos dát, UDP porty.
Architektúra
Tri odlišné komponenty tvoria vrstvenú architektúru protokolu SSH:
- Transmission Control Protocol (TCP) TCP/IP bežne používa transportná vrstva (RFC 4253), pričom port číslo 22 je vyčlenený ako počúvací port servera. Táto vrstva implementuje šifrovanie, kompresiu, kontrolu integrity, počiatočnú výmenu kľúčov a autentifikáciu servera. Hoci každá implementácia môže umožňovať viac, vystavuje vyššej vrstve rozhranie na vysielanie a prijímanie paketov otvoreného textu, každý s veľkosťou až 32 768 bajtov. Zvyčajne po prenesení 1 GB dát alebo po uplynutí jednej hodiny, podľa toho, čo nastane skôr, transportná vrstva zariadi opätovnú výmenu kľúča.
- Autentifikácia klienta je riešená cez vrstvu autentifikácie užívateľa (RFC 4252), ktorá ponúka aj niekoľko techník autentifikácie. Klientom riadená autentifikácia znamená, že klient SSH, nie server, môže požiadať používateľa o heslo. Zo servera dostanú odpoveď iba požiadavky klienta na autentifikáciu. Často sa používajú nasledujúce techniky overovania používateľov:
heslo , jednoduchá technika overovania hesla, ktorá zahŕňa možnosť upraviť heslo. Nie každý softvér používa túto techniku. - Zvyčajne podporujúce aspoň páry kľúčov DSA, ECDSA alebo RSA verejný kľúč je technika autentifikácie na základe verejného kľúča. Iné implementácie navyše akceptujú certifikáty X.509.
- Funkcia jednotného prihlásenia pre relácie SSH je poskytovaná prostredníctvom GSSAPI autentifikačné techniky, ktoré ponúkajú rozšíriteľný systém na spracovanie autentifikácie SSH pomocou externých mechanizmov ako Kerberos 5 alebo NTLM. Hoci OpenSSH má funkčnú implementáciu GSSAPI, komerčné implementácie SSH často integrujú tieto techniky na použitie v spoločnostiach.
- Myšlienka kanálov, ktoré definujú ponúkané služby SSH, je definovaná vrstvou pripojenia (RFC 4254). Dokážeme znásobiť viacero SSH pripojení z jedného. Oba prenášajú dáta v oboch smeroch. Požiadavky na kanály prenášajú mimopásmové údaje konkrétne danému kanálu, ako napríklad výstupný kód procesu na strane servera alebo zmena veľkosti okna terminálu. Okrem toho pomocou veľkosti prijímacieho okna každý kanál riadi svoj tok. Klient SSH odošle globálnu požiadavku na presmerovanie portu na strane servera. Bežné typy kanálov zahŕňajú:
- Shell pre SFTP, exec a terminálové shelly (vrátane prenosov SCP)
- Direct-TCPIP pre presmerované pripojenia z klienta na server.
- Preposlané pripojenia server-klient pomocou forwarded-tcpip
- Na potvrdenie legitímnosti hostiteľa poskytuje záznam DNS SSHFP (RFC 4255) odtlačky verejného kľúča hostiteľa.
Vďaka svojmu otvorenému dizajnu môžeme okrem zabezpečenia shellov použiť SSH na širokú škálu úloh, čo mu dáva veľkú všestrannosť.
sql vyberte z viacerých tabuliek
Zraniteľnosť
SSH-1
Kvôli nedostatočnej ochrane integrity údajov poskytovanej CRC-32 v tejto verzii protokolu bola v roku 1998 identifikovaná zraniteľnosť v SSH 1.5, ktorá umožňovala neoprávnené vkladanie materiálu do šifrovaného toku SSH. Vo väčšine implementácií pridali opravu známu ako SSH Compensation Attack Detector. Niekoľko z týchto revidovaných implementácií zahŕňalo novú chybu pretečenia celého čísla, ktorá útočníkom umožnila spúšťať ľubovoľný kód pomocou root alebo schopností démona SSH.
Chyba, ktorá útočníkom umožňuje zmeniť posledný blok relácie šifrovanej IDEA, sa našla v januári 2001. V tom istom mesiaci sa našla ďalšia chyba, ktorá umožnila podvodnému serveru odovzdať prihlásenie klienta inému serveru.
Kvôli svojim prirodzeným zraniteľnostiam sa SSH-1 vo všeobecnosti považuje za zastaraný a malo by sa mu predísť výslovným odstránením núdzového protokolu SSH-1. Väčšina súčasných serverov a klientov podporuje SSH-2.
Obnova otvoreného textu pre CBC
V novembri 2008 bola vo všetkých verziách SSH objavená teoretická zraniteľnosť, ktorá umožňovala získať až 32 bitov otvoreného textu z bloku šifrovaného textu zašifrovaného dobovou štandardnou šifrovacou metódou CBC. Najjednoduchšou opravou je prejsť na CTR, počítadlo namiesto režimu CBC, ktorý robí SSH imúnnym voči útoku.
NSA podozrivá z dešifrovania
Zverejnenie citlivých dokumentov Edwarda Snowdena pre Der Spiegel 28. decembra 2014 naznačuje, že Národná bezpečnostná agentúra bude schopná potenciálne dekódovať určitú komunikáciu SSH.