SSH: Sigurna ljuska
SSH je skraćenica za Secure Shell. Također je poznat kao Secure Socket Shell. Kriptografski mrežni protokol nazvan Secure Shell (SSH) koristi se za sigurno upravljanje mrežnim uslugama na nesigurnim mrežama. Arhitektura klijentskog poslužitelja temelj je SSH aplikacija koje povezuju instancu SSH klijenta sa SSH poslužiteljem.
Kao nasljednik Telneta i nesigurnih udaljenih Unix shell protokola kao što je Berkeley Remote Shell (rsh) i njemu pridruženih rlogin i rexec protokola, SSH je stvoren za Unix-like operativne sustave koji koriste nesigurnu komunikaciju autentifikacijskim tokenom otvorenog teksta.
Definicija
SSH možemo primijeniti na nekoliko različitih načina. Najjednostavnija implementacija šifrira podatke pomoću automatski generiranih javno-privatnih parova ključeva na oba kraja komunikacijskog kanala i mrežne veze. Nakon toga autentificira korisnika pomoću lozinke. Kada korisnik ručno generira javno-privatni par ključeva, provjera autentičnosti je gotovo dovršena kada se uspostavi par ključeva, što omogućuje trenutno pokretanje sesije bez traženja lozinke.
sql poredak po datumu
U tom slučaju, vlasnik čuva odgovarajući privatni ključ u tajnosti, a javni ključ je instaliran na svim računalima koja moraju odobriti pristup vlasniku. Iako privatni ključ služi kao temelj za autentifikaciju, ključ se nikada ne šalje preko mreže prilikom izvođenja autentifikacije. SSH potvrđuje da pružatelj javnog ključa također posjeduje odgovarajući privatni ključ.
Povezivanje nepoznatog javnog ključa s poznatim privatnim ključem u svim verzijama SSH-a ključno je prije prihvaćanja kao legitimnih javnih ključeva s ID-ovima. Prihvaćanje javnog ključa od napadača bez provjere valjanosti prihvatit će nepouzdanog napadača kao legitimnog korisnika.
Stvaranje
Tatu Ylönen, računalni znanstvenik iz Finske, kreirao je SSH po prvi put 1995. Daljnji razvoj paketa protokola odvijao se u mnogim grupama programera, što je dovelo do raznih ponavljanja implementacije. Dostupne su implementacije za sve popularne operativne sustave, uključujući ugrađene sustave. OpenSSH, koji su kreatori OpenBSD-a učinili dostupnim kao softver otvorenog koda 1999. godine, najčešće je korišten softverski skup.
Upravljanje OpenSSH ključevima za autentifikaciju
Odobreni popis javnih ključeva obično se čuva na sustavima sličnim Unixu u datoteci ~/.ssh/authorized keys u korisničkom početnom direktoriju, koji ima privilegije za daljinsku prijavu. SSH poštuje ovu datoteku samo ako je ne može mijenjati nitko osim vlasnika i roota. Lozinka više nije potrebna kada su prisutni i javni ključ udaljenog kraja i odgovarajući privatni ključ lokalnog kraja. Ali možemo upotrijebiti zaporku za zaključavanje privatnog ključa radi mnogo veće zaštite. Također možemo pretraživati tajni kod na uobičajenim lokacijama, a možemo upotrijebiti opciju naredbenog retka da pružimo njegovu potpunu putanju (opcija -i za ssh).
SSH nadalje pruža automatiziranu autentifikaciju temeljenu na lozinci šifriranu generiranjem ključa. Napadač u ovom scenariju može lažno predstavljati pouzdanu stranu poslužitelja, zatražiti lozinku i dobiti je (napad čovjeka u sredini). Na strani poslužitelja možemo isključiti autentifikaciju lozinke.
Koristiti
SSH koristi paradigmu klijent-poslužitelj. Obično se SSH koristi za zapisivanje. Također može tunelirati TCP portove, prosljeđivati X11 veze i izvršavati naredbe na udaljenom sustavu. Obično se veze sa SSH demonom koji dopuštaju udaljene veze ostvaruju pomoću SSH klijentske aplikacije. Oba se često nalaze na većini suvremenih operativnih sustava, kao što su macOS, Linux distribucije, OpenBSD, FreeBSD, NetBSD, Solaris i OpenVMS. Neke su verzije vlasničke, besplatne i otvorenog koda s različitim stupnjevima složenosti i sveobuhvatnosti (kao što su PuTTY i verzija OpenSSH uključena u Cygwin i OpenSSH). Naime, SSH nije uključen prema zadanim postavkama u verzijama sustava Windows sve do verzije 1709 sustava Windows 10.
Sličnu funkciju upravljanja datotekama (sinkronizacija, kopiranje i daljinsko brisanje) nudi besplatna Windows aplikacija otvorenog koda WinSCP, koja koristi PuTTY kao pozadinu. Bez potrebe za instalacijom na klijentsko računalo, WinSCP i PuTTY dostupni su upakirani za rad izravno s USB pogona. Omogućavanje značajke u aplikaciji postavki često je potrebno za postavljanje SSH poslužitelja u sustavu Windows.
Za rješavanje problema vezanih uz povezivanje i sprječavanje sigurnosnih rizika izravnog izlaganja virtualnog računala temeljenog na oblaku internetu, SSH je ključan u računalstvu u oblaku. Sigurna veza preko interneta može se omogućiti kroz SSH tunel virtualnog računala preko vatrozida. Za ovaj protokol, IANA je odredila TCP port 22, UDP port 22 i SCTP port 22.
Još 2001. IANA je zadani TCP port 22 za SSH poslužitelje klasificirala kao jedan od dobro poznatih portova. Protokol prijenosnog sloja SCTP orijentiran na vezu može se koristiti za pokretanje SSH umjesto TCP-a.
Povijesni napredak
Iteracija 1
Napad njuškanjem lozinke na mrežu njegove institucije inspirirao je Tatua Ylönena, istraživača na Sveučilištu za tehnologiju u Helsinkiju u Finskoj, koji je 1995. stvorio početnu iteraciju protokola (danas poznatog kao SSH-1).
SSH je dizajniran da preuzme ulogu prethodnih protokola, uključujući rlogin, TELNET, FTP i rsh, kojima je nedostajala robusna autentifikacija i jamstva tajnosti. Ylönen je svoju aplikaciju učinio besplatnom. U srpnju 1995. uređaj je brzo postao popularan. Do kraja 1995. bilo je 20.000 SSH korisnika u 50 različitih zemalja.
što je awt
Kako bi promovirao i unaprijedio SSH, Ylönen je uspostavio SSH Communications Security u prosincu 1995. Različite komponente besplatnog softvera, uključujući GNU libgmp, korištene su u prvom izdanju SSH programa, ali kasnije iteracije koje je omogućio SSH Communications Security prerasle su u sve više vlasnički softver. Prema procjenama do 2000. godine bilo je 2 milijuna korisnika.
Ponavljanje 2
Internet Engineering Task Force (IETF) označio je radnu skupinu zaduženu za izradu SSH protokola verzije 2 kao 'Secsh' u svojoj službenoj dokumentaciji.
SSH-2, poboljšana iteracija protokola, postao je standard 2006. SSH-1 nije kompatibilan s ovom verzijom. SSH-2 nudi funkcionalnost i sigurnosne nadogradnje u odnosu na SSH-1. Na primjer, Diffie-Hellman razmjena ključeva i robusna provjera integriteta putem kodova za autentifikaciju poruka pružaju veću sigurnost. Sposobnost rada s neograničenim brojem sesija ljuske preko jedne SSH veze jedna je od novih mogućnosti SSH-2. Budući da je SSH-2 napredniji i široko korišten od SSH-1, određene implementacije, poput libssh (v0.8.0+), Lsh i Dropbear, podržavaju samo SSH-2.
Ponavljanje 1.99
RFC 4253 zahtijevao je da SSH poslužitelj koji podržava 2.0, kao i ranije verzije, mora naznačiti svoju verziju protokola kao 1.99 u siječnju 2006., znatno nakon što je razvijena verzija 2.1. Ovaj broj verzije koristi se za označavanje kompatibilnosti sa starijim verzijama, a ne za predstavljanje prethodne revizije softvera.
OSSH i OpenSSH
Otkako je posljednja verzija izvornog SSH programa, verzija 1.2.12, distribuirana pod licencom otvorenog koda 1999. godine, programeri su radili na verziji besplatnog softvera. Ovo je korišteno kao temelj za OSSH program Björna Grönvalla. Ubrzo nakon toga, OpenBSD tim klonirao je Grönvallov rad za proizvodnju OpenSSH, koji je bio uključen u OpenBSD Release 2.6. Stvorili su granu 'prenosivosti' iz ove verzije za prijenos OpenSSH-a na različite operativne sustave.
Najčešće korištena SSH implementacija od 2005. bila je OpenSSH, zadana verzija u mnogim distribucijama operativnih sustava. Nakon uklanjanja podrške za SSH-1 iz baze koda u izdanju OpenSSH 7.6, OpenSSH se još uvijek ažurira i podržava protokol SSH-2. U međuvremenu, OSSH više nije relevantan.
Koristi
Korisnik 'josh' 'SSHed' je s lokalnog računala 'foo fighter' na udaljeni stroj 'tengwar' kako bi pokrenuo xeyes kao primjer tuneliranja X11 programa kroz SSH. Ljudi koriste Windows SSH klijent PuTTY za pristup OpenWrtu.
SSH je protokol koji radi s mnogim sustavima, uključujući Microsoft Windows i većinu Unix varijacija (Linux, BSD-ovi, uključujući Appleov macOS i Solaris). Sljedeće aplikacije mogu trebati mogućnosti koje su ekskluzivne ili kompatibilne s određenim SSH klijentima ili poslužiteljima. Na primjer, trenutno je jedino moguće koristiti OpenSSH poslužiteljsku i klijentsku implementaciju SSH protokola za izgradnju VPN-a.
- Za pristup ljusci na udaljenom hostu (zamjena za Telnet i rlogin)
- Za izvršavanje samotne naredbe na udaljenom hostu (zamjena za rsh)
- Za konfiguriranje automatizirane prijave (bez lozinke) udaljenog poslužitelja (na primjer, korištenjem OpenSSH)
- Kao potpuno funkcionalan šifrirani VPN, imajte na umu da samo OpenSSH klijent i poslužitelj podržavaju ovu mogućnost.
- Za prijenos X-a s udaljenog računala (moguće preko više posrednih računala)
- Za korištenje SSH klijenata koji podržavaju SOCKS protokol za pregledavanje interneta preko šifrirane proxy veze.
- Za sigurno montiranje direktorija udaljenog poslužitelja kao datotečnog sustava na lokalnom računalu koristeći SSHFS.
- Putem jedne ili više gore navedenih tehnologija za automatsko nadgledanje i administraciju daljinskog poslužitelja.
- Za razvoj mobilnih ili ugrađenih uređaja kompatibilnih sa SSH.
- Za zaštitu mehanizama za prijenos datoteka.
Metode prijenosa datoteka
Nekoliko sustava za prijenos datoteka koristi protokole Secure Shell kao što su
- Preko SSH-a, Sigurna kopija (SCP) razvijena je iz RCP protokola.
- rsync koji bi trebao biti učinkovitiji od SCP-a često se upravlja putem SSH veze.
- Alternativa FTP-u koja je sigurna je SSH File Transfer Protocol (SFTP) (ne brkati s FTP preko SSH ili FTPS)
- FISH, ili datoteke koje se prenose preko protokola ljuske, uveden je 1998. i razvijen iz SSH preko Unix uputa ljuske.
- Aspera, također poznata kao brzi i sigurni protokol (FASP), koristi SSH za naredbe i prijenos podataka, UDP portove.
Arhitektura
Tri različite komponente čine slojevitu arhitekturu SSH protokola:
postavlja u Javi
- Protokol za kontrolu prijenosa (TCP) TCP/IP-a obično se koristi u transportnom sloju (RFC 4253), s brojem priključka 22 koji je izdvojen kao port za slušanje poslužitelja. Ovaj sloj implementira enkripciju, kompresiju, provjeru integriteta, početnu razmjenu ključeva i autentifikaciju poslužitelja. Iako svaka implementacija može omogućiti više, ona izlaže višem sloju sučelje za prijenos i primanje paketa otvorenog teksta do 32.768 bajtova svaki. Obično, nakon što se prenese 1 GB podataka ili nakon što prođe sat vremena, što god nastupi prije, prijenosni sloj organizira ponovnu razmjenu ključeva.
- Provjerom autentičnosti klijenta upravlja se putem sloja provjere autentičnosti korisnika (RFC 4252), koji također nudi nekoliko tehnika provjere autentičnosti. Autentikacija vođena klijentom znači da SSH klijent, a ne poslužitelj, može tražiti od korisnika lozinku. Samo klijentovi zahtjevi za autentifikaciju dobivaju odgovor od poslužitelja. Često se koriste sljedeće tehnike autentifikacije korisnika:
Lozinka , jednostavna tehnika provjere autentičnosti lozinke koja uključuje mogućnost izmjene lozinke. Ne koristi sav softver ovu tehniku. - Obično podržava najmanje DSA, ECDSA ili RSA parove ključeva, javni ključ je tehnika za autentifikaciju temeljenu na javnom ključu. Druge implementacije dodatno prihvaćaju X.509 certifikate.
- Funkcionalnost jedinstvene prijave za SSH sesije dostupna je putem GSSAPI tehnike autentifikacije, koje nude proširivi sustav za rukovanje SSH autentifikacijom pomoću vanjskih mehanizama kao što su Kerberos 5 ili NTLM. Iako OpenSSH ima funkcionalnu GSSAPI implementaciju, komercijalne SSH implementacije često integriraju ove tehnike za korištenje u tvrtkama.
- Ideja kanala koji definiraju ponuđene SSH usluge definirana je slojem veze (RFC 4254). Možemo multipleksirati više SSH veza iz jedne. Oba prenose podatke u oba smjera. Zahtjevi za kanal prenose podatke izvan pojasa koji se odnose na određeni kanal, kao što je izlazni kod procesa na strani poslužitelja ili promjena veličine prozora terminala. Osim toga, korištenjem veličine prozora primanja, svaki kanal kontrolira svoj protok. SSH klijent šalje globalni zahtjev za prosljeđivanje porta na strani poslužitelja. Uobičajene vrste kanala uključuju:
- Ljuska za SFTP, exec i terminalske ljuske (uključujući SCP prijenose)
- Direct-TCPIP za proslijeđene veze od klijenta do poslužitelja.
- Poslužitelj-klijent proslijeđene veze koristeći forwarded-tcpip
- Kako bi se potvrdila legitimnost hosta, SSHFP DNS zapis (RFC 4255) nudi otiske prstiju ključa javnog hosta.
Zbog njegovog otvorenog dizajna, možemo koristiti SSH za širok raspon zadataka uz osiguranje školjki, što mu daje veliku svestranost.
Ranjivosti
SSH-1
Zbog neadekvatne zaštite integriteta podataka koju pruža CRC-32 u ovoj verziji protokola, 1998. godine identificirana je ranjivost u SSH 1.5 koja je dopuštala neovlašteno umetanje materijala u šifrirani SSH tok. U većini implementacija dodali su zakrpu poznatu kao SSH Compensation Attack Detector. Nekoliko od ovih revidiranih implementacija uključivalo je novu grešku prekoračenja cijelog broja, omogućujući napadačima pokretanje proizvoljnog koda s root-om ili mogućnostima SSH demona.
Greška koja napadačima omogućuje promjenu zadnjeg bloka IDEA šifrirane sesije pronađena je u siječnju 2001. Još jedna greška koja je omogućila lažnom poslužitelju da proslijedi prijavu klijenta drugom poslužitelju pronađena je istog mjeseca.
Zbog svojih inherentnih ranjivosti, SSH-1 se općenito smatra zastarjelim i treba ga izbjegavati eksplicitnim uklanjanjem zamjene SSH-1. Većina trenutnih poslužitelja i klijenata podržava SSH-2.
Oporavak čistog teksta za CBC
Teorijska ranjivost koja je dopuštala dohvaćanje do 32 bita otvorenog teksta iz bloka šifriranog teksta šifriranog standardnom metodom šifriranja tog vremena, CBC, otkrivena je u svim verzijama SSH-a u studenom 2008. Najjednostavnije rješenje je prebacivanje na CTR, brojač umjesto CBC načina, koji SSH čini imunim na napad.
NSA osumnjičena za dešifriranje
Objava osjetljivih dokumenata Edwarda Snowdena za Der Spiegel 28. prosinca 2014. implicira da će Agencija za nacionalnu sigurnost moći potencijalno dekodirati određene SSH komunikacije.