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 jacat .ssh/authorized_keys
käsu väljundmath.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
edukaltDelta-OfficeVM
nimelisse arvutisse sisse logida meie jagatud privaatse võtmega ning sisestada käsucat .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:
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.
- TÜ tööarvutisse sisselogimine (tegu on andmeturve õppejõu tööarvutiga Delta ruumis 3033)
- 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 avanemamath.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). - Avage uus Linux Mint virtuaalmasina käsurida paralleelselt ja sisestage käsk
ssh -p 2323 tudeng@localhost
- Esimesel korral võib vaja olla nõustuda uue
fingerprint
ehk nö masina tuvastuse räsiga. Trükkigeyes
jaENTER
. - Teilt küsitakse
tudeng
kasutaja parooli, milleks on1234567890
- Kontrollige, milline on teie sisselogitud arvuti IP
ip addr l eth0
ja arvuti nimihostname
- Kontrollige
mtr
käsuga, et olete TÜ sise-võrgusmtr -b 8.8.8.8
- Ülesanne 3: - Tehke ekraanivaade
Delta-OfficeVM
virtuaalmasina terminaliwho
käsu väljundist (nähtav peab olema ka virtuaalmasina nimi käsureal). - Katkestage SSH ühendus nii
math.ut.ee
serveriga kuiDelta-OfficeVM
virtuaalmasinaga kasutades käskuexit
- Avage Linux Mint käsurida ja sisestage käsk
- Eelnev lahendus on sama väärne kui logiksite ssh-ga või VPN-iga TÜ avalikku serverisse ja siis sealt omakorda "tööarvutisse"
- 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. math.ut.ee
serveri käsurealt sisestagessh tudeng@172.17.37.113
- kontrollige
mtr
jahostname
käsuga, et tegu on sama arvutiga
- Linux käsurealt sisestage
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:
- Andmeturve arvutiklassi arvutisse sisse logimise näide (Delta 2003 arvutiklassi demo-arvuti)
- 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. - Vaatame
math.ut.ee
serveris aktiivseid kuulavaid portenetstat -tln
math.ut.ee
serveri käsurealt sisestagessh -p 2003 tudeng@localhost
ja parool on1234567890
.- Kontrollige, milline on teie sisselogitud arvuti IP
ip addr l eth0
ja arvuti nimihostname
- Kontrollige
mtr
käsuga, et olete Delta 2003 arvutiklassi võrgusmtr -b 8.8.8.8
(esimene rida peaks olema192.168.10.1)
- Linux Mint käsurealt sisestage
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 altAttached to: Bridged Adapter
ja ühendatud adaptername
validaIntel Ethernet Connection
vms. - Kui kasutate võrku ühendamiseks Wi-Fi'd, siis valige
Andmeturve Linux Mint
virtuaalmasina võrguseadete altAttached to: Bridged Adapter
ja valigeWi-Fi adapter
(näiteks IT akadeemia sülearvutite puhulIntel Dial Band Wireless
võiBroadcom 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 taustalbridge
ühendusi, seega probleemide vältimiseks on käesolevas praktikumis soovitatav viirusetõrje välja lülitada. Microsofti vaikimisi viirusetõrjeDefender
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äsudssh -A tudeng@kloon-IP
jassh <ut_login>@math.ut.ee
. Pildil ei tohi kumbki käsk küsida paroolissh
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
- Konfigureerige OpenSSH ümber kasutama ProxyCommand'i nii, et ühte serverisse ühendades loodaks tunnel läbi kolmanda masina.
- Modifitseerida tuleb
~/.ssh/config
faili
- Modifitseerida tuleb
- 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 jacat .ssh/authorized_keys
käsu väljundmath.ut.ee
serveris. - 0.5p - Ülesanne 2: - Tehke ekraanivaade, kus te saate
ssh -i officeVM-rsa tootaja@172.17.37.113
edukaltDelta-OfficeVM
nimelisse arvutisse sisse logida meie jagatud privaatse võtmega ning sisestada käsucat .ssh/authorized_keys
. - 0.5p - Ülesanne 3: -
LPF
- Tehke ekraanivaadeDelta-OfficeVM
virtuaalmasina terminaliwho
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ähassh käsk math.ut.ee serveris
,teie masina nimi
, ningwho
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äsudssh -A tudeng@kloon-IP
jassh <ut_login>@math.ut.ee
. - 0.5p
Kasulikud viited
- SSH Agent Forwarding ja sellega seotud probleemid
- SSH Port Forwarding
- ProxyCommand