Arvutiteaduse instituut
  1. Kursused
  2. 2020/21 kevad
  3. Andmeturve (LTAT.06.002)
EN
Logi sisse

Andmeturve 2020/21 kevad

  • Pealeht
  • Loengud
  • Praktikumid
  • Referaat
  • Kirjandus
  • Turvauudised
  • Lingid

Praktikum 7 - Secure Shell (SSH) kasutamine ja turvalisus

Eelnevates praktikumides viisime läbi ründeid ennekõike kohalikus masinas (eeldasime et teil on füüsiline ligipääs ohvri arvutile) ja kasutaja vastu (e-mail). Käesolevas ja mitmed järgnevas vaatame aga kuidas üle võrguühenduse (interneti) ohvri arvutisse pääseda.

SSH on võrguprotokoll arvutitevaheliste krüpteeritud tunnelite loomiseks. Üks selle peamisi kasutusalasid on üle võrgu teistesse arvutitesse sisse logimine ning linux arvutite (serverite) kaughaldamine. Selles praktikumis vaatame missuguseid turvaaspekte tuleb meeles pidada SSH kasutamisel ning mängime läbi mõned ründestsenaariumeid. Lisaks vaatame, kuidas SSH'd kasutada võrguliikluse ümber suunamiseks läbi krüpteeritud SSH-tunnelite.

NB! Kontrollige üle, et teie virtuaalmasina hostname on muudetud unikaalseks. See peaks sisaldama teie perekonnanime. Püsiva muudatuse tegemiseks tuleks modifitseerida järgmisi faile: /etc/hostname ja /etc/hosts ning teha arvutile (st virtuaalmasinale) restart. Ajutise muudatuse tegemiseks: sudo hostname SINU_NIMI. Uuemates Linux operatsioonisüsteemides k.a meie kasutada olevas Mint 19.3-s võib kasutada ka käsku sudo hostnamectl set-hostname perenimi, pärast mida on vaja terminal taaskäivitada muudatuse nägemiseks. Teil peaks olema juba hostname muudetud praktikum 1 ja praktikum 6 raames, aga olge kindlad, et see on endiselt unikaalne. Täpsemalt saab hostname muutmise kohta lugeda siit: How to Change Hostname on Ubuntu 18.04.

NB! Palun keelake ajutiselt oma arvutites viirusetõrje tarkvarad (antivirus software) nagu Symantec, NOD32 jne. Osad agressiivsed viirusetõrje tarkvarad blokeerivad virtuaalmasina ssh ühendusi.

0. Praktikumi järgnevate tegevuste ettevalmistus

2. Installige virtuaalmasinasse telnet ja ssh server, mida meil hiljem testimiseks vaja läheb, ja xkey kompileerimiseks vajalikud päised:

sudo apt update
sudo apt install telnetd openssh-server build-essential libx11-dev libxt-dev

3. Looge oma virtuaalmasinasse uus kasutaja tudeng parooliga 1234567890, mida kasutame tänases praktikumis testimiseks:

sudo adduser tudeng

Kontrolli kas saad virtuaalmasinast Internetti ja paigaldatud ssh-server töötab.

$ ping math.ut.ee
$ ssh tudeng@localhost

Nüüd peaksite nägema kasutaja "tudeng" õigustes käsurida. Veendumiseks andke käsk who, mis kuvab käsu andnud kasutaja kasutajanime. Sulgeme tehtud SSH-ühenduse käsuga exit, et naasta tavakasutaja käsureale.

1. Ligipääs teise masinasse üle SSH

Kasutage SSH'd, et logida math.ut.ee serverisse. Kasutage sisse logimiseks enda TÜ kasutajatunnust ja parooli (sama, millega ka nt ÕIS-i sisse logite).

$ ssh ÕIS-kasutajatunnus@math.ut.ee

Alati on tähtis olla tähelepanelik, millisesse arvutisse ning kellena olete sisse loginud (üldiselt näeb käsureaviidas @ märgi ees kasutajatunnust ja taga hostname).

