Professional Documents
Culture Documents
v2.00
SecLab
04
SSH server i upotreba javnog i tajnog kljua
Cilj vebe
Cilj ove vebe je upoznavanje sa SSH protokolom u u Linux okruenju uz upotrebu javnog i tajnog
kljua. Za ovu vebu e se koristiti Virtuelna laboratorija VNLab.
Kao alternativa se moe koristi Oracle VirtualBox softer za virtuelizaciju koji je instaliran na svakoj
radnos stanici i dve virtualne maine sa Linux CentOS 6.2 operativnim sistemom i instaliranim ssh
serverom (na svakoj virtualnoj maini su instalirani paketi: openssh-server-5.3p1-
70.el6.i686.rpm, openssh-clients-5.3p1-70.el6.i686.rpm, openssh-5.3p1-
70.el6.i686 i libssh2-1.2.2-7.el6_1.1. i686.rpm).
SSH protokol
Secure Shell protokol (SSH) je mreni protokol koji korisnicima omoguuje uspostavljanje sigurnog
komunikacionog kanala izmeu dva raunara putem nesigurne raunarske mree. SSH mreni
servis prua mnogo veu sigurnost nego tradicionalni mreni servisi (telnet, ftp, rsh i drugi), budui
da se u vreme njihovog nastanka nije previe panje obraalo na sigurnost raunarskih sistema.
Postoje dve nekompatibilne verzije protokola, SSH-1 i SSH-2. Prva verzija protokola ima dosta
nedostataka, pa se skoro vie i ne koristi.
SSH-1 nastao 1995. godine a razvio ga je finac Tatu Ylnen, koji je tada bio istraiva na
tehnolokom univerzitetu u Helsinkiju (University of Technology, Helsinki).
Prva verzija SSH protokola imala dosta sigurnosnih problema, a sve ih se vie otkrivalo kako je
program bivao sve popularniji. Zbog toga kompanija koju je osnovao Ylnen SSH Communications
Security Ltd. 1996. godine predstavlja novu verziju protokola koja je nekompatibilna sa starom jer
uvodi nove algoritme. Ta nova verzija protokola nosi oznaku SSH 2.0.
SSH je postao IETF (Internet Engineering Task Force) standard 2006. a glavni delovi njegove
arhitekture opisani su u sledeim RFC (eng. Request For Comments) dokumentima:
Iako danas sve vie prevladava upotreba SSH-2 protokola, zbog postojanja programa koji ne
podravaju novu verziju tog protokola ponekad nije mogue izbei SSH-1 protokol.
Sigurnost SSH protokola temelji se na upotrebi kriptografskih metoda koje omoguuju zatitu
podataka koji se kreu kroz nesigurnu mreu. Osim toga, spomenute metode mogu se iskoristiti za
proveru identiteta korisnika koji uestvuju u komunikaciji i za zatitu podataka od neovlaenih
izmena, odnosno ouvanje njihovog integriteta.
AES
DES
3DES
Blowfish
Svi navedeni algoritmi dostupni su za korienje u razliitim SSH verzijama. Ovakav nain
enkripcije moe se smatrati dovoljno sigurnim od tzv. brute force napada. Pritom je preporuljivo
odabrati to dui tajni klju jer se tako smanjuje verovatnoa da e ga napada pogoditi. Osim toga,
simetrina enkripcija je zbog svoje brzine pogodna za zatitu veih koliina podataka.
Za razliku od simetrine enkripcije, asimetrini kriptografski algoritmi koriste dva kljua, jedan je
javni i moe biti poznat svim korisnicima, a drugi je privatni i moe poznat samo ovlaenim
korisnicima. Bilo kakav sadraj kriptovan javnim kljuem mogue je dekriptovati jedino tajnim
kljuem, a sadraj kriptovan tajnim kljuem mogue je dekriptovati jedino odgovarajuim javnim
kljuem.
Za razliku od simetrine enkripcije, asimetrina je sloenija i traje bitno due pa je nije preporueno
koristiti za kriptovanje veih koliina podataka. Simetrini tajni kljuevi imaju duine od sto do
dvesto bitova, dok asimetrini imaju preko hiljadu i dve hiljade bitova, to utie i na sloenost
ifrovanja. Ovi se algoritmi zato koriste samo za razmenu tajnog kljua na poetku komunikacije.
Naime, kriptovanje vrednosti tajnog kljua javnim kljuem korisnika osigurava da niko osim
ciljanog korisnika nee biti u stanju otkriti vrednost tog kljua. S druge strane javni klju korisnika
moe saznati bilo ko to znai da korisnik koji je primio kriptovane podatke u ovom sluaju ne
moe znati od koga ih je primio. Autentinost poiljaoca i primaoca moe se osigurati korienjem
funkcija za saimanje (eng. hash) i digitalnim potpisima. Najee korieni asimetrini algoritmi,
podrani i u SSH protokolu, su:
SSH u radu koristi obe vrste algoritama. Pomou odabranog simetrinog algoritma obavlja se
enkripcija poruka. Asimetrini algoritam koristi se za razmenu tajnog kljua izmeu SSH klijenta i
SSH servera. Dodatno, korisnici mogu koristiti svoj javni klju za autentifikaciju.
Logovanje na ruter
Logovanje na ruter koji je potrebno konfigurisati se vri programom vmrc.exe koji se nalazi na
studentskom disku (Z disk - folder KRM).
SecLab 04
v2.00
Na ovakve i sline dialog prozore, ukoliko se otvore, odgovoriti sa OK. Me se ekirati box Dont
ask me again ukoliko ne elite da se da se ti prozori ponovo otvore pri sledeem pokuaju pristupa.
username: vnlabuser
password: NoviPass12345
Kada se pojavi terminal rutera potrebno je prijaviti se na sistem. Prijava na sistem vri se tako to
se na mestu predvienom za upis korisnikog imena (npr. RT login: ) upisuje korisniko ime root
(administratorski nalog na Unix/Linux sistemima ) i pritiska taster [ Enter ]. Zatim se na mestu
predvienom za upis lozinke (Password: ) unosi lozinka 123456 i pritiska taster [ Enter ].
Uneena lozinka se ne vidi na ekranu radi sigurnosti.
Kada se uspeno logujete na ruter potrebno je ponovo pokrenuti program vmrc.exe i logovati se na
jo jedan ruter, u ovom sluaju ENN+10, tj. ako ste se prvo logovali na ruter E11, u drugom sluaju
logujte se na ruter E21.
SecLab 04
v2.00
Konfigurisanje rutera
Korak 1.1.
Prvo je potrebno konfigurisati prvi ruter ENN. Na njemu je potrebno podesiti IP adresu kartice, za
to se moe koristi privremena komanda ifconfig, a ne netconfig, npr:
Korak 1.2.
Sada je potrebno konfigurisati radnu stanicu sa koje e se korisnik proba logovati na SSH server -
ENN+10. Na njemu je potrebno podesiti IP adresu kartice, za to se moe koristi privremena
komanda ifconfig:
Korak 2.1.
Sada je potrebno logovati se kao korisnik proba na ruteru ENN. To vri pritiskom na tester Alt+F2
za prelazak na drugi virtuelni terminal tog rutera. Zatim je potrebno uneti ime korisnika proba i
njegovu lozinku 123456.
Kada se do izvri moe se izvriti i odjava sa ENN rutera za korisnika proba naredbom:
proba@RT ~# exit
SecLab 04
v2.00
Zatim je potrebno vratiti se na prvi virtuelni terminal kombinacijom tastera Alt+F2.
Korak 3.1.
Sada je potrebno logovati se na drugi ruter ENN+10 kao korisnik proba. To vri pritiskom na tester
Alt+F2 za prelazak na drugi virtuelni terminal tog rutera. Zatim je potrebno uneti ime korisnika
proba i njegovu lozinku 123456.
Sada je potrebno logovati se sa ovog rutera na ruter 192.168.NN.1 i njegov SSH server. To se radi
naredbom prikazanom u nastavku uz upotrebu korisnikog imena proba i lozinke 123456:
Korak 3.2.
Da bi se upotreba lozinke prilikom prijave na udaljeni SSH server izbegla potrebno je kreirati tajni i
javni klju na sledei nain:
Ovaj zadnji prikaz, tj. randomart image se nee videti u VNLab okruenju gde se koristi stariji
operativni sistem Trustix, ali e se videti ako se koristi CentOs operativni sistem.
Korak 3.3.
Sada je potrebno ui u direktorijum .ssh i upotrebom secure copy naredbe scp kopirati javni klju
korisnika koji je sadran u datoteci id_dsa.pub naredbama koje su prikazane. Datoteka se kopira na
server 192.168.NN.1 i njegov direktorijum .ssh u datoteku pod nazivom authorized_keys. Pre ovog
postupka mogue je pogledati sadraj direkrotijuma .ssh naredbom:
proba@RT ~# cd .ssh
proba@RT ~# ls -la
SecLab 04
v2.00
Ako se ovaj postupak radi po prvi put u vom direktorijumu e biti dve datoteke id_dsa koja sadri
tajni klju i id_dsa.pub koja sadri javni klju. Datoteka id_dsa.pub se kopira na SSH server
naredbom scp (secure copy radi se o protokolu i istoimenom programu):
proba@RT ~# scp id_dsa.pub proba@192.168.NN.1:.ssh/authorized_keys
user@192.168.01.'s password:
id_dsa.pub 100% 398 0.4KB/s 00:00
Korak 3.4.
Sada je potrebno logovati se sa ovog rutera na ruter 192.168.NN.1 i njegov SSH server. To se radi
naredbom prikazanom u nastavku uz upotrebu korisnikog imena proba:
Ovom prilikom lozinka nee biti potrebna jer e autentifikaciju izvriti javni i tajni klju.
Zadatak
Izvriti kreiranje javnog i tajnog kljua uz upotrebu RSA algoritma duine 4096 bita. Izvriti prenos
javnog kljua na server kao i u prethodnom sluaju. Logovati se na SSH server i proveriti das li je
sve u redu.
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
SecLab 04
v2.00
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
Za promenu konfiguracione datoteke SSH servera moe se koristiti vi editor na sledei nain:
vi /etc/ssh/sshd_config more
Ova metoda je jedina koju obavezno moraju podravati sve implementacije. Meutim, to ne znai da
ona mora biti i jedina doputena, s obzirom da dosta korisnika nema svoj privatni klju za
autentifikaciju.
Kod ovog pristupa klijent serveru u prvoj fazi postupka autentifikacije alje poruku koja izmeu
ostalih informacija sadri i podatak o svom javnom kljuu koji se eli koristiti za autentifikaciju.
Server u svojoj internoj bazi proverava da li ima podatak o istom korisniku i ukoliko ima vraa
korisniku znakovni niz (engl. chalenge) koji je kriptovan javnim kljuem tog korisnika. Nakon toga
klijent mora dekriptovati primljenu vrednost i vratiti odgovor serveru koji e potvrditi uspeno
dekriptovanje primljene vrednosti. Budui da je dekriptovanje mogue obaviti jedino pomou
tajnog kljua istog korisnika, server prihvata sesiju i autentifikuje korisnika. Treba napomenuti da u
ovom sluaju server nikada ne trai ifru korisnika budui da je kompletni proces autentifikacije
obavljen na temelju javnog i tajnog kljua korisnika.
Da bi se omoguio ovakav proces autentifikacije klijent prvo mora generisati svoj par tajni/javni
klju i nakon toga kopiju javnog kljua kopirati na server kako bi server na temelju njega mogao
obaviti proces autentifikacije klijenta.
U svrhu generisanja parova javni-tajni klju korisnika koristi se ssh-keygen program koji dolazi u
paketu s OpenSSH programom.
Zadavanje naredbe:
Rezultat je kreiranje javnog i tajnog kljua korisnika pod ijim je ovlaenjima zadata gore
navedena naredba.
Prilikom postupka generisanja kljueva korisnik e biti upitan da unese takozvani passphrase niz
koji prua dodatni nivo zatite kod korienja SSH servisa. Passphrase niz moe se jednostavno
shvatiti kao lozinka za korisnikov par kljueva. Iako nije obavezno definisanje ovog niza prilikom
postupka generisanja kljueva svim se korisnicima iz sigurnosnih razloga preporuuje korienje
istoga. Budui da trenutno postoje dve verzije SSH protokola, SSH1 i SSH2, mogue je ssh-keygen
programu proslediti -t parametar kojim se definie za koji algoritam se eli stvoriti par kljueva.
Budui da datoteke koje sadre kljueve korisnika sadre razliita imena za svaki od koritenih
algoritama mogue je generisati zaseban par kljueva. Na taj nain omoguuje se spajanje na
razliite SSH servere odnosno izbegavanje eventualnih problema s kompatibilnou softvera
izmeu klijenta i servera. Mogue su sledee vrednosti za -t argument ssh-keygen programa:
Kljuevi generisani bilo kojom od gore navedenih opcija nalaze se u /home/.ssh direktorijumu
korisnika gde se uvek za svaki algoritam stvaraju dve datoteke od kojih jedna sadri javni klju, a
druga tajni klju korisnika. Imena su im identina s jedinom razlikom to javni klju sadri
ekstenziju .pub.
Primer:
id_rsa - datoteka koja sadri tajni klju korisnika za SSH2 verziju protokola koja koristi RSA
algoritam za enkripciju.
id_rsa.pub - datoteka koja sadri javni klju korisnika za SSH2 verziju protokola koja koristi
RSA algoritam za enkripciju
id_dsa - datoteka koja sadri tajni klju korisnika za SSH2 verziju protokola koja koristi DSA
algoritam za enkripciju
id_dsa.pub - datoteka koja sadri javni klju korisnika za SSH2 verziju protokola koja koristi
DSA algoritam za enkripciju
identity - datoteka koja sadri tajni klju korisnika za SSH1 verziju protokola koja koristi
RSA algoritam za enkripciju
identity.pub - datoteka koja sadri javni klju korisnika za SSH2 verziju protokola koja
koristi RSA algoritam za enkripciju
Nakon to su generisani odgovarajui kljuevi posebnu panju treba posvetiti ovlaenjima koje su
dodeljene pojedinim datotekama. Sve datoteke koje ne sadre nastavak .pub sadre tajni klju
korisnika i kao takve ne smeju biti dostupne nikome osim samom korisniku. Nepaljivo
dodeljivanje ovlasti datotekama koje sadre tajni klju korisnika mogu ozbiljno ugroziti sigurnost
SSH sistema.
SecLab 04
v2.00
drwx------ 2 danac danac 4096 2010-09-20 10:50 .
drwxr-xr-x 3 danac danac 4096 2010-09-20 10:34 ..
-rw-r--r-- 1 danac danac 396 2010-09-20 10:45 authorized_keys
-rw------- 1 danac danac 1743 2010-09-20 10:48 id_rsa
-rw-r--r-- 1 danac danac 396 2010-09-20 10:48 id_rsa.pub
-rw-r--r-- 1 danac danac 716 2010-09-20 09:59 known_hosts
Na gornjem primeru moe se jasno uoiti kako datotekama koje sadre tajne kljueve korisnika
(one bez .pub ekstenzije) omoguuju pristup samo vlasniku tih datoteka, u ovom sluaju korisnika
danac. Nakon generisanja vlastitog para tajni/javni klju, kopiju javnog kljua klijent mora kopirati
na server na koji se eli spajati.
Primer:
root@RT ~# cd .ssh
root@RT ~# scp id_rsa.pub proba@192.168.NN.1:.ssh/authorized_keys
user@192.168.01.'s password:
id_rsa.pub 100% 398 0.4KB/s 00:00
to e rezultirati -rw-r-r- ovlastima, koje svim korisnicima sistema dozvoljavaju itanje ovih
datoteka.
Literatura