Institute of Computer Science
  1. Courses
  2. 2017/18 spring
  3. Computer Security (LTAT.06.002)
ET
Log in

Computer Security 2017/18 spring

  • Pealeht
  • Loengud
  • Praktikumid
  • Referaat
  • Kirjandus
  • Uudised
  • Lingid

Sissejuhatus töökeskkonda

Selle praktikumi eesmärgiks on valmistada ette pehmem maandumine järgnevates praktikumides. Kuna enamus järgnevaid praktikume toimub Linuxi keskkonnas ning kasutab üldisi Unixi põhimõtteid, siis tuletame meelde Linuxi käsurea kasutamist. Samuti on varasematel aastatel probleeme tekitanud vähene võrgutehnoloogia alane ettevalmistus, seega käsitleme veidi ka seda.

Kuna soovituslikuks eeldusaineks on operatsioonisüsteemid, siis me eeldame, et pärast sissejuhatavat praktikumi saavad kõik tudengid Linuxi käsurea kasutamisega hakkama. Juhul kui käsurea kasutamisega on probleeme, siis tuleb vastavad oskused iseseisvalt omandada.

Vajalikud oskused

  • käsurea abil failisüsteemis navigeerimine
  • käsurea efektiivne kasutamine (tab completion, ajalugu, eelmine käsk, ctrl + r, pipe)
  • tarkvarapakettide uuendamine, paigaldamine, eemaldamine
  • käsurealt toimiva tekstiredaktori kasutamine (nano või vim)
  • otsingu kasutamine (find, grep)
  • failiõiguste haldamine
  • info otsimine uute käskude või parameetrite kohta (man, google)
  • ip aadressi ja dhcp seadmine, võrguliidese haldus
  • ssh ja scp kasutamine algtasemel

Töökeskkonna ettevalmistamine

Alustuseks tehke sellele veebilehele reload (F5)!

LTAT.06.002 Andmeturve aine praktikumides kasutame Oracle VirtualBox'i, et jooksutada erinevaid virtuaalmasinaid. Virtuaalmasin on simuleeritud arvuti, mis käivitatakse teise arvuti sees. Võrreldes päris arvuti ja erinevate kõvaketaste kasutamisega teeb see meie jaoks lihtsamaks mitmete praktikumirühmade haldamise. Samas on virtuaalmasin siiski täisväärtuslik arvuti, millel on oma (virtuaalne) riistvara, BIOS, kõvaketas ja operatsioonisüsteem. Et illusioon oleks oleks täielik, võib käivitatud virtuaalmasina akna suurendada üle ekraani.

Esimeses ja paljudes järgnevates praktikumis kasutame Linux Mint 18.3 operatsioonisüsteemiga virtuaalmasinat. Esimeseks ülesandeks ongi virtuaalmasina paigaldamine.

  1. Käivita VirtualBox 5.2.6
    1. Kui sul ei ole Virtualbox paigaldatud isiklikku arvutisse või kasutad vanemat versiooni siis palun uuenda/paigalda Virtualbox.
    2. Täiendavalt soovitame paigaldada ka Extension Pack. Seda saab teha kas VirtualBox File menüüst uuendusi otsides või siis otse Extension Pack Virtualboxi lehelt alla laadides. Arvutiklassi arvutites on see juba paigaldatud.
    3. NB! VirtualBox ja Extension Pack versioonid peavad olema samad!
  2. Klõpsa VirtualBoxi akna tööriistaribal File -> Import Appliance
  3. Klõpsa avanenud akna parempoolses osas oleval väikesel rohelise kolmnurgaga kausta ikoonil
  4. Avanevas aknas liigu USB andmekandjale, otsi üles fail andmeturve_2018.ova ning vajuta Next. PS! Andmekandja saad õppejõult või lae alla vajalik fail siit.
  5. Järgmises aknas 'PEAB'' kindlasti valima Reinitialize the MAC address of all network card muidu tekivad hiljem arvutiklassis konfliktid sama MAC aadressidega võrgukaartide vahel.
  6. Vajuta nupule Import
  7. Oota kuni impordi tegevus lõpeb, siis käivita loodud virtuaalmasin ning ürita sisse logida.
  8. Võib juhtuda, et unustate parooli, see on hea võimaluse teha meie aine esimene "häkkimine".

