Kaj je SSH in kako deluje?
S ecure Š ell (SSH) je pogosto implementiran varnostni protokol z vrsto različnih uporab. Njegova najbolj znana aplikacija uporabnikom omogočavaren dostop do oddaljenih računalnikov in strežnikov, lahko pa se uporablja tudi za tuneliranje, posredovanje vrat, varne prenose datotek in več.
V tem vodniku bomo obravnavalikaj je SSH, za kaj se uporablja, zgodovina protokola, njegove tehnične podrobnosti, kot tudivarnostna vprašanjaki jih je treba upoštevati.
SSH je sestavljen iz treh ločenih protokolov:transportni sloj, sloj za preverjanje pristnosti in povezovalni sloj. Ti skupaj služijo za preverjanje pristnosti druge strani v povezavi, zagotavljajo zaupnost s šifriranjem in preverjajo celovitost podatkov. SSH se zdaj najpogosteje izvaja bodisi kot lastniški SSH-2 bodisi kot odprtokodna iteracija, OpenSSH.
Uporaba SSH
SSH je vsestranski protokol. Njegova struktura in varnostne funkcije omogočajo uporabo na številne načine, na primer za oddaljeni dostop, posredovanje vrat, tuneliranje in varne prenose datotek.
Oddaljen dostop
Oddaljeni dostop omogoča uporabnikom, daprijaviti v drug računalnik ali strežnik s svojega računalnika. Uporablja se za dostop do lokalnih datotek ciljnega računalnika ali izvajanje storitev na njem, ne da bi morali biti fizično tam.
Programi, kot sta Telnet in rlogin, imajo tudi to funkcijo, vendar nimajo varnostnih funkcij SSH. Ukrepi šifriranja in preverjanja pristnosti, vključeni v SSH, omogočajo uporabnikom, da se na zaščiten način povežejo z drugim strežnikom ali računalnikom, tudi prek potencialno nevarnega vmesnega omrežja.
Oddaljeni dostop s SSH se običajno izvaja tako, da lahko zaposleni delajo na daljavo ali da omogoči oddelku IT, da opravi naloge, ne da bi morali fizično iti do računalnika. Uporablja se lahko za oddaljeno administracijo, upravljanje omrežne infrastrukture, za nastavitev avtomatizacije, ustvarjanje varnostnih kopij in drugo.
Posredovanje vrat
Posredovanje vrat se uporablja za prenos zahtev z enega naslova in številke vrat na drug niz. Uporablja prevajanje omrežnih naslovov (NAT) za preusmeritev vrat med lokalnim omrežjem in oddaljenim računalnikom, kar vam omogoča dostop do naprave izven omrežja.
Posredovanje vrat je mogoče izvesti na tri različne načine:
- Lokalno posredovanje vrat – Lokalno posredovanje vrat vam omogoča povezavo lokalnega odjemalca in zunanjega omrežja. Lahko je učinkovit pri izvajanju stvari, kot je dostop do spletnih mest, ki so lokalno blokirana, ali za povezovanje z bazo podatkov, ki je za požarnim zidom.
- Oddaljeno posredovanje vrat – Ta vrsta posredovanja omogoča aplikacijam na strani strežnika dostop do storitev na strani odjemalca. Posredovanje oddaljenih vrat SSH uporabnikom omogoča varno povezavo z oddaljenimi strežniki prek njihovega lokalnega računalnika s preusmeritvijo lokalnih vrat na oddaljeni strežnik SSH.
- Dinamično posredovanje vrat – To omogoča uporabnikom, da pošljejo svoje podatke prek določenih vrat v oddaljeni računalnik ali strežnik z uporabo številnih strežnikov SSH, ki delujejo kot posredniki.
Tuneliranje
Protokoli za tuneliranje uporabljajo enkapsulacijo za premikanje podatkov med omrežji. Tunele je mogoče razmestiti tako, da se tujerodnim protokolom omogoči izvajanje prek omrežij, ki jih običajno ne podpirajo. Druga pogosta uporaba je zazagotavljanje varnosti v nevarnem omrežju.
Protokoli za tuneliranje zavijejo kritične pakete v tovor drugega paketa. Tuneliranje SSH omogoča uporabnikom, da zaobidejo varnost omrežja, povežejo naprave z uporabo tujega omrežnega protokola in zavarujejo podatke, ki se prenašajo. Pogosto se uporabljajo za varno povezovanje oddaljenih uporabnikov s spletnimi viri njihove organizacije.
SFTP
Protokol za prenos datotek SSH (FTP), včasih znan tudi kot protokol za varen prenos datotek, zagotavlja varen način za dostop, prenos in upravljanje datotek. Je varna alternativa FTP-ju in uporablja protokol SSH za varno pošiljanje, prejemanje in upravljanje datotek.
SCP
Protokol za varno kopiranje (SCP) je podoben SFTP, vendar bolj omejen v svojem obsegu. Omogoča samo varne prenose datotek, namesto celotnega nabora funkcij, ki to omogočajo SFTP da deluje kot protokol oddaljenega datotečnega sistema.
Platforme in aplikacije, ki uporabljajo SSH
Lastniški SSH ali OpenSSH je mogoče uporabiti v vseh glavnih operacijskih sistemih. Na voljo je na platformah Unix, kot so OpenBSD, macOS, Linux in Solaris, medtem ko lahko uporabniki sistema Windows uporabljajo SSH skozi PowerShell .
Zgodovina SSH
SSH je na Tehnološki univerzi v Helsinkih leta 1995 razvil Tatu Ylönen kot odgovor na napad z vohanjem gesel na univerzitetno omrežje. Njegov cilj je bil zagotoviti alternativo protokolom, kot je FTP, TELNET, rsh in rlogin , ki ni zagotovila zaupnosti ali avtentikacije uporabnikov na varen način.
SSH je bil brezplačno objavljen leta 1995 in je bil dobro sprejet. Med njegovim hitrim sprejetjem je Ylönen do konca istega leta ustanovil SSH Communications Security, da bi nadaljeval razvoj in komercializacijo SSH.
Leta 1995 je Ylönen objavil tudi internetni osnutek Internet Engineering Task Force (IETF), kidokumentiral protokol SSH-1. V protokolu so bile kmalu odkrite omejitve, ki jih ni bilo mogoče odpraviti, ne da bi to vplivalo na združljivost za nazaj. Rešitev je bila nova različica protokola, Ylönenovo podjetje pa je leta 1996 lansiralo SSH-2.
SSH-2 je vseboval nove algoritme, zaradi česar je IETF ustanovil delovno skupino, ki je želela standardizirati protokol. Skupino je dobil vzdevek SECSH, za odd ure Š ell, leta 1997 pa je objavil svoj prvi internetni osnutek za SSH-2.
Programska oprema za SSH-2 je bila izdano leta 1998 , vendar zaradi bolj restriktivnega licenciranja ni bil takoj široko sprejet.Leta 2006 je spremenjena različica protokola postala standard IETF. To je bilo bolj varno, z uporabo kod za preverjanje pristnosti sporočila za preverjanje celovitosti in izmenjavo ključev Diffie-Hellman za preverjanje pristnosti.
Leta 1999 je izšel projekt OpenBSD OpenSSH .OpenSSH je brezplačna različica protokolaki temelji na spremembah, ki jih je Björn Grönvall naredil v SSH 1.1.12. Razvijalci so se vrnili k tej starejši različici in jo močno spremenili, saj je bila zadnja različica SSH popolnoma odprtokodna. OpenSSH je zdaj najbolj razširjena možnost in je od takrat implementiran v vrsto operacijskih sistemov, kot so Windows, macOS, Linux, Solaris in drugi.
SSH-1 proti SSH-2 proti OpenSSH
Kot je navedeno zgoraj, je SSH-1 prva različica protokola, ki je bila prvotno izdana pod anodprtokodna licenca. Velja za nevarno in se ga ne bi smelo izvajati. Tako ostaneta lastniška različica, SSH-2, in prosto dostopna različica, OpenSSH, kot izvedljivi alternativi.
SSH-2 in OpenSSH sta v bistvu enaka, ko gre za njuno arhitekturo in način delovanja. Glavna razlika je v tem, da je lastniška različica opremljena z vrsto možnosti podpore, medtem ko se morajo tisti, ki uporabljajo OpenSSH, zanašati na vire, ki jih prosto ustvari skupnost.
SSH: tehnične podrobnosti
SSH-1 je deloval kot en sam protokol, vendar ga tukaj ne bomo obravnavali, ker je zastarel. Namesto tega se bomo osredotočili na SSH-2 in OpenSSH, ki sta sestavljena iz treh ločenih protokolov:
- Transportni protokol – To vzpostavi povezavo in zagotovi temeljno varnost.
- Protokol za preverjanje pristnosti – Ta sloj se uporablja za avtentikacijo odjemalca.
- Protokol povezave – Ta protokol obravnava kanale, po katerih se prenašajo podatki.
Vsak od teh protokolov ima edinstveno vlogo, ki deluje v smeri vzpostavljanja in zavarovanja povezave, preverjanja pristnosti druge strani in prenosa podatkov. Privzeta povezovalna vrata TCP so 22, povezave med odjemalcem SSH in strežnikom SSH pa se vzpostavijo vzdolžmodel odjemalec-strežnik.
Postopek oddaljene prijave v SSH poteka po naslednji osnovni strukturi (z različicami glede na konfiguracijo), ki jo bomo podrobneje obravnavali kasneje:
- Odjemalec se poveže s strežnikom SSH, da vzpostavi povezavo.
- Strežnik nato pošlje svoj javni ključ odjemalcu, da potrdi njegovo identiteto.
- Stranki se pogajata o parametrih za povezavo, nato pa vzdolž teh linij vzpostavita varen kanal.
- Uporabnik se nato prijavi v operacijski sistem strežniškega gostitelja in zdaj lahko upravlja svoje naloge na daljavo.
Transportni protokol
Transportna plast je nizkonivojski protokol, ki skrbi za naslednje naloge.
- Preverjanje pristnosti gostitelja strežnika
- Izmenjava ključev
- Šifriranje za zaupnost podatkov
- Preverjanje celovitosti, da se preveri, ali podatki niso bili spremenjeni
- Vzpostavitev ID-ja seje, ki se lahko uporablja v drugih protokolih
Thetransportni protokol overja samo strežnik in ne odjemalca(avtentikacija odjemalca se izvede v avtentikacijskem protokolu, če je ta zahtevan).
V transportnem sloju vzpostavi povezavo odjemalec in obe strani se nato pogajata o tem, kako bosta ključa izmenjana, kateri algoritem javnega ključa bo uporabljen, katera šifra s simetričnim ključem bo šifrirala podatke, kateri algoritem za avtentikacijo sporočil bo uporabljen preveriti podatke in kateri način stiskanja (če obstaja) bo uporabljen.
Ko se povezava začne, morata strežnik in odjemalec poslati identifikacijski niz, ki vključuje različico protokola (2.0).
Algoritem pogajanja
Za nastavitev parametrov povezave obe strani pošljeta paket, ki vsebuje seznam z naslednjimi možnostmi:
bajt SSH_MSG_KEXINIT
bajt[16] piškotek (naključni bajti)
imenski seznam kex_algorithms
seznam imen server_host_key_algorithms
seznam imen encryption_algorithms_client_to_server
seznam imen encryption_algorithms_server_to_client
imenski seznam mac_algorithms_client_to_server
seznam imen mac_algorithms_server_to_client
seznam imen kompresijski_algoritmi_odjemalca_strežniku
imenski_algoritmi_strežnika_odjemalcu
seznam imen languages_client_to_server
seznam imen languages_server_to_client
logično prvi_kex_packet_follows
uint32 0 (rezervirano za prihodnjo razširitev)
Vsaka stran navaja parametre, ki jih je pripravljena sprejeti v povezavi, ločene z vejicami. Najprej je treba navesti prednostni algoritem.
Za izmenjava ključev (kex_algorithms), bo za povezavo izbran prvi algoritem, ki ga podpirata obe strani (morda bodo izpolnjeni tudi drugi dejavniki, odvisno od tega, kateri algoritem je bil izbran). Če obe strani ne najdeta vzajemno podprtega algoritma, ki izpolnjuje te zahteve, potem povezava ne uspe.
Ključni algoritmi gostitelja strežnika so podprti algoritmi za ključ gostitelja strežnika. Strežnik določi algoritme, za katere ima gostiteljske ključe, medtem ko odjemalec določi algoritme, ki jih je pripravljen sprejeti. Izbira bo odvisna od tega, ali metoda izmenjave ključev, za katero ste se dogovorili, zahteva gostiteljski ključ, ki podpira šifriranje, ali digitalni podpis
Obe strani navajata algoritmi s simetričnim ključem ki so jih pripravljeni sprejeti, pri čemer so prednostne metode na vrhu. Uporabiti je treba prvo možnost, ki se prikaže na odjemalčevem seznamu in je po naključju tudi na strežnikovem seznamu. Če dogovora ni mogoče doseči, povezava ne uspe.
Oba MAC algoritem in algoritem stiskanja se pogajajo na enak način.
Izmenjava ključev
Izmenjava ključev je odgovorna zapreverjanje pristnosti strežnika, in tonastavi ključe, ki bodo uporabljeni za zaščito povezavev naslednjih korakih. Običajno se začne tako, da strani druga drugi pošiljata svoje sezname podprtih algoritmov. Druga možnost je, da lahko vsaka stran ugane prednostni algoritem druge strani in pošlje paket, ki na začetku ustreza parametrom tega algoritma.
Če je ugibanje ene strani pravilno, se ta paket uporabi kot prvi paket za izmenjavo ključev. Če nobeno ugibanje ni pravilno, mora vsaka stran narediti korak nazaj in poslati svoje sezname prednostnih algoritmov. Če sporočilo o izmenjavi ključev vključuje digitalni podpis strežnika kot dokaz legitimnosti strežnika, se šteje, eksplicitna avtentikacija strežnika . Če namesto tega uporablja skupno skrivnost, se imenuje implicitna avtentikacija strežnika .
Izmenjava ključev je odgovorna tudi za vzpostavitev skupne skrivnosti in zgoščene vrednosti. Zgoščena vrednost iz začetne izmenjave ključev postane enolični identifikator za sejo in se uporablja tudi kot del digitalnih podpisov, ki dokazujejo, da je stranka pravi lastnik svojega zasebnega ključa.
Uporabljena zgoščevalna funkcija bo odvisna od metode izmenjave ključev, izbrane v pogajanjih. Ko je izmenjava ključev končana, bodo vse prihodnje komunikacije uporabljale nov niz ključev in algoritmov.
Glede na delovno skupino za internetni inženiring (IETF) Internetni osnutek , veljajo naslednje metode izmenjave ključev za varne:
- krivulja25519-sha256
- krivulja448-sha512
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group14-sha256
- diffie-hellman-group15-sha512
- diffie-hellman-group16-sha512
- diffie-hellman-group17-sha512
- diffie-hellman-group18-sha512
- ecdh-sha2-nistp256
- ecdh-sha2-nistp384
- gss-skupina14-sha256
- gss-skupina15-sha512
- gss-skupina16-sha512
- gss-skupina17-sha512
- gss-skupina18-sha512
- gss-nistp256-sha256
- gss-nistp384-sha384
- gss-nistp521-sha512
- gss-krivulja25519-sha256
- gss-krivulja448-sha512
- rsa2048-sha256
Algoritem ključa gostitelja strežnika
Ti algoritmi javnega ključa se uporabljajo zaavtentikacijo strežnika ter za varno vzpostavitev skupnega ID-ja seje. Po želji jih je mogoče uporabiti tudi za avtentikacijo gostitelja. SSH je zasnovan tako, da deluje z vrsto algoritmov javnih ključev, tipov kodiranja in formatov:
- Za šifriranje in/ali digitalne podpise uporablja algoritme javnih ključev.
- Izvesti je mogoče vrsto metod kodiranja, ki omogočajo konfiguracijo z različnimi formati podatkov, oblazinjenjem in vrstnim redom bajtov.
- Različni formati ključev omogočajo kodiranje ključev na različne načine, kot tudi vrsto predstavitev potrdil.
Privzeti algoritmi vključujejo naslednje, vendar je mogoče implementirati tudi nekatere druge različice:
- ssh-rsa
- ssh-rsa-sha256
- ssh-dss
- ssh-dss-sha256
- x509v3-sign-dss
- x509v3-sign-dss-sha256
- x509v3-sign-rsa
- x509v3-sign-rsa-sha256
Algoritmi šifriranja
Uporabljajo se algoritmi s simetričnim ključemšifrirati podatke in zagotoviti zaupnost.Parametri in skupni ključ, ki se uporabljajo v procesu šifriranja, se vzpostavijo v prejšnjih fazah povezave. Izbrani algoritem šifrira obremenitev, dolžino paketa, dolžino oblazinjenja in polja oblazinjenja.
V SSH je sprejeta vrsta različnih algoritmov šifriranja, vendar se je zaradi varnosti najbolje držati AES . Ključi morajo biti vsaj 128-bitni, vendar so prednostni večji ključi.
MAC algoritmi
Transportni protokolpreveri celovitost podatkov tako, da paketu doda kodo za preverjanje pristnosti sporočila (MAC).Ta MAC temelji na skupni skrivnosti (ki je vzpostavljena v izmenjavi ključev), zaporedni številki paketa in vsebini paketa. Izračuna se pred šifriranjem.
Implementacije morajo ponuditi neodvisen algoritem za delovanje v vsaki smeri, čeprav je idealno, če se isti uporablja na obeh straneh. Implementirati je mogoče široko paleto algoritmov za preverjanje pristnosti sporočil, vendar je treba v večini primerov uporabiti SHA-256 in novejše, da se zagotovi visoka raven varnosti.
Stiskanje
Stiskanje v protokolu SSH ni obvezno, njegove izvedbe pa morajo omogočati, da se povezave nadaljujejo brez stiskanja. Stiskanje je mogoče izvesti samo kot možnost z uporabo shem, kot je zlib . Če se uporablja kompresija, vpliva le na koristno obremenitev. MAC in polje dolžine paketa se nato izračunata na podlagi stisnjenega koristnega tovora.
Paket transportnega protokola
Paket transportnega protokola je oblikovan tako, da vključuje naslednje informacije (kot tudi nekatere manj pomembne podrobnosti, ki so bile izpuščene):
- Dolžina paketa
- Dolžina oblazinjenja
- Tovor
- Oblazinjenje
- Koda za preverjanje pristnosti sporočila (MAC)
Protokol avtentikacije
Ta protokol strežnik uporablja zaavtentikacijo odjemalca.To lahko stori z vrsto različnih mehanizmov, od katerih se mnogi zanašajo na ID seje, določen v transportnem protokolu. Nekateri uporabljajo šifriranje in preverjanje celovitosti iz transportnega protokola v povezavi z ID-jem seje, drugi pa te algoritme uporabljajo sami.
Strežnik uporablja svoj lokalni pravilnik, da se odloči, katere metode preverjanja pristnosti sprejema od posameznega uporabnika. Ker je bil strežnik že overjen v transportnem protokolu,ni potrebe po ponovnem preverjanju pristnosti strežnika.
Varnost protokola za preverjanje pristnosti je odvisna od transportnega protokola, ki ga izvaja. Če transportni protokol ne more zagotoviti zaupnosti ali preveriti celovitosti podatkov, potem to omejuje varno uporabo protokola za preverjanje pristnosti.
Na primer, če transportni protokol ne uporablja zaščite integritete, potem zahteve, kot je sprememba gesla, ne bi smele biti dovoljene, ker bi to pustilo možnost napadalcem, da posegajo v podatke, ne da bi jih opazili.
Protokol za preverjanje pristnosti uporablja preverjanje pristnosti z javnim ključem ob predpostavki, da niti zasebni ključ strežniškega gostitelja niti ključ odjemalskega gostitelja nista bila ogrožena.Če je bil strežnik ogrožen, lahko to povzroči, da se uporabniško ime in geslo odjemalca izda napadalcu.
Da bi bila avtentikacija na osnovi gostitelja varna, odjemalec ne sme biti ogrožen. Če je to možnost, je treba dodati druge metode avtentikacije. Pomembno je omeniti, da postopek preverjanja pristnosti je tako močan kot najšibkejša metoda izmenjave, ki jo sprejme strežnik.
Postopek avtentikacijskega protokola
Protokol preverjanja pristnosti se začne, ko strežnik odjemalcu pošlje seznam svojih sprejetih metod preverjanja pristnosti. Stranka lahko nato izbira med temi metodami v poljubnem vrstnem redu. Ta postopek daje nadzor strežniku, hkrati pa omogoča dovolj prilagodljivosti, da lahko odjemalec poskrbi za uporabo najprimernejše metode.
Najpogostejši načini preverjanja pristnosti odjemalca vključujejo:
- Javni ključ – Ta metoda uporablja algoritme, kot je npr RSA , DSA in ECDSA za avtentikacijo odjemalca prek kriptografije z javnim ključem. Nekatere izvedbe uporabljajo tudi potrdila x.509. Strežnik preveri odjemalčev digitalni podpis glede na njihov javni ključ, da preveri odjemalčevo identiteto.
- Geslo – Gesla se lahko uporabljajo tudi za avtentikacijo odjemalca. Odjemalec pošlje svoje geslo (ki mora biti šifrirano s transportnim protokolom). Če se geslo ujema s shranjeno vrednostjo strežnika, je sprejeto in preverjanje pristnosti se premakne naprej.
- GSSAPI – Pri tej metodi se lahko zunanje sheme, kot je Kerberos, uporabljajo za enotno prijavo.
- Interaktivna tipkovnica – Ta tehnika omogoča preverjanje pristnosti z enkratnim geslom, tako da strežnik od odjemalca zahteva podatke.
Protokol povezave
Protokol povezave določakako bo več kanalov podatkov združenih prek varne transportne plasti. Ukvarja se tudi s parametri, ki se uporabljajo za dostop do varnih podsistemov na strežniškem gostitelju, kot tudi s posredovanjem posrednika in dostopanjem do lupin.
Protokol povezave je na vrhu transportne plasti in protokolov za preverjanje pristnosti. Omogoča oddaljeno izvajanje ukazov, kot tudi posredovane povezave X11 in TCP/IP. Če je bil strežnik ali odjemalec ogrožen, povezovalni protokol ni varen.
Kanali
Kanali so osnovne komunikacijske poti in jih lahko odpira katera koli stran. Kanali lahko vključujejo terminalske seje, posredovane povezave in druge oblike komunikacije. Če je kanalov več, so ti multipleksirani v eno povezavo.
Odpiranje kanalov
Vsak kanal je oštevilčen na obeh koncih, čeprav so lahko številke na obeh straneh različne. Ko ena stran zahteva odprtje kanala, pošlje svojo številko kanala kot del sporočila in informacije o začetna velikost okna in največja velikost paketa .
Začetna velikost okna nakazuje, koliko podatkov lahko prejme stranka, ki odpre kanal. Če je treba poslati več podatkov, je treba najprej prilagoditi okno. Podobno največja velikost paketa določa, kako velik paket je mogoče prejeti.
Ko ena stran zahteva odprtje kanala, bo druga stran odprla kanal, če lahko to sprejme. Če ne, bo poslal sporočilo o napaki. Kanali se lahko ne odprejo zaradi naslednjih razlogov:
- Prepovedano s strani uprave
- Povezava ni uspela
- Neznana vrsta kanala
- Pomanjkanje virov
Če katera koli stran povezave želi poslati več podatkov, kot trenutno dovoljuje okno, lahko pošlje sporočilo z zahtevo po dodajanju več bajtov.
Zapiranje kanalov
Ko ena stran povezave konča prenos podatkov, mora poslati sporočilo, da je končala uporabo kanala. Kljub temu je kanal odprt in druga stran lahko še vedno pošilja podatke. Če stranka želi popolnoma prekiniti kanal, to stori z ločenim sporočilom o prekinitvi.
SSH varnost
Vsaka od različnih različic SSH ima svoje varnostne težave, čeprav trenutne konfiguracijeSSH-2 in OpenSSH veljata za veliko varnejša od SSH-1.
SSH-1
SSH-1 na splošno velja za pomanjkljivega, z vrsto različnih ranljivosti. Ti vključujejo napako v SSH 1.5, ki je nepooblaščenim uporabnikom omogočala vstavljanje vsebine v podatkovni tok SSH. Ta napad je izkoristil minimalno zaščito celovitosti podatkov algoritma CRC-32.
Ta napad je bil omilil SSH Compensation Attack Detector, ki je bil integriran v večino novejših izvedb. Ta popravek je prišel z novo ranljivostjo, ki je imela moč za izvajanje poljubne kode s korenskimi pravicami.
Obstaja tudi ranljivost, ki nasprotnikom omogoča, da spremenijo zadnji blok v seji, ki uporablja šifriranje IDEA, in ranljivost, ki ogroženemu strežniku omogoča, da postopek preverjanja pristnosti odjemalca posreduje drugemu strežniku.
Zaradi teh varnostnih težav je treba namesto tega uporabiti SSH-2. Da bo vaša implementacija varna, bi morali tudi onemogočite ponovno pogajanje na SSH-1 , saj lahko napadi to izkoristijo za dostop do vaših podatkov prek šibkejše ravni zaščite SSH-1.
SSH-2
SSH-2 je ranljiv za teoretični napad na njegov privzeti način šifriranja CBC. Napadalcu omogoča obnovitev do 32 bitov odprtega besedila iz šifriranega bloka. To je mogoče ublažiti z uporabo načina števca (CTR) in spreminjanjem blokovne šifre v pretočno šifro.
Konec leta 2014 je Zrcalo objavila dokumente NSA, ki nakazujejo, da lahko NSA včasih zlomi SSH. PowerPoint NSA, ki je pricurljal v javnost, je izjavil, da lahko NSA 'Morebitna obnovitev uporabniških imen in gesel«, čeprav več podrobnosti ni podanih. S kakšnimi metodami je agencija to počela, ni znano, a zdi se malo verjetno, da bi o svojih zmožnostih lagala v lastni interni dokumentaciji.
Leta 2017 Puščanje trezorja 7 , se je razkrilo, daCIA je imela dve orodji, ki ju je bilo mogoče uporabiti za prestrezanje in krajo prijav in gesel SSH. BothanSpy je ciljal na odjemalce Windows Xshell, Gyrfalcon pa je bil uporabljen proti odjemalcu OpenSSH v številnih različnih distribucijah Linuxa.
Ta orodja so sposobna ukrasti poverilnice in jih nato poslati nazaj na strežnik Cie. Nobeden od teh napadov ne more zlomiti samega protokola; samo uporabljajo napade drugih stranskih kanalov, ki jih lahko zaobidejo v določenih izvedbah.
Kljub tem napadom se SSH-2 v večini primerov šteje za varnega, če je pravilno implementiran. Cilji z visoko vrednostjo ali tisti, ki uporabljajo zastarele ali slabe izvedbe, bi morali razmisliti o drugih možnostih.
OpenSSH
V OpenSSH različici 2,an napad je bilo odkrito, da je izkoristil slabost v binarnem paketu SSH. Napad je raziskovalcem z Univerze v Londonu omogočil obnovitev 14 bitov odprtega besedila iz šifriranega bloka. To je bilo ublaženo v izdaji 5.2 tako, da je protokol prebral celotno neveljavno dolžino paketa ali kodo za preverjanje pristnosti sporočila, namesto da prekine povezavo.
V različicah 6.8 in 6.9 je bilo mogoče Linux uporabiti za izvajanje poljubnih ukazov na terminalih drugih uporabnikov. To je bilo doseženo z ranljivostjo stopnjevanja privilegijev, ki je napadalcem omogočila vstavljanje znakov z nadzorom vhoda/izhoda TIOCSTI.
Je SSH varen?
Čeprav se morda zdi, da ima SSH veliko varnostnih težav,je relativnoy normalno, da je v različnih izvedbah protokola najdenih več ranljivosti. To ne pomeni, da protokol SSH ni varen. Namesto tega pomeni le totreba ga je pravilno izvajati.
Dokler uporabljate eno ali drugoSSH-2 ali OpenSSH in je konfiguriran na način, ki ustreza vaši uporabi, bi morali biti prepričani v zaščito, ki jo SSH zagotavlja vaši povezavi. Zato je še vedno tako pogosto uporabljen protokol, zlasti za oddaljeni dostop in tuneliranje.
Poglej tudi: Razložene so pogoste vrste šifriranja
Ozadje tehnologije kibernetskega omrežja avtor TheDigitalArtist z licenco pod CC0