Esimesel ühendamisel küsitakse kas soovite ühendatava arvuti fingerprint (sõrmejälg) salvestada, et hiljem oleks võimalik tuvastada kui masina RSA-võtme sõrmejälg muutub nt keegi üritab vahendusrünnet ( man-in-the middle ) läbi viia (võimaldab varastada teie sisselogimisinfo). Salvestatud ssh-masinate infot hoitakse failis ~/.ssh/known_hosts (käsureal "~" tähendab kasutaja kodukataloogi, nt "/home/kasutaja/"):

$ cat ~/.ssh/known_hosts

Turvateadlik kasutaja loob esimese ühenduse SSH serveriga usaldusväärse võrguühendusega kohast, kus pole karta vahendusrünnet (selle käigus salvestab ka SSH-serveri sõrmejälje).

Õnnestunud sisenemise järel sulgege ühendus (käsuga exit).

Kasutaja parooli asemel on võimalik sisse logimiseks kasutada ka avaliku võtme krüptograafial põhinevat lahendust. Avaliku võtme krüptograafias on kasutusel kaks võtit: avalik ja salajane võti. Need genereeritakse korraga ja nad on omavahel seotud. Oluline on, et avalikust võtmest ei saa praktikas tuletada salajast võtit. Täpsemalt räägime avaliku võtme krüptograafiast järgmistes praktikumides.

Järgnevate ülesannete jaoks läheb vaja avaliku võtme krüptograafial põhinevat autentimist. Genereerige enda arvutis enda kasutajale uus RSA-võtmepaar (selle käigus luuakse avalik ja salajane võti). Salajase võtme kaitsmiseks võib kasutada parooli, kuid käesoleva ülesande raames ärge seda lisage (reaalsetes olukordades kindlasti pange parool)!:

$ ssh-keygen -t rsa 

NB: kasutage vaikimisi pakutud failinime!

Selleks, et niisugune autentimine toimiks peab usaldusväärse serveriga jagama enda avalikku võtit. Enda avalikku võtit saab teise masinasse kopeerida käsuga:

 
$ ssh-copy-id <username>@<server>

Näiteks

 
$ ssh-copy-id <username>@math.ut.ee

Kommentaar: Seda saab ka käsitsi teha, aga siis on vaja võtta oma masinast võtme avalik pool (cat ~/.ssh/id_rsa.pub) ja lisada teise masina/teise kasutaja .ssh/authorized_keys faili (võti on üks rida, ettevaatust nano kasutajad, kasutage nano -w reamurdmise vältimiseks!).

Proovime nüüd uuesti math.ut.ee serverisse sisse logida:

$ ssh <ut_login>@math.ut.ee

Kui endiselt küsitakse parooli on vaja korrigeerida teie kodukausta õigusi. Selleks sisestage math.ut.ee serveris käsk

chmod go-w .

... ja proovige uuesti. Nüüd peaksite math.ut.ee serverisse ligi pääsema parooli sisestamata käsuga ssh <ut_login>@math.ut.ee

Serverisse salvestatud avalikke võtmeid hoitakse kasutaja kodukausta failis ~/.ssh/authorized_keys mida näeb math.ut.ee serveris sisestades käsu:

cat .ssh/authorized_keys
  • Ülesanne 1: Tehke ekraanitõmmis, et saate math.ut.ee serverisse ilma parooli sisestamata siseneda ja cat .ssh/authorized_keys käsu väljund math.ut.ee serveris.

2. SSH-võtme varguse rünne

Privaatvõtmega autentimise korral on privaatvõti nagu teie parool, peate hoidma seda salajas ja kaitstud (parooliga kaitstud privaatvõtme kasutamist loetakse ka kahefaktoriliseks autentimiseks). Vaatame, mis juhtub olukorras kus ründaja saab juurdepääsu SSH salajasele võtmele. See on täiesti reaalne ründe olukord, sest sisevõrku tunginud ründaja võib saada juurdepääsu SSH salajasele võtmele. Olles teises masinas saate näha kes on sisse loginud käsuga who või w -h.

1. TÜ töötaja on töö-arvutis loonud käsuga ssh-keygen -t rsa rsa-võtme millega ühendub distantsilt töötades enda töö arvutisse. Nii ei pea töötaja iga kord sisestama enda kasutajatunnust ja parooli (eriti laialdaselt kasutuses masin-masin suhtluses autentimiseks).

2. Ründaja kopeerib ohvri (töötaja) arvutist võtme salajase poole (~/.ssh/id_rsa, meie puhul Attach:officeVM-rsa ja Attach:officeVM-IPrsa) (aga ei kirjuta enda salajast võtit üle) ning arvab ära ka parooli (meie ülesandes "12345"). Parooli äraarvamine võib samuti olla reaalne juhul kui parool on nõrk või juhul kui ründaja saab paigaldada ohvri arvutisse nt keyloggeri. Lihtsuse huvides (ja et jääks logi maha), teeme järgmist rünnet math.ut.ee serverist. Pärast allalaadimist peame muutma failide õiguseid, et privaatvõti ei oleks teistele kasutajatele loetav:

$ ssh <ut_login>@math.ut.ee
$ wget https://courses.cs.ut.ee/2021/turve/spring/uploads/Main/officeVM-rsa
$ wget https://courses.cs.ut.ee/2021/turve/spring/uploads/Main/officeVM-IPrsa
$ chmod 700 officeVM-rsa
$ chmod 700 officeVM-IPrsa

3. Ründaja kasutab kopeeritud salajast võtit ja logib serverisse:

$ ssh -i officeVM-rsa tootaja@172.17.37.113

Küsitakse rsa võtme parooli, mis on meie puhul lihtne 12345, kui võti oleks paroolita saaks ligi ilma parooli teadmata.

  • Ülesanne 2: - Tehke ekraanivaade, kus te saate ssh -i officeVM-rsa tootaja@172.17.37.113 edukalt Delta-OfficeVM nimelisse arvutisse sisse logida meie jagatud privaatse võtmega ning sisestada käsu cat .ssh/authorized_keys.

4.Ründe vältimine: Ohver kirjutab serveri ~/.ssh/authorized_keys faili võtme rea algusse (teie seda tegema ei pea ja õppejõud on selle 172.17.37.113 masinas teie eest teinud vaata eelmist pilti.): from="lubatud.masina.ip" NB! See peab olema sama rea alguses, kus võti! Töötaja (õppejõud) on seda eelnevalt teinud võtmele officeVM-IPrsa ning veenduge, et nüüd te enam arvutile ligi ei pääse. Järgnev ksk sisestada math.ut.ee serveris.

$ ssh -i officeVM-IPrsa tootaja@172.17.37.113

Küsitakse tootaja kasutaja parooli, mida te ei tea. Paroolipõhist autentimist on võimalik ka ära keelata, kuid lihtsuse huvides me seda hetkel veel ei tee. Katkestada saate tegevust CTRL+C.

SSH-võtme parooli vahetamine või seadmine eeldab olemasoleva parooli teadmist:

$ ssh-keygen -p

Võtme kompromiteerumisel tuleks eemaldada vastavad kirjed ~/.ssh/authorized_keys failist ja veenduda, et pahalane pole jätnud masinasse muid tagauksi või pahavara (pole alati kerge selles veenduda). Osad ütlevad, et ka juba kompromiteerunud arvutit ei saa enam usaldada ja soovitavad selle uuesti installeerida ja seadistada.

3. SSH ja port forwarding näide

SSH'd saab kasutada võrgu liikluse ümber suunamiseks, läbi krüpteeritud SSH-tunnelite, kasutades portide edastamist. Kahe arvuti vahel luuakse SSH-tunnel ning ühe arvuti porti saabuv liiklus suunatakse ümber teise masina porti läbi SSH-tunneli.

Portide edastamise kohta saab rohkem lugeda siit: SSH/OpenSSH/PortForwarding ja siit: Bypassing corporate firewall with reverse ssh port forwarding.

Läbi tunneli on võimalik suunata võrguliiklus kas samas suunas tunneli loomise suunaga, või siis vastupidises suunas:


Portide edastamise illustratsioon (allikas)

3.1 LPF ja RPF Demo

