OpenSSL ja sertifikaadid
- Selle praktikumi teemaks on erinevate signeeritud (CA-signed) sertifikaatide loomine, seadistamine ja kasutamine.
- Praktikumi töö toimub
Linuxi virtuaalmasinas
. - Enne praktikumi juurde asumist on soovitatav vaadata 2019 aasta loenguvideo vastava teema kohta. https://panopto.ut.ee/Panopto/Pages/Viewer.aspx?id=81fcf2fa-4c2c-467e-a99d-a9f20115ae2a
- Kui leiate juhendist vigu või midagi jääb segaseks küsige julgelt Teams keskkonans või e-maili teel.
Sissejuhatus
Enne praktilise osani jõudmist anname lühiülevaate sellest, mis on sertifikaadid ning miks neid vaja on.
Ajalooliselt kulges suur osa veebiliiklusest krüpteerimata kujul (HTTP vahendusel) ning on seetõttu pealtkuulatav. Mõnikord pole krüpteerimist vajagi, sest näiteks uudisteportaalid või Vikipeedia jagavad avalikku infot, mida ehk ei ole vaja varjata. Samas ei taga HTTP kasutamine sisu terviklikkust, mistõttu te ei saa olla kindlad kas see info, mis teie ekraanile jõudis on autentne või on keegi vahepeal pakettide sisu muutnud. Uudisteportaalis olev sisu pole salajane, aga samas saaks aktiivne ründaja, kes kontrollib interneti teenusepakkujat, mõne artikli sisu edastada muudetud kujul.
Suuremad probleemid tekivad siis, kui turvalisus ja privaatsus muutub oluliseks - näiteks kreeditkaardi või e-tervise infosüsteemi kasutamisel. Transpordikihi turbeprotokolli TLS (Transport Layer Security, varasemalt turvasoklite kihti (Secure Sockets Layer, SSL)) kasutatakse sõnumite krüpteerimiseks suhtluskanali otspunktide vahel.
TLS pakub:
- andmete konfidentsiaalsust
- serveri autentimist sertifikaadi abil
- andmete terviklust ja andmete autentimist
- (kliendi autentimist kliendisertifikaadi abil)
- (Perfect Forward Secrecy ehk PFS)
TLS kasutab andmeside konfidentsiaalsuse tagamiseks hübriidsüsteemi, mis kasutab nii sümmeetrilist kui ka asümmeetrilist krüpteerimist. Sümmeetrilist krüpteerimist läheb vaja selleks, et pakettides omavaid andmeid kaitsta. Samas ei saa ainult sümmeetrilist krüpterimise kasutades lahendada võtmejagamise probleemi. Asümmeetrilist ehk avaliku võtme krüptograafiat lähebki vaja selleks, et näiteks veebiserver ja brauser saaksid omavahel kokku leppida AES võtme. Ainult avaliku võtme krüptograafiast ei piisaks, sest see on liiga aeglane sessiooni krüpteerimiseks. On oluline aru saada, et TLS krüpteerib võrguühenduste segmente transpordikihis suhtluskanali otspunktides (näiteks veebiserveri ja brauseri vahel) ja pakette edastavad osapooled ei näe krüpteeritud pakettide sisse.
Avaliku võtme krüptograafia lahendab küll võtme jagamise probleemi, aga kohe tekib uus probleem. Kuidas on võimalik kindlaks teha, kellele vastav avalik võti kuulub? Selle probleemi lahendamiseks kasutatakse sertifikaate ja sertifitseerimiskeskuseid ehk avaliku võtme infrastruktuuri (PKI). Sertifikaat seob ära avaliku võtme ja võtme omaniku. Avalik võti võib kuuluda näiteks veebilehele (HTTPS kasutamise korral), aga ka eraisikule (näiteks ID-kaardi / Mobiil-ID). Niisugust sertifikaati on võimalik ise genereerida, aga see ei kaota usalduse probleemi, sest kolmandad isikud ei saa kindlaks teha, kas sertifikaadis olev info vastab tõele või on võltsitud. Selle probleemi lahendamiseks kasutatakse kolmandaid usaldatud osapooli ehk sertifitseerimiskeskuseid (CA - certificate authority), kes allkirjastavad sertifikaate ning kinnitavad, et vastav avalik võti kuulub sertifikaadis kirjeldatud isikule / asutusele. Selleks, et avaliku võtme infrastruktuur toimiks, peab teie operatsioonisüsteem või brauser usaldama piisavat hulka tipmisi sertifitseerimiskeskuseid (CA). Uurige enda brauseri seadistust, kui teid huvitab, missuguseid sertifitseerimiskeskusi te vaikimisi usaldate.
Kõik, mis on krüpteeritud avaliku võtmega, on dekrüpteeritav ainult vastava salajase võtmega ja vastupidi. Salajase võtmega krüpteerimist nimetatakse ka signeerimiseks ehk digi-allkirjastamiseks. Kui server saadab veebilehitsejale enda sertifikaadi, mis on krüpteeritud serveri enda salajase võtmega, siis seda sertifikaati nimetatakse enda signeeritud (self-signed) sertifikaadiks. Kuna allkirja kontrollimiseks tuleb kasutada vastavat avalikku võtit, siis pannakse see sertifikaadiga kaasa. Kui pöördute serveri poole, millel on sertifikaat, kuid mis ei ole allkirjastatud usaldusväärse CA poolt, siis on võrguliiklus küll krüpteeritud, kuid te võite suhelda osapoolega, kes ei ole see, kes väidab end olevat.
Siiski on ka enda signeeritud sertifikaadid kasutatavad olukorras, kus soovite krüpteerida andmesidet enda poolt ülesseatud veebiserveriga. Teie enda poolt allkirjastatud sertifikaadi kasutamisel kuvab brauser hoiatuse ning te peate sertifikaadi brauseris käsitsi kinnitama. Enda signeeritud sertifikaadi kasutamine usaldusväärse CA poolt väljaantud sertifikaadi asemel on tänapäeval pigem haruldane. Varasemalt kasutati seda võimalust, sest CA-de teenused on üldjuhul tasulised ning ei olnud tasuta alternatiivi. Nüüdseks saab https://letsencrypt.org/ kaudu hankida tasuta kolmanda osapoole sertifikaadi.
Praktikumi ettevalmistus
Looge endale isiklik openssl töökeskkond: (eeldame edaspidi, et see asub /home/kasutaja/openssl
)
$ sudo hostnamectl set-hostname <perenimi>.sec
$ sudo nano /etc/hosts
Muutke rida, mis algab 127.0.1.1 nii:
127.0.1.1 <perenimi>.sec mail.<perenimi>.sec www.<perenimi>.sec test.<perenimi>.sec <perenimi>
$ cd /home/kasutaja
$ mkdir openssl
$ cd openssl
$ wget http://www.ut.ee/~alop/openssl.cnf
$ mkdir certs crl newcerts private
$ echo 01 > serial
$ touch index.txt
Nende käskude tulemusena loodi mitu tühja kausta, mida edaspidiselt kasutatakse sertifikaatide loomisel erinevate failide hoidmiseks.
Järgnevalt peame seadistama sertifikaadi loomise parameetrid openssl.cnf
failis.
- Muutke
openssl.cnf
faili kaustas/home/kasutaja/openssl
: - Leidke üles
[alternate_names]
sektsioon ja seal all asendage<perenimi>
oma perekonna nimega nimega (Vajadusel lihtsustage oma nimekuju, kasutades ainult ladina tähti):
DNS.0 = *.<perenimini>.sec
DNS.1 = <perenimi>.sec
DNS.2 = www.<perenimi>.sec
DNS.3 = mail.<perenimini>.sec
- Salvestage muudatused
7.1 Enda signeeritud (Self-signed) sertifikaat
Nüüd teete enda signeeritud sertifikaadi, mida ükski teine osapool ei kontrolli ega allkirjasta.
Kontrollige, et hetkel aktiivne töökataloog oleks /home/kasutaja/openssl
ning aktiivne kasutaja on "kasutaja"!
Sertifikaadi tegemisel kasutate võtmesõna x509, mis on Rahvusvahelise Telekommunikatsiooni Liidu (ITU-T) poolt loodud standard ning käsitleb avaliku võtme infrastruktuuris kasutatavaid digisertifikaate.
$ openssl req -config /home/kasutaja/openssl/openssl.cnf -new -x509 -out sscert.pem
Pärast käsu sisestamist küsitakse teilt parooli, millega hakatakse kaitsma salajast võtit. Parool peab olema vähemalt nelja sümboli pikkune ning teil tuleb see parool meelde jätta.
Pärast parooli sisestamist tuleb teil kanda info sertifikaadile (enamike küsimuste korral võite ENTER
klahviga kinnitada vaikevalikud, mille olime eelnevalt openssl.cnf
failis seadistanud).
Oluline on Common Name
väärtuseks sisestada korrektne arvuti nimi (<perenimi>.sec). <perenimi>.sec tähistab järgnevates käskudes teie arvuti nime (hostname), mis peab olema igal pool olema sama ja võiks olla teie perekonnanimi ning lõppu lisage .sec
. Igal arvutil peaks olema unikaalne nimi, nt teie perekonnanimi, kontrollige arvuti nime failidest /etc/hostname ja /etc/hosts):
Common Name (eg, YOUR name) [] = <perenimi>.sec
Uurige loodud sertifikaati:
$ openssl x509 -text < sscert.pem | less
7.2 Apache veebiserver ja SSL
Nüüd pange arvutis jooksma Apache veebiserver ning seadistage see kasutama varasemalt loodud sertifikaati.
Apache konfiguratsioonifailid asuvad kaustas /etc/apache2
ning võimaldavad seadistada paljusid funktsionaalsusi (lisamoodulid, virtuaalserverid).
Kaust sites-available
sisaldab veebilehtede konfiguratsioonifaile. Selleks, et neid tegelikult lubada, tuleb teha link kausta sites-enabled
. Konfiguratsioonifaile võib ka otse kopeerida, kuid korduste vältimiseks tuleb teha link. Lingi saab teha ln
käsuga, kuid sõltuvuste kontrolliks on parem kasutada spetsiaalseid apache ümberseadistamise käske (informatiivne, ärge neid praegu sisestage):
# a2ensite site-name (aktiveerib virtualhosti) # a2dissite site-name (deaktiveerib virtualhosti) # a2enmod mod-name (aktiveerib mooduli) # a2dismod mod-name (deaktiveerib mooduli)
NB! Edaspidi jälgige hoolikalt, kas käsud tuleb käivitada tavakasutaja ($) või root kasutaja (#) õigustes!
Installeerige Apache veebiserver ja konfigureerige see SSL-i kasutama (<perenimi>.sec
on taas teie arvuti nimi):
$ sudo apt update (soovitav kasutada alati enne installeerimist) $ sudo apt install apache2 $ sudo a2enmod ssl $ sudo a2enmod cgi - lisage /etc/apache2/apache2.conf faili lõppu (enne "IncludeOptional sites-enabled/" rida) järgnev rida: ServerName <perenimi>.sec $ sudo service apache2 restart $ sudo service apache2 status
Apache uuestikäivitamise ajal ei tohi ühtegi viga tulla. Kui siiski tuleb siis parandage, kuni enam ei ilmu. Apache staatust soovitame kontrollida pärast igat Apache restarti. See aitab veenduda, et teenus käivitus ilma probleemideta.
NB! Apache veateateid saab täpsemalt uurida logi failist asukohas: /var/log/apache2/error.log
!
Looge uus ssl kaust Apache kausta sisse ning kopeerige sinna oma sertifikaat ja salajane võti:
$ sudo mkdir /etc/apache2/ssl $ cd /home/kasutaja/openssl $ sudo cp sscert.pem /etc/apache2/ssl/server.crt $ sudo cp privkey.pem /etc/apache2/ssl/server.key
Muutke Apache SSL virtuaalhosti konfiguratsioonifaili /etc/apache2/sites-available/default-ssl.conf
. Lisage järgmine rida (näiteks kohe pärast ServerAdmin webmaster@localhost
rida):
ServerName <perenimi>.sec:443
kus <perenimi>.sec on teie arvuti nimi ja seadistage sertifikaadi ja võtme asukohad korrektseks:
SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key
Nüüd lülitage Apache virtuaalhosti SSL tugi sisse:
$ sudo a2ensite default-ssl $ sudo service apache2 restart
Apache peaks nüüd käivitamisel küsima salajase võtme parooli. Kindlasti kontrollige, et Apache läks korrektselt tööle (vihje: kontrollige teenuse staatust).
NB! Kuna Apache küsib parooli, siis arvuti taaskäivitamisel apache enam automaatselt tööle ei lähe. Arvuti uuesti käivitamisel jääb protsessitabelisse ps ripakile parooliküsimine. (/bin/bash /usr/share/apache2/ask-for-passphrase <perenimi>.sec:443 RSA
) Seetõttu tuleb hiljem arvuti taaskäivitamisel Apache protsess kill käsuga seisata ja Apache teenus uuesti käivitada käsitsi: sudo service apache2 start
Testige jooksva süsteemi sertifikaadi olemasolu allpool oleva 'openssl s_client
' käsu abil: (parandage kuni vigu ei esine ja saate teha GET /
päringu)
$ openssl s_client -host <perenimi>.sec -port 443 -showcerts
Kui soovite kasutada mõne teise arvuti veebiserverit, siis tekitage /etc/hosts
faili rida:
192.168.10.YYY XXX
, kus XXX on võõra arvuti hostname <naabri-perenimi>.sec ja asendades 192.168.10.YYY võõra IP'ga. NB! See osa töötab ainult bridge
võrguseadistuse korral ja praktikumis aja kokkuhoiu mõttes ei ole kohustuslik.
Käivitage Firefox veebibrauser ja avage oma masinas veebiserveri lehekülg: https://<perenimi>.sec/
. Veebibrauser peaks sertifikaadi üle kurtma. Vali Advanced
-> Accept the Risk and Continue
Pärast veebibrauseri taaskäivitust ei tohiks sertifikaadi üle enam kaebusi tekkida.
Uurige Firefox veebibrauseris aktiivseid seritifikate (Edit
-> Preferences
-> Privacy & Security
-> Certificates
-> View Certificates
-> Servers
) - leidke sealt enda loodud sertifikaat. Nüüd kustutage see sertifikaat.
Nüüd kustutage ka varasemalt loodud sertifikaat ja võti: (kontrolli, et oled "kasutaja")
$ cd /home/kasutaja/openssl $ rm privkey.pem sscert.pem
7.3 Sertifitseerimisorgan - Certification Authority (CA)
Sertifitseerimisorgan on usaldatav kolmas osapool, kelle ülesanne on verifitseerida asutuste ja süsteemide sertifikaate. Sertifitseerimisorgan kontrollib üle sertifikaadi taotleja (asutuse või isiku) identiteedi ning allkirjastab väljastatava sertifikaadi kinnitamaks, et see sertifikaat on sertifitseerimisorgani poolt üle kontrollitud ja usaldatud.
Nüüd tehke sertifikaadi loomine uuesti läbi, aga seekord loote lisaks ka sertifitseerimisautoriteedi sertifikaadi ning kasutate seda veebilehe sertifikaadi allkirjastamiseks.
Tekitage sertifitseerimisorgani (Certification Authority, CA) sertifikaat. Common Name
väärtuseks määrake Sertifitseerimiskeskus
(parooliks pange caparool
)
$ openssl req -new -x509 -days 3650 -keyout /home/kasutaja/openssl/private/cakey.pem -out /home/kasutaja/openssl/cacert.pem -config /home/kasutaja/openssl/openssl.cnf
Nüüd lisage loodud sertitseerimiskeskuse sertifikaat Firefox usaldatud sertifitseerimiskeskuste nimekirja. Selleks tuleb minna "Edit
-> Preferences
-> Privacy & Security
-> Certificates
-> View Certificates
-> Authorities
-> Import..."
ja valida importimiseks cacert.pem
ning märkida, et usaldatakse selle sertitseerimiskeskuse poolt välja antud sertifikaate
(tehke linnuke kõigi (2) valiku juurde).
Kui see on tehtud, siis teie veebibrauser usaldab kõik antud sertifitseerimiskeskuse poolt väljastatud sertifikaate ning enam ei teki hoiatust. Kui keegi tahab tulevikus enda veebilehe / kodulehe jaoks usaldusväärset sertifikaati saada, siis peaks selle allkirjastama usaldusväärne sertifitseerimiskeskus. Enamasti küsivad suured sertifitseerimiskeskused sertifikaadi allkirjastamise eest raha, aga teatud tingimustel on võimalik saada ka tasuta allkirja. Seda võimalust pakub näiteks Let's Encrypt.
Järgmise sammuna tekitage enda veebilehele uus sertifikaadipäring. Selle loomisel peaks parooliks seadistama serveriparool
ning Common Name
väärtuseks panema kindlasti: <perenimi>.sec
(ehk hostname)
$ openssl req -new -keyout newkey.pem -out newreq.pem -days 1095 -config /home/kasutaja/openssl/openssl.cnf
(ignoreerige (s.t. jäta tühjaks) "extra" attributes - challenge password ... )
Kasutades CA võtit väljastage sertifikaat (minge selle jaoks openssl kausta, sest siis on kõik vajalikud failid samas kaustas):
$ openssl ca -config /home/kasutaja/openssl/openssl.cnf -policy policy_anything -out newcert.pem -infiles newreq.pem
Eelmise käsu käivitamisel küsitakse teilt cacert.pem
faili parooli milleks eelnevaks seadistasime caparool
Kopeerige uued sertifikaadid Apache kausta:
$ sudo cp newcert.pem /etc/apache2/ssl/server.crt $ sudo cp newkey.pem /etc/apache2/ssl/server.key $ sudo cp cacert.pem /etc/apache2/ssl/cacert.crt
Seadistage failis /etc/apache2/sites-enabled/default-ssl.conf
SSLCACertificateFile
järgmine direktiiv ja eemaldage selle rea eest ka kommentaari märgistus #
SSLCACertificateFile /etc/apache2/ssl/cacert.crt
Tehke Apache teenusele taaskäivitus:
- Apache küsib nüüd käivitades serveri sertifikaadi parooli milleks eelnevalt seadistasime
serveriparool
$ sudo service apache2 restart
- Testige uuesti
s_client
abil,$ openssl s_client -host <perenimi>.sec -port 443 -showcerts
- Testige uuesti
veebibrauseriga
.- Nüüd ei tohiks veebilehitseja enam sertifikaadi üle kurta. Kui kurdab kontrollige eelnevaid tegevusi enne edasi minemist.)
Seadistame Apache sertifikaadi infot väljastama
Lisage / Muutke väärtused / Kommenteerige sisse (s.t. eemaldage kommentaar) failis /etc/apache2/sites-enabled/default-ssl.conf
järgmised read:
SSLVerifyClient optional SSLVerifyDepth 2 SSLOptions +StrictRequire <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars +ExportCertData </FilesMatch>
Tehke Apache teenusele veel üks taaskäivitus.
Tekitage (rooduna) CGI skript $ sudo nano /usr/lib/cgi-bin/env.cgi
järgmise sisuga:
#!/bin/bash cat <<EOF Content-type: text/html <html> <pre> `env` </pre> </html> EOF exit 0
Pange chmod
abil sellele skriptile ka execute bitt kõigile kasutajatele
$ sudo chmod +x /usr/lib/cgi-bin/env.cgi
Testige, et see töötab veebibrauseri kaudu (https://<perenimi>.sec/cgi-bin/env.cgi). Leht peaks väljastama info brauseri kasutaja töökeskkonna kohta.
7.4 Kliendisertifikaat
Selles ülesandes vaatame, kuidas lisaks veebiserverile on võimalik ka kasutajale sertifikaat luua ning seda kasutaja autentimisel kasutada. Igapäevaselt puutute te kliendisertifikaadil põhineva autentimisega kokku, kui te kasutate autentimiseks ID-kaarti või Mobiil-ID. Kliendisertifikaadi kasutamist illustreeritakse järgneval joonisel:
Järgmiseks ülesandeks ongi kliendisertifikaadi genereerimine. Kontrollige, et asute töökataloogis /home/kasutaja/openssl
ning seejärel kontrollige, et olete õige "kasutaja" õigustes. Kopeerige ridasid ühekaupa!
Kliendi Common Name on nüüd füüsilise isiku nimi ehk teie enda täisnimi.
Klient tekitab sertifikaadi taotluse ja CN väljale paneb enda täisnime (ilma täpitähtedeta). Parooliks võiksite määrata kliendiparool
.
$ openssl req -new -keyout klientkey.pem -out klient.pem -days 360 -config /home/kasutaja/openssl/openssl.cnf
Klient "saadab" taotluse CA-le (fail klientkey.pem) ning selle põhjal genereerib CA kliendile sertifikaadi, allkirjastab selle ja "saadab" tagasi kliendile (klientcert.pem). Järnev käsk küsib jälle CA sertifikaadi parooli milleks eelnevalt seadistasime caparool
$ openssl ca -config /home/kasutaja/openssl/openssl.cnf -policy policy_anything -out klientcert.pem -infiles klient.pem
Klient konverteerib sertifikaadi veebibrauseri jaoks sobivasse PKCS#12 formaati (nüüd võiksite parooliks seadistada samuti kliendiparool
). Järgnevalt küsitakse teie käest ekspordi parooli, selle võite tühjaks jätta (hiljem brauserisse kliendisertifikaati importides jätke ka parooliväli tühjaks):
$ openssl pkcs12 -export -in klientcert.pem -inkey klientkey.pem -certfile cacert.pem -name "test" -out test.p12
Importige sertifikaat (test.p12
) brauserisse (Edit
-> Preferences
-> Privacy & Security
-> Certificates
-> View certificates
-> Your Certificates
-> Import...
)
Pange brauser kinni ja siis uuesti käima. Avage veebibrauseris uuesti https://<perenimi>.sec/cgi-bin/env.cgi
lehekülg. CGI väljundisse peaks ilmuma info kliendiserdilt.
Korrake kliendisertifikaadi lisamise tegevust Google Chrome veebilehitsejas. Chrome saab linux'is paigaldada käsuga sudo apt install chromium-browser
. Kui Chrome ei näita (rohelist, korrektset) https-i, siis tasub ka Chrome sertifikaatide nimekirjas anda sertifitseerimiskeskusele usaldus (sertifikaatide nimekiri
-> Authorities
-> org-University of Tartu
-> kolme punkti koolon paremal
-> edit
-> lisada usaldus ja kasutus
-> taaskäivitage Chrome
).
Praktikumi ülesande lahenduseks esitage täissuuruses ekraanivaade virtuaalmasina https://www.<perenimi>.sec/cgi-bin/env.cgi
leheküljest FireFox
veebilehitsejas ja https://mail.<perenimi>.sec/cgi-bin/env.cgi
Google Chromium
browseris. Lahednusel peab kindlasti näha ja esile tõstetud
(märgistatud) olema SSL_CLIENT_S_DN
rida, mis peab sisaldama teie kliendisertifikaadis leiduvaid kliendi kohta käivaid andmeid (teie ees- ja perekonna nime).
Korrektne lahendus peaks sarnanema järgneval pildil kujutatule:
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 kaks punkti. Praktikumi ülesanne võiks valmis saada praktikumi lõpuks, aga juhul kui see ei õnnestu, siis on võimalik lahendust esitada nädala jooksul praktikumi toimumisest.
Praktikumi ülesande lahenduseks esitage täissuuruses ekraanivaade virtuaalmasina https://www.<perenimi>.sec/cgi-bin/env.cgi
leheküljest FireFox
veebilehitsejas ja https://mail.<perenimi>.sec/cgi-bin/env.cgi Google Chrome
browseris. Ekraanivaatel peab kindlasti olema näha ja esile tõstetud
(märgistatud olema) SSL_CLIENT_S_DN
rida, mis peab sisaldama teie kliendisertifikaadis leiduvaid kliendi kohta käivaid andmeid (teie ees- ja perekonna nime).
Lahendusi võtame vastu järgmistes failiformaatides: .pdf, .jpg, .png.
7. Praktikum 7 - SertifikaadidKodune ülesanne - Seansikaaperdus
Ülesande lahendamiseks aega 1 nädal.
Käesoleva nädala praktikumi ülesandeks on läbi viia Cookie hijacking
- eesti keeles "küpsise vargus" (http://www.vallaste.ee) või "brauserikoogi näppamine" (https://akit.cyber.ee)
Küpsis
- Internetis tähendab see sõna väikest andmeplokki (tekstifaili), mille veebiserver saadab teie veebibrauserile ja mis salvestatakse teie arvuti kõvakettale. Edaspidi iga kord, kui brauser pöördub uuesti sama veebisaidi poole, saadab ta sinna ka küpsise. Sõltuvalt küpsise tüübist ja brauseri seadetest võib brauser küpsise vastu võtta või sellest keelduda. Kasutaja saab ka ära määrata, kui kaua küpsis kõvakettal säilitatakse. Informatsioon, mida küpsised sisaldavad, võib olla näiteks sisselogimise või registreerimise info, ostukorv veebi-kaupluses, kasutajavalikute menüü vms. Kui veebiserver saab brauserilt küpsist sisaldava infonõude, siis kasutab server küpsisesse salvestatud andmeid ja saadab nende alusel just teile sobivat informatsiooni. Küpsiseid hoitakse töö ajal tavaliselt ajutistes (TEMP) failides ja kui te brauseri välja lülitate, siis küpsised kas kustutatakse või salvestatakse kõvakettale (kui nende "aegumistähtaeg" pole veel kätte jõudnud). Küpsised ei loe informatsiooni teie kõvakettalt ega saada teie elulugu "pädevatele organitele". Küll aga võib küpsiseid saatva veebilehe omanik kasutada neid andmekaevandamiseks ja müüa kogutud andmeid kolmandatele osapooltele. Küpsised kuuluvad nn hallvara hulka, mis ei ole otseselt ohtlik, aga võib siiski ebamugavusi tekitada. Näiteks võib teie postkasti võib hakata saabuma ohtrasti soovimatut reklaami. Sellepärast analüüsivad viirusetõrjeprogrammid lisaks viirustele ja ussidele ka küpsiseid ja pakuvad kasutajale võimalust ise otsustada, millised küpsised alles jätta ja millised kustutada. Küpsised on oma nime saanud Ameerikas populaarsete õnneküpsiste (fortune cookie) järgi. Küpsiste valmistamise ajal pannakse mõne küpsise sisse paberitükike, millele on rikkust, õnne vms ennustavad kirjaread. http://www.vallaste.ee/
Eesmärk: Läbi viia edukas seansikaaperdusrünne https://courses.cs.ut.ee ja https://ois2.ut.ee lehtede vastu.
Ülesanne: Logi sisse enda põhiarvutis Mozilla FireFox
veebilehitsejas lehele https://courses.cs.ut.ee ja https://ois2.ut.ee ning tutvu enda küpsiste infoga. Selleks vajuta veebilehtsejas klaviatuuri nuppu F12
mis avab teile täiendavate tööriistade menüü (nn. Web Developer Tools). Avanenud aknas vali Storage
-> Cookies
ja otsi üles rida COURSESSID
sealt kopeeri sinu courses sessiooni võti (nn küpsise info).
Ava enda Andmeturve Linux Mint
virtuaalmasin ja paigalda seal endale Chrome
vabavaraline versioon Chromium
veebilehitseja
sudo apt update sudo apt install chromium-browser
Järgnevalt mine Chromium
veebilehtisejas lehele https://courses.cs.ut.ee ( NB! ära logi veel sisse) ja vajuta uuesti F12
-> (>>
menüü) -> Application
-> Cookies
ning otsi üles kirje COURSESSID
, mille väärtus kopeeri enda masina FireFox
veebilehtsejast. Tee lehele värskendus - F5
ja veendu, et nüüd oled kenasti virtuaalmasinas ilma parooli sisestamata https://courses.cs.ut.ee lehele sisse loginud.
Tulemus: Tehke ekraanipilt õnnestunud küpsise kopeerimisest FireFox veebilehitsejast Andmeturve Virtuaalmasina Chrome (Chromium) veebilehitsejasse https://courses.cs.ut.ee veebilehel.
Näidislahenduse pilt (ootame vastuseid sarnases formaadis):
Korda tegevust https://ois2.ut.ee lehel (Vihje: ÕIS2 kasutab cookie asemel Local Storage
-> session_token
nimelist kirjet sessiooni tuvastamiseks. Kirje tuleb teil ise luua õige väärtusega).
Esitada: https://courses.cs.ut.ee
ja https://ois2.ut.ee
veebilehtede ekraanipildid eduka seansikaaperdamisest vastavalt juhendile (näidislahendusele). Identifitseerimise võti peab olema pildil nähtav ja kattuma põhimasinas ja virtuaalmasinas (võti võib turvakaalutlustel olla osaliselt varjatud).
Koduse ülesande lahendus tuleks esitada aine kodulehelt. Korraga saab esitada ainult ühe faili, korduv lahenduse esitamine kirjutab eelmise lahenduse üle ning seetõttu tuleb vajaduse korral lahendus kokku pakkida üheks failiks.
22. Kodune ülesanne 7 - KüpsisedLisamaterjalid
- OpenSSL
- Self-signed sertifikaat
- Muud