Unustatud Linuxi parooli asendamine

  1. Tee virtuaalmasinale restart (või käivita masin)
  2. Hoia all SHIFT klahvi
  3. GRUBi avanedes vajuta e klahvi
  4. Asenda linux /boot/vmlinuz... real kõik alates ro net.ifnames... tekstiga rw init=/bin/bash
  5. Vajuta F10 klahvi. Nüüd laetakse ühekordselt Linux root käsureale
  6. Sisesta cat /etc/passwd ja uuri millised kasutajad on arvutisse loodud (vihje: SHIFT+PG UP)
  7. Sisesta passwd kasutaja ja uus parool isherenow.
  8. Sisesta sync ja oota vähemalt 5 sekundit
  9. Sisesta exit.
  10. Sulge Virtualboxi aken ja vali Power off the machine
  11. Proovi virtuaalmasinasse sisse logida.

Linuxi käsurea meeldetuletus

Veebibrauserina on kasutusel Firefox. Jätke see brauseriaken juhendiga omale pidevalt lahti - pärastpoole teeme oma võrgu katki, nii et seda juhendit ei saa uuesti avada.

Lugege järgnev lõik läbi enne tegutsemist! Logisite sisse tavakasutajana. Selle kasutajana hakkate enamus praksides tegutsema. Administraatorikontoga root reeglina graafilisest keskkonnast sisse ei logita, juurkasutaja (root) õigusi kasutatakse mõnes üksikus vajaminevas aknas või logitakse sisse võrgust või tekstikonsoolilt. Proovime tekstikonsoolilt sisse logimist. Linuxis on kasutusel mitu erinevat virtuaalkonsooli ning nende vahet saab liikuda Ctrl-Alt-F* klahvidega. Graafiline keskkond on 7. (või tavaliselt ka 8.) virtuaalkonsoolil, seega siia tagasi saate Ctrl-Alt-F7 vajutades (kogu teie töökeskkond on alles). Lisaks sellele on tekstikonsoolid 1-6. Vajutage Ctrl-Alt-F1 ja logige sisse kasutajana kasutaja. Logige exit abil välja tagasi ja minge Ctrl-Alt-F7 abil tagasi oma graafilisse keskkonda.

Meil läheb töös enamasti vaja tekstiterminale. Graafilises keskkonnas saate avada mitmeid terminale. Ekraani alumises osas oleva paneeli vasakus ääres on terminali ikoon. Võtke omale kohe paar terminali lahti, kuna neid läheb meil sageli vaja. Lisaks saate samas terminalis avada mitu kaarti erinevate seanssidega (sakk / tab). Uue saki avamiskes saate kasutada klahvikombinatsiooni Ctrl + Shift + t. Looge prooviks mõned uued seansid ja liikuge nende vahet nii klaviatuuri kui hiire abil. Klaviatuurilt saab seda teha kahte moodi, esiteks Ctrl + Page Up või Page Down ja teiseks Alt + saki number. Seega edasipidi võite alati vajadusel uue terminali avada, kui tahate olemasoleva terminali akna lahti jätta.

Andke terminalis käsk dmesg. Meile on oluline, et see käsk tagastab lihtsalt palju ridu infot, käsk ise ja väljastatav info pole meile olulised. Esimeseks lihtsaks viisiks tagasi kerida on loomulikult kerimisribalt hiirega. Teiseks võimaluseks on kerida klaviatuuri abil - Shift+PgUp/Shift+PgDown (proovige). See Shift-Pg* töötab ka paljudes muudes kohtades, isegi tekstikonsoolil kuni sealt mujale konsoolile vahetumiseni.

Alati ei ole meil head või piisava scrollbackiga terminaliprogrammi käepärast, sestap õpime kerima ka ainult tesktiterminali vahendeid kasutades. Andke käsk (ilma $-märgita, * loe siit märkust)

$ dmesg | less

et vaadata käsu dmesg väljundit leheküljekaupa (pange tähele, et terminali scrollbacki sellest ei teki). less on Unixi programmi more täiendatud ja mugavdatud variant. Less'i kasutamine:

    nooled, PgUp/PgDn - kerimine
    / - regulaaravaldise otsimine edaspidi (proovige /APIC)
    n - järgmise otsimine
    N - eelmise otsimine
    ? - regulaaravaldise otsimine tagasisuunas
    G - faili lõppu minek
    f - sisendi (logifaili) jälgimine, et ehk tuleb veel andmeid.
        katkestab ^C
    q - quit

Failipuu uurimiseks käivitage failibrauser oma kodukataloogist (paneelil ikoon "Files"). Uurige failipuud juurkataloogist oma kodukataloogini. Kodukataloogiks on /home/kasutaja. Kasutajal pole reeglina õigust väljapoole oma kodukataloogi midagi kirjutada, välja arvatud mõnedesse ajutistesse kataloogidesse. Seega kõik kasutaja isiklikud failid ja programmide seaded on kodukataloogi all.

Uurime kodukataloogi ka käsurealt. Andke käsk

$ ls

ja peaksite nägema oma kodukataloogi sisu. Andke käsk

$ touch minutekst.txt

ja tekib fail nimega minutekst.txt. Vaadake nüüd listingut uuesti käsuga

$ ls -l

ja näete failide kohta pikemat infot (pikkus, omanik, muutmisaeg). Teie vastloodud fail on 0-pikkusega. Vaadake listingut veelkord käsuga

$ ls -al

ja näete oluliselt rohkem faile või katalooge. Punktiga algavad failid ja kataloogid on pooleldi peidetud - ei ls ega graafilised failibrauserid ei näita neid vaikimisi. Nendes punktiga failides salvestavad igasugused programmid oma kasutajapõhiseid seadeid.

Juba sisestatud käske ei pea uuesti kasutades uuesti sisse toksima - kasutada saab käskude ajalugu. Üles-alla nooltega saate sorida senistes käskudes, neid muuta ja uuesti sisestada (proovige!). Käsu redigeerimisel ei pea sisestamiseks minema kursoriga rea lõppu, Enterit võib vajutada suvalise positsioonil olles ja sisestatakse ikkagi terve rida. Sisestatavate failide ja käskude nimesid ei pea alati tervenisti välja kirjutama, vaid kasutada saab üsna paindlikku TAB-completionit (Tab-klahviga lõpetamist). Näiteks võite käsurea

ls /home/kasutaja

kirjutada, vajutades

ls /h<TAB>k<TAB>

Kui mõne koha peal ei ole lõpetamine unikaalne, siis shell piiksub ning teist korda TAB vajutades näitab variante. Valige täht või mõned, mis failinime unikaalselt määravad, ja vajutage uuesti TAB, jne. Mõnikord on abiks isegi käsitsi kirjutatud pika failinime lõpus TAB vajutada - kui shell sinna lõppu tühiku lisab, siis failinimi eksisteerib ja te olete selle õigesti kirjutanud. TAB abil saab lõpetada lisaks failinimedele ka käskude nimesid. Vajutage

ip<TAB><TAB>

ja näete käskude nimesid, mis algavad ip'ga.

Uurime lähemalt äsja avastatud käsku ip - loeme selle käsu manuali:

$ man ip

(kerimiseks on less, seega juba tuttav). Käsu man poolt kasutatava formaadi selgitust saate lugeda siit: Reading Man Pages

Redigeerime tekstifaile, nii terminalis kui graafilise editoriga. Terminalis redigeerimist läheb meil vaja root kasutajana tegutsedes, sest sellel enamasti ei ole tervet graafilist keskkonda. Terminalil on kasutada mitmeid erinevaid editore (nano, vi/vim) kuid meie valime nano (lihtsuse tõttu). Kes muud editori tunneb, võib loomulikult seda kasutada. Redigeerimine terminalist oma tekstifaili:

$ nano minutekst.txt

Kirjutage sinna sisse mõni tekstirida, et oma jutu ära tunnete, väljuge salvestamisega (^X - spikker on ekraani allääres olemas ning esimene sümbol (^) tähistab ctrl klahvi).

Redigeerime sama faili graafilise keskkonna editoriga. Avage failibrauser ja tehke topeltklikk oma faili peal, see avaneb programmiga xed. Kui ei avanenud, siis tehke faili peal parem klikk ning valige menüüst "Open With Text Editor". Redigeerige natuke oma faili ja salvestage see, aga jätke xed avatuks.

Copy-paste toimib Unix'i operatsioonisüsteemis teistmoodi kui Windowsis. Ei ole eraldi vaja Copy operatsiooni ja Paste jaoks piisab ühest hiireklikist. Nimelt kusagilt aknast teksti hiirega valimisel kopeeritakse valik automaatselt puhvrisse ning Copy on juba automaatselt tehtud. Paste jaoks tuleb mõne akna kohal vajutada keskmist hiire nuppu. Märkige veebibrauserist mingi tekst ja kleepige see hiire keskmise nupuga oma tekstifaili editoris.

Salvestage fail programmiga xed ja avage terminalis uuesti nano abil. Valige veebibrauserist mingi tekst ja asetage teise rea keskele. Selleks tuleb tekstikursor viia pastemise kohale, hiirekursori viimisest ei piisa, sest terminalis töötav rakendus ei tea reeglina midagi hiire kursorist ega pastemisest - temale on see teksti kleepimine samaväärne sellega, nagu oleks need tähed klaviatuurilt sisestatud.

Käivitage terminalis programm mc. See on terminalis töötav failihaldur, mis oskab hiirt kasutada - proovige hiirega navigeerida. Selleks, et siit rakendusest midagi hiirega kopeerida, tuleb selekteerida soovitud tekst ning Shift klahvi all hoides vajutada hiire keskmist nuppu. Pärast proovimist väljuge mc'st F10 abil. Juhul kui programm mc on paigaldamata, siis paigaldage see käsuga:

$ sudo apt install mc

** sudo käsust lähemalt

Avage oma tekstifail uuesti xed abil. Valige veebibrauserist mingi tekst oma faili asetamiseks ning asendage failis teine rida selle tekstiga. Proovides näete, et kui valite editoris teise rea kustutamiseks, siis asendab see valikupuhvri teksti ja seda ei saa enam pasteda. Seetõttu tuleks asendatav tekst kas enne valiku tegemist kustutada, või siis kasutada lühikeste lõikude kustutamiseks Backspace/Del, mitte ploki valimist.

Lisaks paigaldage ssh server, et järgmistes praktikumides oleks võimalik arvutiklassis olevate VM-de vahel ssh ühendusi luua:

$ sudo apt install openssh-server

Nüüd läheme ja tegutseme juurkasuajana. Proovime erinevaid viise kuidas saab juurkasutajaks minna. Esiteks:

$ sudo su
# pwd

Nüüd muutke root kasutaja parool ümber parooliks praktikum käsu passwd abil. Root kasutaja alt saate välja tagasi tavakasutajaks käsuga exit.

Juhul kui te root kasutaja parooli juba teate saate kasutada:

$ su
# pwd
# exit

Esiteks nägite, et juurkasuaja prompti (käsuviiba) lõpetab endise $ asemel märk #. See on tava, et näidata kasutajale, et ettevaatust, juurkasuaja prompt, teil on võimalus püstoli asemel kahuriga jalga tulistada! Teiseks oli näha, et aktiivseks kataloogiks on endiselt /home/kasutaja, seega jäi aktiivne kataloog samaks. Niisugusel viisil juurkasuajaks minnes saab mugavalt kasutada jooksvas kataloogis olevaid faile, näiteks anda vastkompileeritud tarkvara kataloogis käsk make install tarkvara paigaldamiseks süsteemi.

Nüüd minge juurkasuajaks teistmoodi:

$ su -
# pwd

Näete, et aktiivseks kataloogiks on /root ehk juurkasutaja kodukataloog. See asub mujal kui tavakasutajate kodukataloogid, kuna peab alati olemas olema, ka siis kui /home (mis võib eraldi kettal asuda) pole kättesaadav. su - on soovitav viis juurkasutajaks minekuks juhul, kui pole vaja aktiivset kataloogi säilitada vaid lihtsalt mingid tegevused administraatorina teha. Jätke juurkasutajana sisselogituks.

Root saab kasutajate faile vabalt lugeda ja muuta. Prooviks läheme muudame sedasama faili. Graafiline editor pole kasutatav (graafiline keskkond ei läinud juurkasutajale kaasa), seega tuleb kasutada terminali oma:

# cd /home/kasutaja
# nano minutekst.txt

Tegelikult pole aktiivse kataloogi vahetus üldse oluline, me võime faili ette anda otse täisteega:

# nano /home/kasutaja/minutekst.txt

(siin tuleks loomulikult TAB-completionit kasutada, et ei peaks liiga palju tippima).

Kasutaja faile saame kasutajana ka redigeerida, selleks pole vaja administraatori õiguseid. Küll aga on vaja juurkasutaja õiguseid süsteemi konfiguratsiooni muutmiseks. Redigeerime süsteemset konfifaili, muutes seal FSCKFIX=yes:

# nano /etc/default/rcS

(väljuge salvestamisega).

Juurkasutaja saab ka käivitada programme, mida tavakasutaja ei saaks. Näiteks restardime SSH teenuse vastavat init-skripti välja kutsudes:

# /etc/init.d/ssh restart

Logime nüüd välja, kuna juurkasuajaga ei tehta ühtegi üleliigset asja:

# exit

Natuke meenutusi/sissejuhatust võrgutehnoloogia teemal - edasistes praksides osutuvad sageli oluliseks IP-aadressid ja -võrgud. Teeme kindlaks oma arvuti IP-aadressi:

$ ip addr ls

Uurige väljundit ja leidke sealt üles liidese eth0 info:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:c0:df:04:7f:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.2/24 brd 192.168.10.255 scope global eth0
    inet6 fe80::2c0:dfff:fe04:7f9b/64 scope link
       valid_lft forever preferred_lft forever

Siin näites on IP-aadressiks 192.168.10.2 ning võrgumaskiks 24 (mis tähendab, et kolm esimest arvu määravad võrgu ja viimane arv arvuti numbri võrgus).

Logige ssh-ga sisse Ülikooli serverisse oma kasutaja nime ja parooliga:

$ ssh kasutajanimi@math.ut.ee

Seda, et annate käske math nimega serveris, näete käsurea viibast, kus on teise kasutaja ja teise arvuti nimi. Logige välja tagasi, et edaspidi segadust vähendada:

$ exit

Konfigureerime võrgu ringi. Me ei tee seda permanentselt, vaid ainult kuni buudini mõjuvalt, et pärast arvuti taaskäivitamist töötaks kõik edasi isegi meie vigade korral (X on teie arvuti number, läpakate korral üks pinginaaber võtab laua arvuti numbri ja teine liidab sellele 16):

$ su -
# ifdown eth0
# ip addr add 172.30.X.5/16 dev eth0
# ip link set eth0 up

Siit ifdown laseb süsteemil võrguliidese dekonfigureerida, lõpetades DHCP kliendi töö, mis muidu aadressi värskendaks, ning eemaldab liideselt kõik aadressid ja lülitab liidese tarkavara jaoks välja. Järgmine käsk lisab liidesele meie poolt määratud IP-aadressi - see on võrgust 172.30.0.0/16 ning konkreetse arvuti aadressiks on kahebaidine arv, millest esimene on arvuti number klassis ning teise fikseerime 5'ks. Viimane käsk teeb liidese tagasi aktiivseks. Kui meil oleks tegu "päris" Internetiga ühendumisega, tuleks lisaks lisada vaikemarsruuter ning määrata nimeserver, meil pole neid vaja, kuna meie võrk pole mujale ühendatud.

Juhul kui tahate vaadata oma võrguliidese seadistust, siis uurige faili /etc/network/interfaces. Konfigureerime võrgu uuesti automaatselt, et Internetti pääseda:

# ifup eth0
# exit

Sellega on juurkasutaja töö ka lõppenud. Nüüd vaadake kas teie virtuaalmasin sai uue IP. Seejärel kasutage käsku ping, et kontrollida kas internetiühendus on olemas.

Edaspidi kui praktikumide jooksul tekib võrguga probleeme, siis kõigepealt vaadake kas arvutil on võrgukaabel / wifi ühendatud. Kontrollige kas masinal on IP olemas ja kas ping toimib. Kui on probleeme, siis uurige kas virtuaalmasina võrguseadetes on kaabel ja adapter korrektselt seadistatud. Kui muu tundub korras, siis proovige liidesele restart teha käskude ifdown ja ifup abil.

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 vorm asub järgmisel aadressil: tagasiside vorm

Praktikumi ülesanded

Praktikumi ülesannete lahendamine annab kaks punkti. Praktikumi ülesanne võiks valmis saada praktikumi lõpuks, aga juhul kui see ei õnnestu, siis on võimalik lahendust esitada kuni järgmise praktikumi alguseni.

  • Ülesanne 1: Mis on praegune hostname (arvuti nimi võrgus)? (0.5p)
  • Ülesanne 2: Muuda hostname ära ja asenda vana hostname püsivalt enda perekonnanimega. Juhul kui perekonnanimi sisaldab täpitähti, siis asendaga need täppideta tähtedega. Mis käsu või käskude abil tulemuseni jõudsid? (0.75p)
  • Ülesanne 3: Muutke hostname ära ka /etc/hosts failis. Siis tehke grep kasku kasutades päring, mis kuvab teie hostname sisaldava rea /etc/hosts failist. Tehke käsust koos väljundiga ekraanitõmmis ja esitage see antud praktikumi lahendusena (PNG või JPG formaadis) courses lehel järgnevas aknas. (0.75p)

Praktikumi ülesande lahendamine annab kaks punkti ja esitamiseks on üks nädal alates praktikumi toimumisajast. Esimese ja teise ülesande lahendused esitage kommentaarina ning kolmanda ülesande lahendus lisage failina või lingina.

1. 1. Sissejuhatus - praktikumi ülesanne
Solutions for this task can no longer be submitted.

Kodune ülesanne

Koduse ülesande lahendamine annab ühe punkti. Lahenduse esitamiseks on aega üks nädal, s.t selle päeva lõpuks, mil on järgmine praktikum. Koduse ülesande lahendus tuleb esitada järgneva vormi abil.

Ülesanne 1: Loe käsu "find" juhendit (näiteks Kuutõrvajast) ja kirjuta käsk mis leiab MINT virtuaalmasinast kõik .log laiendiga failid. Lahendus peab sisaldama nii käsku kui ka käsu selgitust. Väljund ei tohiks sisaldada veateateid. (0.5p)

Ülesanne 2: Loe käsu "grep" juhendit (näiteks GNU lehelt) ja kirjuta käsk mis leiab /var/log/auth.log failist kõik read õnnestunud paroolide muutmiste kohta. Kuvada tuleb edukat parooli muutmist kirjeldavad read koos kolme eelneva reaga. Esitage lahenduseks ekraanitõmmis, mis sisaldab käsku ja käsu väljundit. (0.5p)

Juhul kui lahendus on ainult teksti kujul, siis saate lisada selle kommentaarina. Sellisel juhul on lahenduse esitamiseks vaja lisada tühi fail. Samuti võtame lahendusi vastu tekstifailina või PDF kujul.

16. 1. praktikumi kodune ülesanne
Solutions for this task can no longer be submitted.

Lisamaterjalid

  • Lugemismaterjalid:
    • UNIX Tutorial for Beginners
    • Enamkasutatavamad Unixi käsud
    • Reading Man Pages
    • Learning the shell
  • Veebikursused (MOOC):
    • edX - Introduction to Linux

* Praktikumijuhendites on sisestatavad käsud näidatud punaste kastikeste sees. Iga käsurida sellises kastikeses algab kas $ või # märgiga. Neid märke ei ole tarvis sisestada, aga need näitavad, kas käsk tuleks sisestada tavakasutaja õigustes ($) või root kasutaja õigustes (#). Jälgige seda hoolega, sest valedes õigustes käivitatud käsk võib omada kummalisi tagajärgi.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment