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

Andmeturve 2019/20 kevad

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

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). Käesolevas ja mitmed järgnevas vaatame aga kuidas üle 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 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 kasutad aolevas Mint 19.3-s võib kasutada ka käsku sudo hostnamectl set-hostname perenimi, pärast mida on vaja terminal taaskäivitada muduatuse nägemiseks. Teil peaks olema juba hostname muudetud 1. praktikumi ülesande 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.

Lisaks on mugavam, kui sooritate antud praktikumi kasutades oma läpakaid. Klassis olevate arvutitega peate tegema paar lisasammu.

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

Töö toimub Linux Mint virtuaalmasinas. Kui teil on virtuaalmasinaga probleeme võite alla laadida Praktikum1 juhendis oleva lingi abil või küsige ova uuesti õppejõult.

5.1 Praktikumi järgnevate tegevuste ettevalmistus

1. Ühendage enda virtuaalmasin klassi võrku. Selleks peab virtuaalmasina võrguadapteri tüübiks olema bridged adapter (vaikimisi on "NAT").

  • Lülitage enda Andmeturve Linux mint virtuaalmasin välja power off.
  • Ühendage enda sülearvuti 2003 arvutiklassi kaabliga võrku (kaablivõrk on stabiilsem kui WiFi järgnevates harjutustes). Laual olevad USB type-C kaablid mis ühenduvad monitori külge jagavad teile ka ethernet ühendust ("TPLINK USB adapter"). Alternatiivina töötavad ka kõik harjutused ükendudes klassi Wi-Fi võrku nimega Andmeturve-2GHz või Andmeturve-5GHz salasõna LTAT.06.002.
  • Kui te kasutate klassi võrku ühendamiseks võrgukaablit, siis valige vastava virtuaalmasina võrguseadete alt Attached to: Bridged Adapter ja ühendatud adpter name valida Intel Ethernet Connection vms.
  • Kui kasutate klassi 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, blokeerivad taustal bridge ühendusi, seega probleemide vältimiseks on käesolevas praktikumis soovitatav viirusetõrje välja lülitada.

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.

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

$ sudo ifdown eth0
$ sudo ifup eth0

5.2 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

Õnnestunud sisenemise järel sulgege ühendus (käsuga exit). 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).

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

Praktikumi ü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.

5.3 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 eemal oleva pilve-masinasse. 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.

%red& Lae alla failid Attach:officeVM-rsa ja Attach:officeVM-IPrsa courses serverist Linux Mint virtuaalmasinasse.

Pärast allalaadimist peame muutma failide õiguseid, et privaatvõti ei oleks teistele kasutajatele loetav:

$ chmod 700 Downloads/officeVM-rsa
$ chmod 700 Downloads/officeVM-IPrsa

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

$ ssh -i Downloads/officeVM-rsa tootaja@172.17.37.5

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

Praktikumi ülesanne 2 - Tehke ekraanivaade, kus te saate ssh -i officeVM-rsa tootaja@172.17.37.5 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.5 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.

$ ssh -i Downloads/officeVM-IPrsa tootaja@172.17.37.5

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.

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

$ ssh-keygen -p

Mida tuleb teha võtme kompromiteerumisel?

5.4 SSH X11 Forwarding

Ü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 ja klient. Tehke paaris ning leppige rollid omavahel kokku.

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 +

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

(Eelmises käsus peaks serveri.IP.aadress aadress olema näiteks 192.168.10.123 ehk 192.168.10.X alamvõrgust)

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

