SSH: Secure Shell
SSH reiškia „Secure Shell“. Jis taip pat žinomas kaip Secure Socket Shell. Kriptografinis tinklo protokolas, vadinamas Secure Shell (SSH), naudojamas saugiai valdyti tinklo paslaugas nesaugiuose tinkluose. Kliento serverio architektūra yra SSH programų, kurios susieja SSH kliento egzempliorių su SSH serveriu, pagrindas.
Kaip Telnet ir nesaugių nuotolinių Unix apvalkalo protokolų, tokių kaip Berkeley Remote Shell (rsh) ir su juo susijusių rlogin ir rexec protokolų, įpėdinis, SSH buvo sukurtas į Unix panašioms operacinėms sistemoms, kuriose naudojamas nesaugus, paprasto teksto autentifikavimo prieigos rakto ryšys.
Apibrėžimas
SSH galime taikyti keliais skirtingais būdais. Paprasčiausias įgyvendinimas užšifruoja duomenis naudojant automatiškai generuojamas viešųjų ir privačių raktų poras abiejuose ryšio kanalo ir tinklo ryšio galuose. Po to jis autentifikuoja vartotoją naudodamas slaptažodį. Kai vartotojas rankiniu būdu sugeneruoja viešojo ir privataus raktų porą, autentifikavimas praktiškai baigiamas, kai sukuriama raktų pora, todėl seansas gali būti paleistas akimirksniu, neprašant slaptažodžio.
istorija java
Tokiu atveju savininkas saugo atitinkamą privatųjį raktą paslaptyje, o viešasis raktas yra įdiegtas visuose įrenginiuose, kurie turi suteikti savininkui prieigą. Nors privatus raktas yra autentifikavimo pagrindas, atliekant autentifikavimą raktas niekada nesiunčiamas per tinklą. SSH patvirtina, kad viešojo rakto teikėjas taip pat turi atitinkamą privatųjį raktą.
Prieš priimant juos kaip teisėtus viešuosius raktus su ID, labai svarbu sujungti nežinomą viešąjį raktą su žinomu privačiu raktu visose SSH versijose. Priėmus viešąjį raktą iš užpuoliko jo nepatvirtinus, nepatikimas užpuolikas bus priimtas kaip teisėtas vartotojas.
Kūrimas
Tatu Ylönen, kompiuterių mokslininkas iš Suomijos, SSH pirmą kartą sukūrė 1995 m. Tolesnis protokolų rinkinio kūrimas vyko daugelyje kūrėjų grupių, todėl atsirado įvairių diegimo iteracijų. Yra įdiegimų visoms populiarioms operacinėms sistemoms, įskaitant įterptąsias sistemas. „OpenSSH“, kurią „OpenBSD“ kūrėjai padarė prieinamą kaip atvirojo kodo programinę įrangą 1999 m., yra dažniausiai naudojamas programinės įrangos paketas.
OpenSSH raktų autentifikavimui valdymas
Patvirtintas viešųjų raktų sąrašas paprastai laikomas Unix tipo sistemose faile ~/.ssh/authorized keys vartotojo namų kataloge, kuris turi nuotolinio prisijungimo teises. SSH gerbia šį failą tik tuo atveju, jei jo negali pakeisti niekas kitas, išskyrus savininką ir šaknį. Slaptažodis nebereikalingas, kai yra ir nuotolinio galo viešasis raktas, ir vietinio galo atitinkamas privatus raktas. Tačiau galime naudoti slaptafrazę, kad užrakintume privatųjį raktą, kad būtų užtikrinta daug didesnė apsauga. Taip pat galime ieškoti slaptojo kodo įprastose vietose ir galime naudoti komandinės eilutės parinktį, kad pateiktume visą jo kelią (ssh parinktis -i).
Be to, SSH teikia automatizuotą raktų generavimu užšifruotą slaptažodžiu pagrįstą autentifikavimą. Pagal šį scenarijų užpuolikas gali apsimesti patikima serverio puse, paprašyti slaptažodžio ir jį gauti (man-in-the-middle ataka). Serverio pusėje galime išjungti slaptažodžio autentifikavimą.
Naudokite
SSH naudoja kliento-serverio paradigmą. Paprastai SSH naudojamas registravimui. Jis taip pat gali tuneliuoti TCP prievadus, persiųsti X11 ryšius ir vykdyti komandas nuotolinėje sistemoje. Paprastai ryšiai su SSH demonu, leidžiančiu užmegzti nuotolinius ryšius, užmezgami naudojant SSH kliento programą. Abu jie dažnai randami daugelyje šiuolaikinių operacinių sistemų, tokių kaip macOS, Linux distribucijos, OpenBSD, FreeBSD, NetBSD, Solaris ir OpenVMS. Kai kurios versijos yra patentuotos, nemokamos ir atvirojo kodo, turinčios skirtingą sudėtingumo ir išsamumo laipsnį (pvz., PuTTY ir OpenSSH versija, įtraukta į Cygwin ir OpenSSH). Pažymėtina, kad SSH pagal numatytuosius nustatymus neįtrauktas į „Windows“ versijas iki „Windows 10“ 1709 versijos.
Panašias failų valdymo (sinchronizavimo, kopijavimo ir nuotolinio trynimo) funkcijas siūlo nemokama ir atvirojo kodo Windows programa WinSCP, kuri naudoja PuTTY kaip užnugarį. Nereikia diegti kliento kompiuteryje, „WinSCP“ ir „PuTTY“ yra supakuoti, kad galėtų veikti tiesiogiai iš USB disko. Norint nustatyti SSH serverį sistemoje Windows, dažnai reikia įgalinti funkciją nustatymų programoje.
Norint išspręsti ryšio problemas ir išvengti saugumo rizikos, kylančios dėl tiesioginio debesies pagrindu veikiančios virtualios mašinos atskleidimo prie interneto, SSH yra labai svarbus debesų kompiuterijoje. Saugus ryšys internetu gali būti įmanomas per SSH tunelio virtualų kompiuterį per ugniasienę. Šiam protokolui IANA paskyrė 22 TCP prievadą, 22 UDP prievadą ir 22 SCTP prievadą.
Jau 2001 m. IANA priskyrė numatytąjį TCP 22 prievadą SSH serveriams kaip vieną iš gerai žinomų prievadų. Į ryšį orientuotas transporto lygmens protokolas SCTP gali būti naudojamas SSH, o ne TCP paleidimui.
javascript įspėjimo laukelis
Istorinė progresija
1 iteracija
Slaptažodžio uostymas savo institucijos tinkle įkvėpė Tatu Ylöneną, Helsinkio technologijos universiteto Suomijoje mokslininką, kuris 1995 m. sukūrė pradinę protokolo (šiandien žinomo kaip SSH-1) iteraciją.
SSH buvo sukurtas atlikti ankstesnių protokolų, įskaitant rlogin, TELNET, FTP ir rsh, vaidmenį, kuriems trūko patikimų autentifikavimo ir slaptumo garantijų. Ylönen padarė savo programą prieinamą kaip nemokamą programą. 1995 m. liepos mėn. prietaisas greitai išpopuliarėjo. Iki 1995 m. pabaigos buvo 20 000 SSH vartotojų 50 skirtingų šalių.
Siekdama skatinti ir tobulinti SSH, Ylönen 1995 m. gruodį įkūrė SSH Communications Security. Įvairūs nemokami programinės įrangos komponentai, įskaitant GNU libgmp, buvo panaudoti pirmajame SSH programos leidime, tačiau vėliau SSH Communications Security teikiamos iteracijos išaugo į vis labiau patentuotą programinę įrangą. Remiantis skaičiavimais, 2000 m. buvo 2 milijonai vartotojų.
2 iteracija
Interneto inžinerijos darbo grupė (IETF) oficialiuose dokumentuose paskyrė darbo grupę, atsakingą už SSH protokolo 2 versijos kūrimą, pavadinimu Secsh.
SSH-2, patobulinta protokolo iteracija, tapo standartu 2006 m. SSH-1 nesuderinamas su šia versija. SSH-2 siūlo funkcionalumą ir saugos atnaujinimus, palyginti su SSH-1. Pavyzdžiui, Diffie-Hellman raktų keitimas ir patikimas vientisumo patikrinimas naudojant pranešimų autentifikavimo kodus užtikrina didesnį saugumą. Galimybė valdyti neribotą apvalkalo seansų skaičių per vieną SSH ryšį yra viena iš naujų SSH-2 galimybių. Kadangi SSH-2 yra pažangesnis ir plačiau naudojamas nei SSH-1, tam tikri diegimai, tokie kaip libssh (v0.8.0+), Lsh ir Dropbear, palaiko tik SSH-2.
Iteracija 1.99
RFC 4253 reikalauja, kad SSH serveris, palaikantis 2.0, taip pat ankstesnes versijas, 2006 m. sausio mėn., gerokai po 2.1 versijos sukūrimo, nurodytų savo protokolo versiją kaip 1.99. Šis versijos numeris naudojamas atgaliniam suderinamumui nurodyti, o ne ankstesnei programinės įrangos versijai.
OSSH ir OpenSSH
Nuo 1999 m., kai paskutinė originalios SSH programos versija, 1.2.12 versija, buvo platinama pagal atvirojo kodo licenciją, kūrėjai dirba su nemokama programinės įrangos versija. Tai buvo Björno Grönvallo OSSH programos pagrindas. Netrukus po to OpenBSD komanda klonavo Grönvall darbą, kad sukurtų OpenSSH, kuris buvo įtrauktas į OpenBSD 2.6 leidimą. Jie sukūrė „perkeliamumo“ šaką iš šios versijos, kad galėtų perkelti OpenSSH į skirtingas operacines sistemas.
2005 m. plačiausiai naudojamas SSH diegimas buvo OpenSSH, numatytoji daugelio operacinių sistemų platinimų versija. Pašalinus SSH-1 palaikymą iš kodų bazės OpenSSH 7.6 leidime, OpenSSH vis dar atnaujinamas ir palaiko SSH-2 protokolą. Tuo tarpu OSSH nebėra aktualus.
Naudoja
Vartotojas „josh“ „SSH“ persikėlė iš vietinio kompiuterio „foo fighter“ į tolimą mašiną „tengwar“, kad paleistų „xeyes“ kaip X11 programos tuneliavimo per SSH pavyzdį. Žmonės naudoja Windows SSH klientą PuTTY, norėdami pasiekti OpenWrt.
SSH yra protokolas, veikiantis su daugeliu sistemų, įskaitant Microsoft Windows ir daugumą Unix variantų (Linux, BSD, įskaitant Apple MacOS ir Solaris). Toliau nurodytoms programoms gali prireikti funkcijų, kurios yra išskirtinės arba suderinamos su tam tikrais SSH klientais ar serveriais. Pavyzdžiui, šiuo metu galima naudoti tik OpenSSH serverį ir kliento SSH protokolo įgyvendinimą VPN kūrimui.
- Norėdami pasiekti apvalkalą nutolusiame pagrindiniame kompiuteryje (pakeičiant Telnet ir rlogin)
- Atliekant vienišą komandą nutolusiame pagrindiniame kompiuteryje (pakeičiant rsh)
- Norėdami konfigūruoti tolimo serverio automatinį (be slaptažodžio) prisijungimą (pavyzdžiui, naudojant OpenSSH)
- Kadangi tai yra visiškai veikiantis šifruotas VPN, atminkite, kad šią funkciją palaiko tik OpenSSH klientas ir serveris.
- X perdavimui iš tolimo pagrindinio kompiuterio (galima per kelis tarpinius kompiuterius)
- SSH klientų, palaikančių SOCKS protokolą, naudojimui naršyti internete per šifruotą tarpinio serverio ryšį.
- Norėdami saugiai prijungti nuotolinio serverio katalogą kaip failų sistemą vietiniame kompiuteryje, kuriame naudojamas SSHFS.
- Naudojant vieną ar daugiau aukščiau paminėtų technologijų, skirtų automatiniam nuotolinio serverio stebėjimui ir administravimui.
- Su SSH suderinamai mobiliesiems arba įterptiesiems įrenginiams kurti.
- Norėdami apsaugoti failų perdavimo mechanizmus.
Failų perdavimo metodai
Kai kuriose failų perdavimo sistemose naudojami „Secure Shell“ protokolai, tokie kaip
np taškas
- Naudojant SSH, saugi kopija (SCP) sukurta iš RCP protokolo.
- rsync, kuris turėtų būti efektyvesnis nei SCP, dažnai veikia per SSH ryšį.
- Saugi FTP alternatyva yra SSH failų perdavimo protokolas (SFTP) (nepainioti su FTP per SSH arba FTPS).
- FISH, arba failai, perkelti per apvalkalo protokolą, buvo pristatyti 1998 m. ir sukurti iš SSH per Unix apvalkalo instrukcijas.
- Aspera, taip pat žinomas kaip greitas ir saugus protokolas (FASP), komandoms ir duomenų perdavimui naudoja SSH, UDP prievadus.
Architektūra
Trys skirtingi komponentai sudaro sluoksniuotą SSH protokolo architektūrą:
- TCP/IP perdavimo valdymo protokolą (TCP) dažniausiai naudoja transporto sluoksnis (RFC 4253), o prievadas numeris 22 yra atskirtas kaip serverio klausymo prievadas. Šis sluoksnis įgyvendina šifravimą, glaudinimą, vientisumo tikrinimą, pradinį raktų keitimą ir serverio autentifikavimą. Nors kiekvienas įgyvendinimas gali leisti daugiau, aukštesniam sluoksniui ji suteikia sąsają, skirtą iki 32 768 baitų paprasto teksto paketams perduoti ir priimti. Paprastai po 1 GB duomenų perdavimo arba praėjus valandai, atsižvelgiant į tai, kas įvyksta anksčiau, transportavimo sluoksnis pasirūpina pakartotiniu raktų keitimu.
- Kliento autentifikavimas tvarkomas naudojant vartotojo autentifikavimo lygmenį (RFC 4252), kuris taip pat siūlo keletą autentifikavimo būdų. Kliento pagrįstas autentifikavimas reiškia, kad SSH klientas, o ne serveris, gali prašyti vartotojo slaptažodžio. Atsakymą iš serverio gauna tik kliento autentifikavimo užklausos. Dažnai naudojami šie vartotojo autentifikavimo būdai:
Slaptažodis , paprasta slaptažodžio autentifikavimo technika, apimanti galimybę keisti slaptažodį. Ne visa programinė įranga naudoja šią techniką. - Paprastai palaiko bent DSA, ECDSA arba RSA raktų poras viešasis raktas yra viešuoju raktu pagrįsto autentifikavimo technika. Kiti diegimai papildomai priima X.509 sertifikatus.
- Vieno prisijungimo funkcija SSH sesijoms teikiama per GSSAPI autentifikavimo metodai, kurie siūlo išplečiamą sistemą, leidžiančią valdyti SSH autentifikavimą naudojant išorinius mechanizmus, tokius kaip Kerberos 5 arba NTLM. Nors OpenSSH turi funkcinį GSSAPI diegimą, komerciniai SSH diegimai dažnai integruoja šiuos metodus, skirtus naudoti įmonėse.
- Kanalų, apibrėžiančių siūlomas SSH paslaugas, idėją apibrėžia ryšio sluoksnis (RFC 4254). Mes galime multipleksuoti kelis SSH ryšius iš vieno. Abu perduoda duomenis abiem kryptimis. Kanalo užklausos perduoda tam tikram kanalui būdingus už juostos ribų duomenis, pvz., serverio pusės proceso išėjimo kodą arba terminalo lango dydžio pasikeitimą. Be to, naudojant priėmimo lango dydį, kiekvienas kanalas valdo savo srautą. SSH klientas pateikia visuotinę užklausą persiųsti serverio prievadą. Įprasti kanalų tipai:
- SFTP, exec ir terminalo apvalkalų apvalkalas (įskaitant SCP perkėlimus)
- Tiesioginis TCPIP, skirtas persiųsti ryšiams iš kliento į serverį.
- Serveris-klientas peradresavo ryšius naudojant peradresuotą-tcpip
- Norint patvirtinti pagrindinio kompiuterio teisėtumą, SSHFP DNS įrašas (RFC 4255) siūlo viešojo pagrindinio kompiuterio rakto pirštų atspaudus.
Dėl atviro dizaino SSH galime naudoti ne tik apvalkalų tvirtinimui, bet ir įvairioms užduotims, suteikdami jam didelį universalumą.
Pažeidžiamumas
SSH-1
Dėl netinkamos duomenų vientisumo apsaugos, kurią CRC-32 užtikrina šioje protokolo versijoje, 1998 m. buvo nustatytas SSH 1.5 pažeidžiamumas, leidžiantis neteisėtai įterpti medžiagą į užšifruotą SSH srautą. Daugumoje diegimų jie pridėjo pataisą, žinomą kaip SSH kompensavimo atakos detektorius. Keletas iš šių peržiūrėtų diegimų apėmė naują sveikųjų skaičių perpildymo trūkumą, leidžiantį užpuolikams paleisti savavališką kodą su root arba SSH demono galimybėmis.
Trūkumas, leidžiantis užpuolikams pakeisti paskutinį IDEA šifruotos seanso bloką, buvo rastas 2001 m. sausio mėn. Kitas trūkumas, leidžiantis nesąžiningam serveriui perduoti kliento prisijungimą kitam serveriui, buvo rastas tą patį mėnesį.
Dėl būdingų pažeidžiamumų SSH-1 paprastai laikomas pasenusiu ir turėtų būti vengiama aiškiai pašalinus atsarginį SSH-1. Dauguma dabartinių serverių ir klientų palaiko SSH-2.
Paprasto teksto atkūrimas CBC
2008 m. lapkričio mėn. visose SSH versijose buvo aptiktas teorinis pažeidžiamumas, leidžiantis gauti iki 32 bitų paprasto teksto iš šifruoto teksto bloko, užšifruoto naudojant standartinį šifravimo metodą CBC. Paprasčiausias sprendimas yra pereiti prie CTR, skaitiklio. režimu, o ne CBC režimu, dėl kurio SSH yra atsparus atakai.
NSA įtariamas iššifravimu
2014 m. gruodžio 28 d. Edwardo Snowdeno neskelbtinų dokumentų paskelbimas „Der Spiegel“ reiškia, kad Nacionalinė saugumo agentūra galės iššifruoti tam tikrus SSH ryšius.