You are on page 1of 9

SecLab 04

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:

RFC4251 - The Secure Shell (SSH) Protocol Architecture,


RFC4252 - The Secure Shell (SSH) Authentication Protocol,
RFC4253 - The Secure Shell (SSH) Transport Layer Protocol i
RFC4254 - The Secure Shell (SSH) Connection Protocol.

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.

Osnove sigurnosti SSH protokola

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.

Simetrina enkripcija podataka


SecLab 04
v2.00
Podaci koji se razmenjuju izmeu dva udaljena korisnika kroz nesigurnu mreu moraju se zatiti
enkripcijom. U tu svrhu najee se koriste simetrini kriptografski algoritmi. Re je o
matematikim postupcima koji menjaju ulazni niz po nekom kljuu tako da je bez poznavanja tog
kljua praktino nemogue otkriti izvorni niz. Pritom se isti klju koristi kod enkripcije i dekripcije
podataka. Sigurnost ovakvih algoritama temelji se na tajnosti kljua, a zbog injenice da se isti klju
koristi za enkripciju i dekripciju, algoritmi se nazivaju simetrinima. Postoji itav niz algoritama
koji se koriste za simetrinu enkripciju, a meu najee korienijima su:

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.

Asimetrina enkripcija 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:

DSA (eng. Digital Signature Algorithm) i


RSA (Rivest, Shamir i Adlerman tvorci algoritma).

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

Kada se program startuje potrebno je upisati vmrc://192.168.175.182:5900/ENN


NAPOMENA: Svako se loguje na drugi ruter, npr. E11, E12, E13 ... itd.

U sledeem koraku bi trebalo da se otvore dialog prozori koji upozoravaju na sigurnost.

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.

Kada se otvori prozor za logovanje potrebno je uneti

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:

root@RT ~# ifconfig eth0 192.168.NN.1

Zatim je potrebno proveriti da li je startovan SSH server. To se radi sledeom komandom:

root@RT ~# service sshd status

Ako server nije startovan potrebno je startovati ga komandom:

root@RT ~# service sshd start


Starting sshd: [ OK ]

Zatim je potrebno dodati korisnika proba koji e se logovati na SSH server.


root@RT ~# adduser proba

I dodeliti mu lozinku 123456:


root@RT ~# passwd proba

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:

root@RT ~# ifconfig eth0 192.168.NN.2

Zatim je potrebno dodati korisnika proba koji e se logovati na SSH server.


root@RT ~# adduser proba

I dodeliti mu lozinku 123456:


root@RT ~# passwd proba

Logovanje korisnika proba

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 zavri logovanje potrebno je kreirati direktorijum .ssh naredbom:

proba@RT ~# mkdir .ssh

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.

Kreiranje javnog i tajnog kljua

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:

proba@RT ~# ssh proba@192.168.NN.1

Kada se i to zavri moe se odlogovati sa SSH server naredbom:


proba@RT ~# exit

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:

proba@RT ~# ssh-keygen t dsa


Generating public/private rsa key pair.
Enter file in which to save the key (/home/proba/.ssh/id_dsa): [Pritisnuti Enter]
Enter passphrase (empty for no passphrase): [Pritisnuti Enter]
Enter same passphrase again: [Pritisnuti Enter]
Your identification has been saved in /home/proba/.ssh/id_dsa.
Your public key has been saved in /home/proba/.ssh/id_dsa.pub.
The key fingerprint is:
91:a7:d6:57:fe:14:0c:c3:98:00:57:05:25:23:56:87 danijel@ivana-PC
The key's randomart image is:
+--[ RSA 2048]----+
| ..=+*O* |
| o..E+.+ |
| o . .o |
| = o .|
| S . . . .|
| . . o |
| .|
| |
| |
+-----------------+

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

Ako se ovaj postupak uspeno okonan na serveru e se u direktorijumu korisnika proba


(/home/proba) u poddirektorijumu .ssh nalaziti datoteka authorized_keys.

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:

proba@RT ~# ssh proba@192.168.NN.1

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.

Za dodatni rad i analizu

Konfiguracija SSH servera

Konfiguraciona datoteka SSH servera je /etc/ssh/sshd_config i moe se videti sledeom


komandom:

cat /etc/ssh/sshd_config more

# Package generated configuration file


# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen for


Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key


KeyRegenerationInterval 3600
ServerKeyBits 768

# 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

# Don't read the user's ~/.rhosts and ~/.shosts files


IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)


PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with


# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords


#PasswordAuthentication yes

Za promenu konfiguracione datoteke SSH servera moe se koristiti vi editor na sledei nain:

vi /etc/ssh/sshd_config more

Za dodatni rad i analizu

Autentifikacija pomou javnog kljua (publickey)

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:

proba@RT ~# ssh-keygen t dsa


Generating public/private rsa key pair.
Enter file in which to save the key (/home/proba/.ssh/id_dsa): [Pritisnuti Enter]
Enter passphrase (empty for no passphrase): [Pritisnuti Enter]
Enter same passphrase again: [Pritisnuti Enter]
Your identification has been saved in /home/proba/.ssh/id_dsa.
Your public key has been saved in /home/proba/.ssh/id_dsa.pub.
SecLab 04
v2.00
The key fingerprint is:
91:a7:d6:57:fe:14:0c:c3:98:00:57:05:25:23:56:87 danijel@ivana-PC
The key's randomart image is:
+--[ RSA 2048]----+
| ..=+*O* |
| o..E+.+ |
| o . .o |
| = o .|
| S . . . .|
| . . o |
| .|
| |
| |
+-----------------+

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:

ssh-keygen -t rsa1 - koristi se za SSH1 verziju protokola


ssh-keygen -t dsa i
ssh-keygen -t rsa - koriste se za SSH2 verziju Protokola

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.

Klju je potrebno kopirati u /home/.ssh/authorized_keys datoteku ukoliko se koristi SSH1


protokol ili u /home/.ssh/authorized_keys2 datoteku ukoliko se koristi SSH2 protokol. Ukoliko se
koristi OpenSSH paket onda je omogueno biranje datoteke, a ukoliko korisnik eli da koristi i SSH1
i SSH2 verziju protokola onda je to /home/.ssh/authorized_keys datoteka. To znai da ukoliko se
koristi SSH1 verzija protokola potrebno je id_rsa.pub javni klju kopirati u
/home/.ssh/authorized_keys datoteku na udaljenom raunaru, a ukoliko se koristi verija 2 istog
protokola potrebno je kopirati kljueve id_rsa.pub ili id_dsa.pub u /home/.ssh/authorized_keys2
datoteku udaljenog raunara. Kopiranje javnih kljueva moe se obaviti jednostavno koritenjem
FTP protokola, budui da ovde poverljivost prenosa podataka nije bitna jer se radi o prenosu javnog
a ne tajnog kljua. U sledeem primeru za kopiranje javnih kljueva koriten je scp servis.

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

Nakon to je stvorena odgovarajua /home/.ssh/authorized_keys datoteka potrebno je ispravno


postaviti ovlaenja tih datoteka kako bi se veza mogla uspeno uspostaviti. U tu svrhu potrebno je
zadati sledeu naredbu:

root@RT ~/.ssh$ chmod 600 authorized_keys

to e rezultirati -rw-r-r- ovlastima, koje svim korisnicima sistema dozvoljavaju itanje ovih
datoteka.

Literatura

You might also like