Шта је ССХ и како функционише?

SSH, ili Secure Shell, je mrežni protokol dizajniran za omogućavanje sigurnog pristupa udaljenim računarima unutar mreže.

Računari međusobno komuniciraju putem mreža, što je dovelo do toga da su mrežni stručnjaci razvili skup pravila za tu komunikaciju. Tako su nastali protokoli poput Telnet-a, koji je omogućavao korisnicima da preuzmu kontrolu nad udaljenim računarom.

Međutim, ti protokoli nisu bili bezbedni. Svi podaci koji su se prenosili mrežom mogli su biti presretnuti i pročitani. Sredinom devedesetih godina, uveden je sigurniji protokol nazvan SSH, koji je predstavljao pouzdanu zamenu za Telnet.

Ako ste programer ili sistemski administrator, verovatno ste se već susreli sa SSH-om. Ako niste, sada je pravo vreme da ga upoznate, jer je to jedna od ključnih veština koju treba da posedujete.

Šta je SSH?

SSH, ili Secure Shell, je mrežni protokol koji omogućava bezbedan pristup i komunikaciju sa udaljenim mašinama, najčešće udaljenim serverima.

On koristi naprednu enkripciju i široko je rasprostranjen među mrežnim administratorima i programerima za upravljanje udaljenim sistemima i aplikacijama, izvršavanje komandi, deljenje datoteka i druge operacije.

Zašto je SSH potreban?

SSH je razvijen 1995. godine kao odgovor na sigurnosne nedostatke nesigurnih protokola za daljinski pristup, kao što su rlogin, rsh i Telnet.

Telnet, skraćenica za Teletype Network, je razvijen 1969. godine i predstavlja jednostavan alat komandne linije koji se koristi za pristup udaljenim serverima. Korisnik može slati komande koje se izvršavaju na tom serveru, kao da se nalazi direktno ispred njega. Telnet, međutim, prenosi poruke u običnom tekstu, bez enkripcije.

Komande koje možete izvršavati uključuju pokretanje programa, kreiranje direktorijuma, kreiranje, brisanje i prenos datoteka, kao i pokretanje i zaustavljanje usluga.

Problem sa povezivanjem na udaljene računare je taj što podaci koji se prenose prolaze kroz veliki broj mreža. U tom procesu, podaci mogu biti presretnuti, modifikovani ili pročitani pre nego što stignu do odredišta.

U ranim danima interneta, bezbednost nije bila prioritet, pa se sva komunikacija odvijala u običnom tekstu. Zbog toga su podaci koji su se prenosili između klijenata i servera bili lako presretljivi i čitljivi, jer nisu bili šifrovani.

Protokoli koji koriste običan tekst su izuzetno nesigurni i ne bi trebalo ih koristiti za prenos osetljivih podataka kao što su lozinke i tajne. Zato je SSH razvijen kao bezbedna alternativa zastarelim protokolima za daljinski pristup.

Kako SSH funkcioniše?

SSH koristi klijent-server arhitekturu za uspostavljanje sigurne komunikacije preko mreže, povezivanjem SSH klijenta sa SSH serverom. Po default-u, SSH server sluša na standardnom TCP portu 22, ali taj port se može promeniti radi povećanja bezbednosti.

Za autentifikaciju između klijenta i servera koristi se kriptografija sa javnim ključem. Osim toga, protokol koristi jake algoritme za simetričnu enkripciju i heširanje za razmenu poruka, čime se osigurava privatnost i integritet podataka.

Linux operativni sistem se široko koristi na udaljenim serverima zbog svoje sigurnosti i stabilnosti. Mnogi serveri koji koriste Linux rade godinama bez većih problema ili potrebe za ponovnim pokretanjem.

Većina SSH sesija, odnosno perioda kada pristupamo udaljenom serveru, obuhvata sledeće dve operacije:

  • Autentifikacija
  • Izvršavanje komandi

SSH serveri mogu da autentifikuju klijente koristeći različite metode.

Dva najčešća načina su:

Autentifikacija na osnovu lozinke je podrazumevani metod koji se koristi za autentifikaciju kod OpenSSH klijenata. Iako je ovo najosnovniji metod, nije najbezbedniji.

Iako se lozinke šalju bezbedno ka serveru, moderni napadi brutalnom silom mogu da zaobiđu ovu autentifikaciju.

Autentifikacija na osnovu ključa dodatno poboljšava bezbednost sistema generisanjem SSH parova ključeva, koji su se pokazali kao pouzdana i bezbedna alternativa.

Nakon uspešne autentifikacije klijenta od strane servera, uspostavlja se sigurna veza.

Pristup udaljenom serveru pomoću SSH-a

Ako koristite Mac ili Linux operativni sistem, možete direktno koristiti terminal za unos i izvršavanje SSH komandi, jer je OpenSSH već instaliran po default-u.

Ako koristite Windows, potrebno je da instalirate klijent emulator terminala treće strane da biste izvršavali SSH komande. PuTTY je najpopularniji SSH klijent za Windows.

Da biste se povezali na udaljeni server pomoću SSH-a, potrebno je da znate najmanje dve stvari.

Sintaksa za osnovnu SSH komandu je:

$ ssh <korisničko-ime> @ <host> -p <broj-porta>

Korisničko ime predstavlja korisničko ime na udaljenom računaru na koji pokušavamo da se povežemo, dok je host ili IP adresa ili ime domena.

Pogledajmo primer povezivanja sa udaljenim serverom pomoću OverTheWire web stranice. Ova stranica nudi besplatne izazove za učenje o sajber bezbednosti.

Povežimo se sa bandit izazovom koristeći SSH. To je jedan od izazova koji vas uče kako da se prijavite koristeći SSH.

Kredencijali:

Korisničko ime i lozinka: bandit0
Host i port: bandit.labs.overthewire.org, 2220

Kada unesete sledeću komandu i pritisnete enter:

$ ssh [email protected] -p 2220

Biće vam zatražena lozinka za autentifikaciju. Sada unesite lozinku i pritisnite enter:

Ako je lozinka ispravna, uspešno ste se prijavili na udaljeni server i vaš terminal će izgledati kao na slici iznad.

Sada možete koristiti terminal udaljenog računara da unosite i izvršavate komande, kao i da vršite sve potrebne operacije.

Kada želite da završite SSH sesiju, otkucajte komandu za izlaz:

$ exit

Dobićete poruku „Veza je zatvorena“ kada se uspešno odjavite sa SSH sesije.

Zaključak

Glavni razlog popularnosti SSH-a je to što je cela komunikacija između servera i klijenta šifrovana.

Mnogi ljudi pretpostavljaju da je korišćenje SSH-a komplikovano i da je teško razumeti kako funkcioniše, ali to je jednostavnije nego što se čini. Sada imate osnovno razumevanje SSH-a, načina na koji on funkcioniše, sigurnosnih aspekata i njegove ključne uloge u komunikaciji.

Zatim, istražite dodatne resurse da biste postali sistemski administrator.