$ 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 kompilerisid (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 mõned käsud, aga ole ettevaatlik, teid kuulatakse pealt!

Praktikumi ülesanne 3 - Tehke ekraanivaade terminali aknast, kus on näha ./xkey localhost:10.0 käsk ja kompromiteerunud väljund (tekst mida ohver sisestab firefox aknasse ja server pealtkuulab).

5.5 SSH õigetpidi edastamise ülesanne

Selles ülesandes on teil on vaja töötada jälle paarides arvuti_1 ja arvuti_2 ning õppejõud on teile ette valmistanud kolmanda masina IP-ga 172.17.37.5 kasutaja:tudeng parool 1234567890

Loome uue SSH-tunneli masinasse arvuti_2 ning määrame võrguliikluse edasi suunamise tunneliga samas suunas. Tunneli alustanud arvutis suuname porti 2323 saabuva liikluse (läbi tunneli) ümber masinasse 172.17.37.5 porti 23:

$ ssh -L  2323:172.17.37.5:23 tudeng@arvuti_2

(asendage arvuti_2 reaalsete ip-aadressitega ja sisestage arvuti_2 parool). Nüüd teie virtuaalmasina teises terminali aknas jooksutage "telnet 127.0.0.1 2323" sisestage 172.17.37.5 kasutajatunnus (tudeng) ja parool (1234567890). Mis masinasse telnet suunati? (hostname, ip a)
Sisestage kontrollimaks käsk who kes kuhu on sisse loginud:

$ who 

Praktikumi ülesanne 4 - Tehke ekraanivaade terminali aknast. Vajalik et oleks näha teie masina nimi, telnet käsk ning käsu who väljund.

5.5 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

5.6 SSH-agendi edasisuunamine (Agent forwarding)

Selles ülesandes on teil on vaja valida teise tudengi virtuaalmasin arvuti_2 ja õppejõu antud arvuti_3 (IP:172.17.37.5 kasutaja:tudeng parool: 1234567890

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@arvuti_2
$ ssh-copy-id tudeng@172.17.37.5

NB! arvuti2 ei tohiks hetkel saada parooli sisestamata ühenduda arvutisse 3.

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@arvuti_2

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

$ ssh-add -l

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

Nüüd peaks arvuti_1 kasutaja sisestama arvuti_2 SSH terminalis (avatud -A võtmega) ja edasi liikuma masinasse arvuti_3 (172.17.37.5) ilma, et arvutis_2 oleks olemas tema privaatvõtit-

$ ssh tudeng@172.17.37.5

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 2020 Linux Mint virtuaalmasinaga tööle palun saata lahendus alo.peets@ut.ee ja teenid boonuspunkte.

Praktikumi ülesanne 5 - Tehke ekraanivaade, kus arvuti_1 ssh terminalis on näha ssh sisselogimise käsud ssh -A tudeng@arvuti_2 ja ssh tudeng@172.17.37.5. Jagage sama ekraanipilti grupiliikmete vahel.

Veel SSH võimalusi

SSH kaudu teises masinas programmide käivitamine (sisend/valjund on ümbersuunatavad!): enne katsetamist tekitage vastavad failid!:

$ ssh kasutaja@teinemasin "cat fail.tar | tar xf -" 
$ ssh kasutaja@teinemasin "tar cf - /mingi/kataloog | dd of=fail.tar" 
$ ssh root@teinemasin "find / -user root -perm +4000 -print0 | xargs -0 ls -l"

Lisaülesanne 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!

Lisaülesanne 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.

Tagasiside

Praktikumi lõpus palume anda tagasisidet, sest see võimaldab meil antud praktikumi ja ka järgmisi praktikume paremaks muuta. Tagasiside on anonüümne ja tagasiside vormi leiate järgneva lingi abil: tagasiside ankeet.

Praktikumi ülesanded

Praktikumi ülesannete lahendamine annab ühe punkti. Praktikumi ülesanne võiks valmis saada praktikumi lõpuks, aga juhul kui see ei õnnestu, siis on võimalik lahendust esitada tähtajani 18. märts.

Antud praktikumi eest on võimalik saada maksimaalsed punktid ainult siis kui te osalesite praktikumis. Seda praktikumi on tülikas iseseisvalt läbi teha.

  1. Ülesanne: Praktikumi arvestuse saamiseks tuleb esitada viie (5) praktikumiarvestuse ülesande ekraanipildid. Iga grupiliige võib esitada enda pildid, kuid sellisel juhul peate ära märkima kes teie grupi liikmed olid). Pakkige need pildid kokku faili ning laadige praktikumi lahendusena üles.

Lahendusi võtame vastu järgmistes failiformaatides: .zip, .pdf.

5. Praktikum 5 - SSH turvalisus
Sellele ülesandele ei saa enam lahendusi esitada.

Kodune ülesanne

Koduse ülesande lahendamine annab ühe punkti. Lahenduse esitamiseks on aega järgmise nädala kolmapäeva õhtuni (23:59). Koduse ülesande lahendus tuleb esitada aine kodulehelt. Küsimustele vastuste leidmiseks võib vaja minna lisamaterjalide, mille leiate allpool olevatest viidetest.

Kõigepealt peate oma Linux Mint virtuaalmasina võrguseadistuse tüübiks tagasi seadistama NAT (praktikumis seadistasime bridge mis teatud võrguühendustega ei tööta).

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)

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.

