Uporaba kriptografije v internetu
Kazalo   
 

SSH (Secure Shell)

Administratorji smo za dostop do strežnikov s svojih delovnih postaj uporabljali protokole telnet, rlogin ali rsh, za nalaganje datotek pa ftp. Tu promet poteka nezašifrirano, torej je možno na vmesnih usmerjevalnikih prestreči gesla in druge podatke. Dokler je to potekalo v majhnih lokalnih omrežjih, ni bilo problematično. Da pa to za internetno okolje ni primerno, je postalo jasno že zelo zgodaj - Tatu Ylönen je že julija 1995 objavil prvo verzijo SSH, novembra istega leta pa internet-draft z naslovom "The SSH (Secure Shell) Remote Login Protocol". V nekem intervjuju je povedal, da ga je k temu spodbudil vdor hekerja v univerzitetno omrežje, ko si je le-ta nabral več tisoč uporabniških imen in pripadajočih gesel. Njegov sofver je bil na začetku na voljo zastonj, kmalu pa je ustanovil firmo, ki ga je začela tržiti, ker je bil preobremenjen z vprašanji o SSH. Skupina programerjev je na osnovi zadnje neplačljive verzije dodala podporo za SSH v OpenBSD leta 1999 in od takrat naprej ga razvijajo kot produkt OpenSSH, ki uporablja kriptografsko knjižnico OpenSSL. SSH je do danes skoraj v celoti izpodrinil telnet, rlogin, rsh in ftp. Glede na to, da je OpenSSH zastonj, danes njegova uporaba prevladuje.

Obstajata dve verziji protokola, ki med seboj nista kompatibilni: SSH1 in SSH2. Uporabljata različne kriptografske algoritme in šifrirata različne dele paketov. SSH2 popravlja napake v zasnovi SSH1, zato je varnejši. IETF je leta 2006 zaključila z delom za skupino standardov za SSH2. OpenSSH podpira obe verziji.

Sestavljata ga strežniški del (daemon) sshd in odjemalec ssh, ki se medsebojno overita in dogovorita za šifriran prenos podatkov. Daemon se običajno zažene od startu strežnika in posluša na vratih 22, lahko pa to spremenimo v konfiguracijski datoteki sshd_config.

Način overjanja se določi v konfiguracijski datoteki - najvarneje je izbrati overjanje s ključi RSA (RSAAuthentication yes) in obenem onemogočiti vse druge možnosti. V tem primeru strežnik in uporabnik ne potrebujeta digitalnih potrdil kot pri SSL, pač pa je treba na začetku skopirati javne ključe sogovornikov v posebne datoteke: na strežnik skopiramo javni ključ uporabnika, ki se bo nanj priključeval, uporabnik pa hrani javni ključ strežnika, da je ob priključitvi opozorjen, če se je ta spremenil. Po instalaciji OpenSSH najprej generiramo pare ključev za strežnik in odjemalce oziroma uporabnike z orodjem ssh-keygen.Lahko izberemo kreiranje ključa RSA (uporabljata obe verziji SSH) ali pa ključa DSA (za SSH2).

Primer: generiramo 1024-bitni ključ RSA za streznik1 in sicer naj se zapiše na datoteko ssh_host_key.
ssh-keygen -t rsa -b 1024 -C streznik1 -f ssh_host_key
Dobimo dve datoteki: v ssh_host_key je shranjen zasebni ključ strežnika, v ssh_host_key.pub pa javni ključ.

Podobno tvorimo ključ RSA za odjemalca:
ssh-keygen -t rsa -b 1024 -C admin1 -f $HOME/.ssh/identity
in na domači direktorij uporabnika admin1 dobimo datoteki identity (zasebni ključ) in identity.pub (javni ključ). V postopku kreiranja smo vnesli geslo, s katerim je zaščiten zasebni ključ odjemalca z imenom admin1. Zdaj javni ključ uporabnika admin1 (torej datoteko identity.pub) skopiramo na vse tiste računalnike, kamor naj bi se admin1 priključeval in sicer na datoteko $HOME/.ssh/authorized_keys. Tako imamo naslednje stanje:

Uporabnik admin1 bo začel postopek priključitve na streznik1 z ukazom:
ssh -l admin1 streznik1
Od strežnika bo dobil javni ključ in bo preveril, da je isti, kot ga ima shranjenega v datoteki known_hosts. Če se je ključ spremenil, bo uporabnik dobil obvestilo. Naslednji korak je dogovor o simetričnem algoritmu in ključu, ki ga bosta uporabljala v nadaljevanju, da bo povezava zašifrirana. Na koncu pa še strežnik preveri klienta po postopku, ki je določen v konfiguracijski datoteki. V zgornjem primeru bo strežnik dovolil priključitev klientu samo, če ima njegov javni ključ shranjen v datoteki authorized_keys. Uporabnik bo vnesel geslo za svoj zasebni ključ.

Za kopiranje datotek pa uporabimo ukaz scp.

Kot odjemalca na Windowsih najpogosteje uporabljamo programček Putty. V tem primeru je najlaže na strežniku tvoriti par ključev za odjemalca ter datoteko z zasebnim ključem skopirati na PC, v konfiguraciji za Putty pa povemo njeno lokacijo in ime.

Več o uporabi SSH bomo zvedeli na straneh OpenSSH in v prosojnicah Briana Hatcha.


December 2004, ažurirano januarja 2007