Et paremini mõista LPF (Local Port Forwarding) ja RPF (Remote Port Forwarding) erinevust ka on juhendajad teile üles seadnud 2 illustreerivat näidet. Esimese näitena vaatame olukorda, kus meil oleks vaja ligi pääseda TÜ tööarvutile (mis vaikimisi ei ole avalikust internetist ligipääsetav) ja teise näitena vaatame, kuidas saab tekitada tulemüüri nn tagauksi.

  1. TÜ tööarvutisse sisselogimine (tegu on andmeturve õppejõu tööarvutiga Delta ruumis 3033)
    1. Avage Linux Mint käsurida ja sisestage käsk ssh -L 2323:172.17.37.113:22 <ut_login>@math.ut.ee , kus <ut_login> asendage oma TÜ kasutajatunnusega ja pärast käsu sisestamist peaks avanema math.ut.ee käsurida. NB! Kui teil oli probleem esimese ülesande ja sertifikaadiga math.ut.ee serverisse logimisega siis võib eelnev käsk küsida ka teie math.ut.ee parooli (sisestage see).
    2. Avage uus Linux Mint virtuaalmasina käsurida paralleelselt ja sisestage käsk ssh -p 2323 tudeng@localhost
    3. Esimesel korral võib vaja olla nõustuda uue fingerprint ehk nö masina tuvastuse räsiga. Trükkige yes ja ENTER.
    4. Teilt küsitakse tudeng kasutaja parooli, milleks on 1234567890
    5. Kontrollige, milline on teie sisselogitud arvuti IP ip addr l eth0 ja arvuti nimi hostname
    6. Kontrollige mtr käsuga, et olete TÜ sise-võrgus mtr -b 8.8.8.8
    7. Ülesanne 3: - Tehke ekraanivaade Delta-OfficeVM virtuaalmasina terminali who käsu väljundist (nähtav peab olema ka virtuaalmasina nimi käsureal).
    8. Katkestage SSH ühendus nii math.ut.ee serveriga kui Delta-OfficeVM virtuaalmasinaga kasutades käsku exit
  2. Eelnev lahendus on sama väärne kui logiksite ssh-ga või VPN-iga TÜ avalikku serverisse ja siis sealt omakorda "tööarvutisse"
    1. Linux käsurealt sisestage ssh <ut_login>@math.ut.ee , kus <ut_login> teie TÜ kasutajatunnus ja kui küsitakse sisestage enda TÜ ÕISi parool.
    2. math.ut.ee serveri käsurealt sisestage ssh tudeng@172.17.37.113
    3. kontrollige mtr ja hostname käsuga, et tegu on sama arvutiga

4. SSH tagurpidi edastamine ülesanne

Teie eesmärgiks on ligi pääseda oma Andmeturve virtuaalmasinasse kasutades SSH-ühendust. Selleks suuname nüüd liikluse läbi SSH-tunneli, sellele vastupidises suunas. Vaikimisi seda teha ei saa, sest teie Andmeturve Mint virtuaalmasin on enamasti vähemalt 2 erineva tulemüüri taga (NAT käitub tulemüürina). Küll aga enamik tulemüüre lubavad läbi piiranguteta nö vastuspaketid seest alustatud ühendustele, sama kehtib meie NAT ruuteritega. Ühenduse loomiseks on vaja mingisugust "avalikku" serverit (mõlemale ligipääsetavat). Vaatame esmalt õppejõu üles seadistatud näidet:

  1. Andmeturve arvutiklassi arvutisse sisse logimise näide (Delta 2003 arvutiklassi demo-arvuti)
    1. Linux Mint käsurealt sisestage ssh <ut_login>@math.ut.ee , kus <ut_login> teie TÜ kasutajatunnus ja kui küsitakse sisestage enda TÜ ÕISi parool.
    2. Vaatame math.ut.ee serveris aktiivseid kuulavaid porte netstat -tln
    3. math.ut.ee serveri käsurealt sisestage ssh -p 2003 tudeng@localhost ja parool on 1234567890.
    4. Kontrollige, milline on teie sisselogitud arvuti IP ip addr l eth0 ja arvuti nimi hostname
    5. Kontrollige mtr käsuga, et olete Delta 2003 arvutiklassi võrgus mtr -b 8.8.8.8 (esimene rida peaks olema 192.168.10.1)
  2. exit (lab-VM), exit (math.ut.ee)

Tunneli sihtpunktiks olevas arvutis (math.ut.ee) suunatakse lokaalsesse porti (23XXX) saabuv liiklus ümber tunneli allika arvuti porti (22). Pordinumbriks valige oma arvuti 23XXX, kus XXX asendada vabalt valitud kolmekohalise numbriga ja enda masin olgu teie enda virtuaalmasina IP (näeb käsuga ip a). Seda milline pordinumber on vaba saab vaadata math.ut.ee serveris käsuga netstat -tln. Sisestage järgnev käsk ning proovige saada math.ut.ee vahendusel ligipääs oma Mint virtuaalmasinale.

$ ssh -R pordinumber:endamasin:22 <username>@math.ut.ee

Nüüd on teil suvalisest masinast juurdepääs enda virtuaalmasinasse. Selleks tuleb kõigepealt teha ssh-ühendus serverisse math.ut.ee. Ligipääsemise illustreerimiseks minimaliseerige virtuaalmasina aken ning host-masinast (mitte virtuaalmasinast) avage ssh-seanss serverisse math.ut.ee. Juhul kui teie host masinas jookseb Windows, siis saab ssh jaoks kasutada programmi PuTTy. Host Name (or IP address) väljale kirjutage math.ut.ee , port väljale 22 ning vajutage OK. Sisestage TÜ kasutajatunnus ja parool. Kui olete math.ut.ee-s (vaikimisi IPv6!), siis sisestage järgnev käsk:

$ ssh kasutaja@localhost -p 23XXX 
$ who

NB! Nüüd sisenete te enda Andmeturve Mint masinasse, mille vaikeparool oli isherenow, kuid kui te olete parooli ära vahetanud siis sisestage enda Mint arvuti parool.

Ülesanne 4: - Tehke ekraanivaade terminali aknast. Vajalik on, et oleks näha ssh käsk math.ut.ee serveris, teie masina nimi, ning who käsu väljund

5. SSH X11 Forwarding

1. Ühendage enda virtuaalmasin privaatsesse võrku. Selleks peab virtuaalmasina võrguadapteri tüübiks olema bridged adapter (vaikimisi on "NAT"). bridge ühendus töötab ainult WiFi personal tüüpi wifidega mitte WiFi enterprise nagu ühiselamute eduroam ja muud asutuste suuremad võrgud. Alternatiivina soovitame kasutada mobiiltelefoni hotspot ehk kohtvõrgu loomise võimekust või kaablivõrku.

  • Lülitage enda Andmeturve Linux mint virtuaalmasin välja power off.
  • Kui te kasutate klassi võrku ühendamiseks võrgukaablit, siis valige vastava virtuaalmasina võrguseadete alt Attached to: Bridged Adapter ja ühendatud adapter name valida Intel Ethernet Connection vms.
  • Kui kasutate võrku ühendamiseks Wi-Fi'd, siis valige Andmeturve Linux Mint virtuaalmasina võrguseadete alt Attached to: Bridged Adapter ja valige Wi-Fi adapter (näiteks IT akadeemia sülearvutite puhul Intel Dial Band Wireless või Broadcom 802.11n Network Adapter).
  • Igaks juhuks genereerige oma virtuaalmasina võrgukaardile ka uus MAC aadress (Advanced valikute all sinine ringikujuline noole kujutis).
  • NB! Osad viirusetõrje tarkvarad nagu nt Symantec, Eset NOD32, blokeerivad taustal bridge ühendusi, seega probleemide vältimiseks on käesolevas praktikumis soovitatav viirusetõrje välja lülitada. Microsofti vaikimisi viirusetõrje Defender ei valmista probleeme ja variant on ka et te lülitate viirusetõrje välja alles probleemide tekkimisel.

Väljaspool arvutiklassi praktikumi sooritamiseks on teil vaja kloonida enda virtuaalmasinaid, et saaksime paremini tulemüüri seadistamist testida. VirtualBoxis valige parem klahviga Andmeturve virtuaalmasinal clone -> Linked Clone ja Generate new MAC addresses for all network adapters -> Clone ).

Kui teie füüsilises arvutis on piiratud koguses muutmälu RAM (4 GB või vähem), andke Linux Mint virtuaalmasinale vähem mälu näiteks 1 GB ja sulgege füüsilises arvutis kõik üleliigsed programmid. Nüüd käivitage mõlemad Andmeturve virtuaalmasinad edaspidi viidatud kui Server, Andmeturve virtuaalmasin või põhi masin ja Andmeturve kloon või lihtsalt kloon, klient.

Selleks, et tegevused arusaadavamad oleks muutke ära kloonis hostname kujule perenimi-kloon ja muutke ära hostinimi ka hosts failis.

sudo hostnamectl set-hostname perenimi-kloon
sudo nano /etc/hosts

Selgitage välja (ja jätke meelde) oma arvuti IP-aadress (peaksite olema lokaalses võrgus: näiteks 192.168.0.1/24). Eelmises kirjapildis /24 näitab võrgumaski, mis pikalt välja kirjutatult on 255.255.255.0 .

ip addr ls

Kui teil on probleeme võrguühendusega siis võib aidata virtuaalmasinas võrgu seadeid uuendada käskudega:

$ sudo ifdown eth0
$ sudo ifup eth0

Üle SSH on võimalik ka graafilisi programme käivitada ning seda kutsutakse SSH X11 Forwarding. Demonstreerime SSH-agendi ohtusid (sihtmasina administraator saab seansile ligi). Selles ülesandes on kaks osapoolt: server (originaalne andmeturve Mint) ja klient (Kloon).

Server: kontrolli, et X11 edastamine on lubatud serveri konfiguratsioonis (/etc/ssh/sshd_config on "X11Forwarding yes", vaikimisi lubatud), vajadusel muuda ümber ja restardi SSH-server. Lihtsustame veidi tegevust lubades ühendused kõigilt klientidelt xhost +

$ sudo nano /etc/ssh/sshd_config
$ sudo xhost +

5.2 Proovime nüüd serverist tegevusi pealt kuulata

PS! Kui teil tekib mure järgneva ülesande lahendamisega (veateated) siis proovige käske uuesti sisestada siit alates...

Klient: Kui server on ettevalmistusega valmis saanud, siis logi sisse serverisse ja kontrolli, kas saad käivitada X-i rakendust, nt firefox :

$ ssh -XY tudeng@serveri.IP.aadress firefox

Jäta kloonis avanenud Firefox aken avatuks (ära sulge seda). Eelmises käsus peaks serveri.IP.aadress (Andmeturve Mint virtuaalmasin) aadress olema näiteks 192.168.1.123. Kui teil on IP aadress 10.0.2.15 (kasutate endiselt NAT, millega käesolev näide ei tööta) või 127.0.0.1 ehk localhost aadress, mida saab kasutada ainult virtuaalmasina piires. Samuti on vale seadistus kui teil algab IP aadress 169 numbriga mida kutsutakse autoconfiguration aadressiks ehk virtuaalmasin ei saa DHCP-st IP aadressi ning enamasti on viga bridge ühenuse seadistuses (vale adapter, pärast muutmist tee sudo ifdown eth0, sudo ifup eth0).

Server: tõmba programm xkey.txt (nimeta ümber xkey.c), vajadusel installeeri build-essential, libx11-dev ja libxt-dev paketid. Kompileeri programm:

$ mv xkey.txt xkey.c
$ gcc -o xkey xkey.c -L /usr/X11R6/lib/ -lX11 -lm
$ sudo chmod a+x xkey

Tuvasta xauth list käsuga millised MIT-MAGIC-COOKIE ehk nn graafilise keskkonna autentimise info on aktiivne. Vaheta õigused root kasutajaks sudo su -, liigu kausta, kus sa ennist xkey programmi kompileerisid (näiteks cd ~ või cd /home/kasutaja). Nüüd peame varastama X11 autentimise info (tokeni) käskudega XAUTHORITY=/home/tudeng/.Xauthority, kus tudeng on kasutaja kellena klient ssh-ühenduse autentis ja export XAUTHORITY. xauth list peaks nüüd kuvama uusi numbreid. Käivita programm ./xkey localhost:10.0 , DISPLAY väärtuseks (10.0) sea see number, mida kasutatakse ssh-seansis:

$ sudo su -
# cd /home/kasutaja
# xauth list
# XAUTHORITY=/home/tudeng/.Xauthority
# export XAUTHORITY
# xauth list
# ./xkey localhost:10.0

Kui ühtegi veateadet ei tulnud peaks nüüd käsurida nn kinni jääma ja ootama millal klient infot saadab.

Klient: kasuta avanenud firefox akent, külasta mõnda veebilehte näiteks http://andmeturve-lab.appspot.com/ . Sisesta enda nimi kuhugi tekstiaknasse, aga ole ettevaatlik, teid kuulatakse pealt!

  • Ülesanne 5: Tehke ekraanivaade terminali aknast, kus on näha ./xkey localhost:10.0 käsk ja kompromiteerunud väljund (tekst mida ohver sisestab firefox aknasse kloonis ja server pealt kuulab).

6. SSH-agendi kasutamine

Pidev parooli sisestamine privaatvõtme avamiseks on tülikas (tekib kiusatus panna lühike parool, muutub tõenäoliseks parooli pealtkuulamine/klaviatuurilt mahalugemine). Aegajalt on vaja avatud võti ette anda ka mõnele muule tarkvarale kasutamiseks. Uurime kas ssh-agent nimeline programm töötab (SSH_AGENT_PID ja SSH_AGENT_SOCK keskkonnamuutujad!):

$ env | grep SSH

(kui ei tööta, siis tehke exit kuni olete oma masinas shellis, kus töötab). Masinates, kus ssh-agent ei tööta, tuleks see käivitada:

$ eval `ssh-agent`

Lisame oma võtme autentimisagendile (see hoiab lahtikrüpteeritud võtit mälus, kettale ei kirjuta, masinast välja ei anna). Kõik antud kasutaja protsessid saavad läbi UNIX socketi seda teenust kasutada:

$ ssh-add

Hetkel laaditud võtmeid saab vaadata:

$ ssh-add -l

Võtme eemaldamine agendist:

$ ssh-add -d /home/kasutaja/.ssh/id_rsa

Kõigi võtmete eemaldamine:

$ ssh-add -D

Pärast seda tehke uuesti ssh-add, et võti järgmiste ülesannete tarvis mälus oleks:

$ ssh-add

6.1 SSH-agendi edasisuunamine (Agent forwarding)

Selles ülesandes on teil on vaja kasutada eelmises punktis kasutatud Kloon virtuaalmasinat (edaspidi Kloon) ja õppejõu antud arvuti_3 (IP:math.ut.ee kasutaja:TÜ-kasutajatunnus, privaatne parool)

Tekita vajalikud võtmete usaldused nii, et sinu masinast on võimalik mõlemasse masinasse sisse logida sinu võtit kasutades:

$ ssh-copy-id tudeng@kloon-IP
$ ssh-copy-id <ut_login>@math.ut.ee

NB! Kloon ei tohiks hetkel saada parooli sisestamata ühenduda arvutisse 3. Selleks sisestame kloonis järgmised käsud:

$ rm .ssh/id*
$ exit
Ava terminal uuesti
$ ssh <ut_login>@math.ut.ee

Viimane käsk peaks küsima sinu ÕIS parooli (pole vaja sisestada) ehk kloonis ei ole privaatvõtit enam math.ut.ee serverisse sertifikaadiga sisse logimiseks.

SSH-agenti on võimalik edasi suunata läbi mitme masina selleks, et vahendada autentimise teenust. Selle abil saab krüptograafilist võtit kasutada teistes serverites autentimiseks, ilma et seda peaks liigutama esialgsest masinast.

Logige sisse teise tudengi masinasse kasutades võtme autentimist ning lisades SSH-käsule agendi edasisuunamiseks lipp -A :

$ ssh -A tudeng@kloon-IP

Nüüd uuri selles masinas kasutaja aktiivseid võtmeid:

$ ssh-add -l

Kloon masinas peate nägema oma kohaliku masina võtit. Parandage, kui ei näe.

Nüüd peaks Andmeturve virtuaalmasinas kasutaja sisestama Kloon virtuaalmasina SSH terminalis (avatud -A võtmega) ja edasi liikuma masinasse arvutisse 3 ehk (math.ut.ee) ilma, et kloonis oleks olemas tema privaatvõtit:

$ ssh <ut-login>@math.ut.ee

Keda huvitab, kuidas SSH-võtmetega autentimine ja SSH-agent tagaplaanil töötavad, võib lugeda seda illustratsioonidega artiklit: http://unixwiz.net/techtips/ssh-agent-forwarding.html

SSH Agent Forwarding korral on teoreetiliselt võimalik vahendajal mälust SSH privaatvõti välja lugeda, kuid 2019 a kevadest käesolev demo enam Andmeturve Linux Mint masinaga õnneks või kahjuks ei toimi https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory/

Boonus: Kui keegi saab SSH agendist privaatvõtme varastamise 2021 Linux Mint virtuaalmasinaga tööle palun saata lahendus alo.peets@ut.ee ja teenid boonuspunkte.

  • Ülesanne 6: - Tehke ekraanivaade, kus Andmeturve Linux Mint virtuaalmasina terminalis on näha ssh sisselogimise käsud ssh -A tudeng@kloon-IP ja ssh <ut_login>@math.ut.ee. Pildil ei tohi kumbki käsk küsida parooli ssh käsuga teise masinasse sisenemiseks (sertifikaadi võtme küsimine on OK).

Lisainfo proovimiseks - failide kopeerimine

scp - failide kopeerimine üle SSH-tunneli. Kuidas kopeerida faile oma masinast teise, teisest omale, kahe välise masina vahel?

sftp - FTP alternatiivne protokoll. Olemas palju ilusaid graafilisi kliente. Tehke kindlaks, kas linuxi programmid Nautilus, Konquror oskavad sftp'd kasutada - vajadusel installeerige puuduv tarkvara!

Lisainfo proovimiseks - ProxyCommand

ProxyCommand'i kasutamine SSH Agendi või PortForwarding'u asemel

  • Lugege lehekülge
    • https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/
  • Konfigureerige OpenSSH ümber kasutama ProxyCommand'i nii, et ühte serverisse ühendades loodaks tunnel läbi kolmanda masina.
    • Modifitseerida tuleb ~/.ssh/config faili
  • Käsuga who saab kontrollida kust masinast on sisse tulev ssh-seanss pärit.
  • Praktiliselt on sellest kasu näiteks ülikooli serveritele ligi pääsemiseks, mis tavaliselt ei ole välisvõrgust otse kättesaadavad. Kasutada nt serverit math.ut.ee niiöelda väravana, kuna see on välisvõrgust kättesaadav.

Esitada Praktikum7:

Praktikumi ülesannete lahendamine annab neli punkti ja esitamiseks on umbes kaks nädalat alates praktikumi toimumisajast ( kuni 7. aprill tähtajani).

  • Ülesanne 1: Tehke ekraanitõmmis, et saate math.ut.ee serverisse ilma parooli sisestamata siseneda ja cat .ssh/authorized_keys käsu väljund math.ut.ee serveris. - 0.5p
  • Ülesanne 2: - Tehke ekraanivaade, kus te saate ssh -i officeVM-rsa tootaja@172.17.37.113 edukalt Delta-OfficeVM nimelisse arvutisse sisse logida meie jagatud privaatse võtmega ning sisestada käsu cat .ssh/authorized_keys. - 0.5p
  • Ülesanne 3: - LPF - Tehke ekraanivaade Delta-OfficeVM virtuaalmasina terminali who käsu väljundist (nähtav peab olema ka virtuaalmasina nimi käsureal). - 0.5p
  • Ülesanne 4: - RPF - Tehke ekraanivaade terminali aknast . Vajalik on, et oleks näha ssh käsk math.ut.ee serveris, teie masina nimi, ning who käsu väljund - 1p
  • Ülesanne 5: Tehke ekraanivaade terminali aknast, kus on näha ./xkey localhost:10.0 käsk ja kompromiteerunud väljund (tekst mida ohver sisestab firefox aknasse koonis ja server pealt kuulab). - 1p
  • Ülesanne 6: Tehke ekraanivaade, kus Andmeturve Linux Mint virtuaalmasina terminalis on näha ssh sisselogimise käsud ssh -A tudeng@kloon-IP ja ssh <ut_login>@math.ut.ee. - 0.5p
7. Praktikum 7 - Secure Shell (SSH) turvalisu
Sellele ülesandele ei saa enam lahendusi esitada.

Kasulikud viited

  • SSH Agent Forwarding ja sellega seotud probleemid
    • http://unixwiz.net/techtips/ssh-agent-forwarding.html
  • SSH Port Forwarding
    • SSH/OpenSSH/PortForwarding
  • ProxyCommand
    • https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused