SSH: Secure Shell
SSH apzīmē Secure Shell. Tas ir pazīstams arī kā Secure Socket Shell. Lai droši darbinātu tīkla pakalpojumus nedrošos tīklos, tiek izmantots kriptogrāfiskā tīkla protokols, ko sauc par Secure Shell (SSH). Klienta servera arhitektūra ir SSH lietojumprogrammu pamats, kas savieno SSH klienta gadījumu ar SSH serveri.
Kā Telnet un nedrošo attālo Unix apvalka protokolu, piemēram, Berkeley Remote Shell (rsh) un ar to saistīto rlogin un rexec protokolu pēctecis, SSH tika izveidots Unix līdzīgām operētājsistēmām, kas izmanto nedrošu, vienkārša teksta autentifikācijas marķiera komunikāciju.
Definīcija
Mēs varam lietot SSH vairākos dažādos veidos. Vienkāršākā ieviešana šifrē datus, izmantojot automātiski ģenerētus publisko un privāto atslēgu pārus sakaru kanāla un tīkla savienojuma abos galos. Pēc tam tas autentificē lietotāju, izmantojot paroli. Kad lietotājs manuāli ģenerē publisko un privāto atslēgu pāri, autentifikācija tiek praktiski pabeigta, kad atslēgu pāris ir izveidots, ļaujot sesiju nekavējoties sākt bez paroles uzvednes.
python šķirošanas kortežs
Šajā gadījumā īpašnieks patur atbilstošo privāto atslēgu noslēpumā, un publiskā atslēga tiek instalēta visās iekārtās, kurām ir jāpiešķir īpašniekam piekļuve. Lai gan privātā atslēga kalpo par autentifikācijas pamatu, atslēga nekad netiek nosūtīta pa tīklu, veicot autentifikāciju. SSH apstiprina, ka publiskās atslēgas nodrošinātājam ir arī atbilstošā privātā atslēga.
Nezināmās publiskās atslēgas savienošana ar zināmu privāto atslēgu visās SSH versijās ir ļoti svarīga, pirms tās tiek pieņemtas kā likumīgas publiskās atslēgas ar ID. Pieņemot publisko atslēgu no uzbrucēja bez tās apstiprināšanas, neuzticams uzbrucējs tiks pieņemts kā likumīgs lietotājs.
Radīšana
Tatu Ylönen, datorzinātnieks no Somijas, SSH pirmo reizi izveidoja 1995. gadā. Protokolu komplekta turpmākā attīstība notika daudzās izstrādātāju grupās, izraisot dažādas ieviešanas iterācijas. Ir pieejamas ieviešanas visām populārajām operētājsistēmām, tostarp iegultajām sistēmām. OpenSSH, ko OpenBSD veidotāji padarīja pieejamu kā atvērtā pirmkoda programmatūru 1999. gadā, ir visbiežāk izmantotā programmatūras kaudze.
OpenSSH atslēgu pārvaldība autentifikācijai
Apstiprinātais publisko atslēgu saraksts parasti tiek glabāts Unix līdzīgās sistēmās failā ~/.ssh/authorized keys lietotāja mājas direktorijā, kuram ir attālās pieteikšanās tiesības. SSH respektē šo failu tikai tad, ja to nevar modificēt neviens cits, izņemot īpašnieku un sakni. Parole vairs nav nepieciešama, ja ir gan attālā gala publiskā atslēga, gan vietējā gala atbilstošā privātā atslēga. Taču mēs varam izmantot ieejas frāzi, lai bloķētu privāto atslēgu, lai nodrošinātu daudz lielāku aizsardzību. Mēs varam arī meklēt slepeno kodu izplatītās vietās, un mēs varam izmantot komandrindas opciju, lai nodrošinātu tā pilnīgu ceļu (opcija -i ssh).
SSH turklāt nodrošina automātisku atslēgu ģenerēšanas šifrētu paroles autentifikāciju. Šajā scenārijā uzbrucējs var uzdoties par uzticamo servera pusi, pieprasīt paroli un iegūt to (cilvēka vidū uzbrukums). Servera pusē mēs varam izslēgt paroles autentifikāciju.
Izmantot
SSH izmanto klienta-servera paradigmu. Parasti SSH tiek izmantots reģistrēšanai. Tas var arī tunelēt TCP portus, pārsūtīt X11 savienojumus un izpildīt komandas attālā sistēmā. Parasti savienojumi ar SSH dēmonu, kas ļauj izveidot attālos savienojumus, tiek izveidoti, izmantojot SSH klienta lietojumprogrammu. Abi bieži ir atrodami lielākajā daļā mūsdienu operētājsistēmu, piemēram, macOS, Linux distribūcijās, OpenBSD, FreeBSD, NetBSD, Solaris un OpenVMS. Dažas versijas ir patentētas, bezmaksas un atvērtā koda versijas ar dažādu sarežģītības un visaptverošuma pakāpi (piemēram, PuTTY un OpenSSH versija, kas iekļauta kopā ar Cygwin un OpenSSH). Jāatzīmē, ka SSH pēc noklusējuma nav iekļauts Windows versijās līdz Windows 10 versijai 1709.
Līdzīgu failu pārvaldības (sinhronizācijas, kopēšanas un attālās dzēšanas) funkcionalitāti piedāvā bezmaksas un atvērtā koda Windows lietojumprogramma WinSCP, kas izmanto PuTTY kā aizmuguri. WinSCP un PuTTY nav jāinstalē klienta datorā, lai tie darbotos tieši no USB diska. Lai sistēmā Windows iestatītu SSH serveri, bieži vien ir jāiespējo funkcija iestatījumu lietotnē.
Lai novērstu savienojuma problēmas un novērstu drošības riskus, kas saistīti ar mākoņdatošanas virtuālās mašīnas tiešu pakļaušanu internetam, SSH ir ļoti svarīgs mākoņdatošanā. Drošu savienojumu, izmantojot internetu, var padarīt iespējamu, izmantojot SSH tuneļa virtuālo datoru, izmantojot ugunsmūri. Šim protokolam IANA ir norādījis TCP portu 22, UDP portu 22 un SCTP portu 22.
Jau 2001. gadā IANA klasificēja SSH serveru noklusējuma TCP portu 22 kā vienu no labi zināmajiem portiem. Uz savienojumu orientētu transporta slāņa protokolu SCTP var izmantot, lai palaistu SSH, nevis TCP.
Vēsturiskā progresēšana
1. atkārtojums
Paroles snifing uzbrukums viņa iestādes tīklam iedvesmoja Tatu Ylönen, pētnieks Helsinku Tehnoloģiju universitātē Somijā, izveidoja sākotnējo protokola iterāciju (šobrīd pazīstams kā SSH-1) 1995. gadā.
SSH tika izstrādāts, lai uzņemtos iepriekšējo protokolu lomu, tostarp rlogin, TELNET, FTP un rsh, kuriem trūka robustu autentifikācijas un slepenības garantiju. Ylönen padarīja savu lietojumprogrammu pieejamu kā bezmaksas programmatūru. 1995. gada jūlijā ierīce strauji kļuva populāra. Līdz 1995. gada beigām bija 20 000 SSH lietotāju 50 dažādās valstīs.
java pievienošanas virkne
Lai veicinātu un attīstītu SSH, Ylönen 1995. gada decembrī izveidoja SSH Communications Security. SSH programmas pirmajā laidienā tika izmantoti dažādi bezmaksas programmatūras komponenti, tostarp GNU libgmp, bet vēlāk SSH Communications Security nodrošinātās iterācijas kļuva par arvien patentētāku programmatūru. Saskaņā ar aplēsēm 2000. gadā bija 2 miljoni lietotāju.
2. atkārtojums
Interneta inženierijas darba grupa (IETF) savā oficiālajā dokumentācijā norādījusi darba grupu, kas ir atbildīga par SSH protokola 2. versijas izveidi, kā 'Secsh'.
SSH-2, uzlabota protokola iterācija, kļuva par standartu 2006. gadā. SSH-1 nav saderīgs ar šo versiju. SSH-2 piedāvā funkcionalitātes un drošības jauninājumus, salīdzinot ar SSH-1. Piemēram, Diffie-Hellman atslēgu apmaiņa un spēcīga integritātes pārbaude, izmantojot ziņojumu autentifikācijas kodus, nodrošina augstāku drošību. Iespēja darbināt neierobežotu skaitu čaulas sesiju, izmantojot vienu SSH savienojumu, ir viena no SSH-2 jaunajām iespējām. Tā kā SSH-2 ir uzlabots un plašāk izmantots nekā SSH-1, noteiktas implementācijas, piemēram, libssh (v0.8.0+), Lsh un Dropbear, atbalsta tikai SSH-2.
Iterācija 1.99
RFC 4253 prasīja, lai SSH serveris, kas atbalsta 2.0, kā arī vecākas versijas, 2006. gada janvārī, krietni pēc versijas 2.1 izstrādes, norāda tā protokola versiju 1.99. Šis versijas numurs tiek izmantots, lai norādītu atpakaļejošu saderību, nevis lai attēlotu iepriekšējo programmatūras versiju.
OSSH un OpenSSH
Kopš sākotnējās SSH programmas pēdējās versijas 1.2.12 versijas 1999. gadā tika izplatīta ar atvērtā pirmkoda licenci, izstrādātāji ir strādājuši pie bezmaksas programmatūras versijas. Tas tika izmantots kā Björn Grönvall OSSH programmas pamats. Drīz pēc tam OpenBSD komanda klonēja Grönvall darbu, lai izveidotu OpenSSH, kas tika iekļauts OpenBSD laidienā 2.6. Viņi izveidoja “pārnesamības” atzaru no šīs versijas, lai pārsūtītu OpenSSH uz dažādām operētājsistēmām.
2005. gadā visplašāk izmantotā SSH ieviešana bija OpenSSH — noklusējuma versija daudzos operētājsistēmu izplatījumos. Pēc SSH-1 atbalsta noņemšanas no koda bāzes OpenSSH 7.6 laidienā OpenSSH joprojām tiek atjaunināts un atbalsta SSH-2 protokolu. Tikmēr OSSH vairs nav aktuāls.
Lietojumi
Lietotājs 'josh' 'SSHed' no vietējā datora 'foo fighter' uz attālo mašīnu 'tengwar', lai palaistu xeyes kā piemēru X11 programmas tunelēšanai caur SSH. Cilvēki izmanto Windows SSH klientu PuTTY, lai piekļūtu OpenWrt.
SSH ir protokols, kas darbojas ar daudzām sistēmām, tostarp Microsoft Windows un lielāko daļu Unix variantu (Linux, BSD, tostarp Apple MacOS un Solaris). Tālāk norādītajām programmām var būt nepieciešamas iespējas, kas ir ekskluzīvas vai saderīgas ar konkrētiem SSH klientiem vai serveriem. Piemēram, pašlaik ir iespējams izmantot tikai OpenSSH servera un klienta SSH protokola ieviešanu, lai izveidotu VPN.
- Lai piekļūtu čaulai attālā resursdatorā (aizvietojot Telnet un rlogin)
- Vientuļas komandas izpildei attālā saimniekdatorā (aizvietojot rsh)
- Attālināta servera automātiskās (bez paroles) pieteikšanās konfigurēšanai (piemēram, izmantojot OpenSSH)
- Tā kā VPN ir pilnībā funkcionāls šifrēts, ņemiet vērā, ka šo iespēju atbalsta tikai OpenSSH klients un serveris.
- X pārsūtīšanai no attāla saimniekdatora (iespējams, izmantojot vairākus starpposma saimniekdatorus)
- Lai izmantotu SSH klientus, kas atbalsta SOCKS protokolu, lai pārlūkotu internetu, izmantojot šifrētu starpniekservera savienojumu.
- Lai droši uzstādītu attālā servera direktoriju kā failu sistēmu vietējā datorā, kurā tiek izmantots SSHFS.
- Izmantojot vienu vai vairākas no iepriekš minētajām tehnoloģijām automātiskai attālā servera uzraudzībai un administrēšanai.
- Ar SSH saderīgu mobilo vai iegulto ierīču izstrādei.
- Lai aizsargātu failu pārsūtīšanas mehānismus.
Failu pārsūtīšanas metodes
Vairākās failu pārsūtīšanas sistēmās tiek izmantoti Secure Shell protokoli, piemēram,
- Izmantojot SSH, drošā kopēšana (SCP) tiek izstrādāta no RCP protokola.
- rsync, kas, domājams, ir efektīvāks par SCP, bieži tiek darbināts, izmantojot SSH savienojumu.
- Droša alternatīva FTP ir SSH failu pārsūtīšanas protokols (SFTP) (nejaukt ar FTP, izmantojot SSH vai FTPS).
- FISH jeb faili, kas pārsūtīti, izmantojot čaulas protokolu, tika ieviesti 1998. gadā un izstrādāti no SSH, izmantojot Unix apvalka instrukcijas.
- Aspera, kas pazīstams arī kā ātrs un drošais protokols (FASP), izmanto SSH komandu un datu transportēšanai, UDP portus.
Arhitektūra
Trīs atšķirīgi komponenti veido SSH protokola slāņveida arhitektūru:
32 bitu arhitektūra pret 64 bitu
- TCP/IP pārraides kontroles protokolu (TCP) parasti izmanto transporta slānis (RFC 4253), un porta numurs 22 ir rezervēts kā servera klausīšanās ports. Šis slānis ievieš šifrēšanu, saspiešanu, integritātes pārbaudi, sākotnējo atslēgu apmaiņu un servera autentifikāciju. Lai gan katra ieviešana var atļaut vairāk, tā pakļauj augstākajam slānim interfeisu vienkārša teksta pakešu pārsūtīšanai un saņemšanai līdz 32 768 baitiem katrā. Parasti pēc 1 GB datu pārsūtīšanas vai pēc stundas, atkarībā no tā, kurš notiek pirmais, transporta slānis organizē atslēgu atkārtotu apmaiņu.
- Klientu autentifikācija tiek veikta, izmantojot lietotāja autentifikācijas slāni (RFC 4252), kas piedāvā arī vairākas autentifikācijas metodes. Klienta vadīta autentifikācija nozīmē, ka SSH klients, nevis serveris, var prasīt lietotājam paroli. Tikai klienta autentifikācijas pieprasījumi saņem atbildi no servera. Bieži tiek izmantotas šādas lietotāja autentifikācijas metodes:
Parole , vienkāršs paroles autentifikācijas paņēmiens, kas ietver iespēju modificēt paroli. Ne visās programmās tiek izmantota šī tehnika. - Parasti atbalsta vismaz DSA, ECDSA vai RSA atslēgu pārus publiskā atslēga ir uz publisko atslēgu balstītas autentifikācijas paņēmiens. Citas implementācijas papildus pieņem X.509 sertifikātus.
- SSH sesijām tiek nodrošināta vienreizējās pierakstīšanās funkcionalitāte, izmantojot GSSAPI autentifikācijas metodes, kas piedāvā paplašināmu sistēmu, lai apstrādātu SSH autentifikāciju, izmantojot ārējos mehānismus, piemēram, Kerberos 5 vai NTLM. Lai gan OpenSSH ir funkcionāla GSSAPI ieviešana, komerciālās SSH ieviešanas bieži integrē šīs metodes izmantošanai uzņēmumos.
- Ideju par kanāliem, kas definē piedāvātos SSH pakalpojumus, nosaka savienojuma slānis (RFC 4254). Mēs varam multipleksēt vairākus SSH savienojumus no viena. Abi pārsūta datus abos virzienos. Kanāla pieprasījumi pārsūta ārpusjoslas datus, kas īpaši attiecas uz konkrēto kanālu, piemēram, servera puses procesa izejas kodu vai termināļa loga lieluma izmaiņas. Turklāt, izmantojot saņemšanas loga izmēru, katrs kanāls kontrolē savu plūsmu. SSH klients veic globālu pieprasījumu pārsūtīt servera puses portu. Bieži sastopamie kanālu veidi ir šādi:
- SFTP, exec un termināļa apvalku apvalks (tostarp SCP pārsūtījumi)
- Direct-TCPIP pārsūtītiem savienojumiem no klienta uz serveri.
- Serveris-klients pāradresēja savienojumus, izmantojot forwarded-tcpip
- Lai apstiprinātu resursdatora leģitimitāti, SSHFP DNS ieraksts (RFC 4255) piedāvā publiskās resursdatora atslēgas pirkstu nospiedumus.
Pateicoties tā atvērtajam dizainam, mēs varam izmantot SSH ne tikai čaulu nostiprināšanai, bet arī plašam uzdevumu klāstam, nodrošinot tam lielu daudzpusību.
Ievainojamības
SSH-1
Nepietiekamas datu integritātes aizsardzības dēļ, ko šajā protokola versijā nodrošina CRC-32, 1998. gadā tika konstatēta SSH 1.5 ievainojamība, kas ļāva nesankcionēti ievietot materiālu šifrētā SSH straumē. Lielākajā daļā ieviešanu viņi pievienoja ielāpu, kas pazīstams kā SSH kompensācijas uzbrukuma detektors. Vairākas no šīm pārskatītajām implementācijām ietvēra jaunu veselu skaitļu pārpildes trūkumu, kas ļāva uzbrucējiem palaist patvaļīgu kodu ar root vai SSH dēmona iespējām.
Trūkums, kas ļauj uzbrucējiem mainīt IDEA šifrētas sesijas pēdējo bloku, tika atklāts 2001. gada janvārī. Tajā pašā mēnesī tika atklāts vēl viens trūkums, kas ļāva negodīgam serverim nodot klienta pieteikšanos citam serverim.
Tā raksturīgo ievainojamību dēļ SSH-1 parasti tiek uzskatīts par novecojušu, un no tā ir jāizvairās, skaidri noņemot SSH-1 atkāpšanos. Lielākā daļa pašreizējo serveru un klientu atbalsta SSH-2.
Vienkāršā teksta atkopšana CBC
2008. gada novembrī visās SSH versijās tika atklāta teorētiska ievainojamība, kas ļāva izgūt līdz 32 bitiem vienkārša teksta no šifrēta teksta bloka, kas šifrēts, izmantojot tā laika standarta šifrēšanas metodi CBC. Vienkāršākais labojums ir pārslēgties uz VKS, skaitītājs. režīmā, nevis CBC režīmā, kas padara SSH imūnu pret uzbrukumu.
NSA tiek turēts aizdomās par atšifrēšanu
Tas, ka Edvards Snoudens 2014. gada 28. decembrī publicēja sensitīvus dokumentus Der Spiegel, nozīmē, ka Nacionālā drošības aģentūra, iespējams, varēs atšifrēt noteiktus SSH sakarus.