Kõigepealt peate oma Linux Mint virtuaalmasina võrguseadistuse tüübiks tagasi seadistama NAT (praktikumis seadistasime bridge mis teatud võrguühendustega ei tööta). Mõlema lahenduse jaoks peaksite olema väljaspool TÜ sisevõrku ehk kasutama ut-public nimelist Wi-Fi võrku ja kasutama Linux käsurida (soovitavalt praktikumi Mint virtuaalmasin).

  1. TÜ tööarvutisse sisselogimine (tegu on andmeturve õppejõu tööarvutiga J. Liivi 2 ruumis 306)
    1. Avage Linuxi käsurida ja sisestage käsk ssh -L 2323:172.17.37.5:22 <ut_login>@math.ut.ee , kus <ut_login> asendage oma TÜ kasutajatunnusega ja pärast käsu sisestamist küsitakse teie ÕISi parooli (sisestage see).
    2. Avage teine Linux virtuaalmasina käsurida paralleelselt ja sisestage käsk ssh -p 2323 tudeng@localhost
    3. Teilt küsitakse tudeng kasutaja parooli, milleks 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 TÜ sise-võrgus mtr -b 8.8.8.8
      1. Eelnev lahendus on sama väärne kui logiksite ssh-ga või VPN-iga TÜ avalikku serverisse ja siis sealt omakorda "tööarvutisse"
      2. Linux käsurealt sisestage ssh <ut_login>@math.ut.ee , kus <ut_login> teie TÜ kasutajatunnus ja kui küsitage sisestage enda TÜ ÕISi parool.
      3. math.ut.ee serveri käsurealt sisestage ssh tudeng@172.17.37.5
      4. kontrollige mtr ja hostname käsuga, et tegu on sama arvutiga
  2. Andmeturve arvutiklassi arvutisse sisse logimine (J. Liivi 2-123 arvutiklassi arvuti)
    1. Linux käsurealt sisestage ssh <ut_login>@math.ut.ee , kus <ut_login> teie TÜ kasutajatunnus ja kui küsitage 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
    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 1.1.1.1 (esimene rida peaks olema 192.168.10.1)

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 nö vastuspaketid seest alustatud ühendustele, sama kehtib meie NAT ruuteritega. Ühenduse loomiseks on vaja mingisugust "avalikku" serverit (mõlemale ligipääsetavat).

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

$ 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. Selle 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Ü kasutatunnus ja parool. Kui olete math.ut.ee-s (vaikimisi IPv6!), siis sisestage järgnev käsk:

$ ssh kasutaja@localhost -p 23XXX 
$ who

Koduse ülesande arvestus - Tehke ekraanivaade terminali aknast. Vajalik et oleks näha teie masina nimi, ssh käsk math.ut.ee serveris ning who käsu väljund

Juhul kui lahendus on ainult teksti kujul, siis saate lisada selle kommentaarina. Sellisel juhul on lahenduse esitamiseks vaja lisada tühi fail, sest antud vorm nõuab lahenduse esitamisel faili esitamist. Lahendusi võtame vastu järgmistes failiformaatides: .txt, .pdf, .zip, .rar jne.

20. Kodune ülesanne 5 - SSH LPF & RPF
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