Skip to end of metadata
Go to start of metadata

SISÄLLYSLUETTELO


1. Kotitehtävät 

A) Oma Linux-tikku

Tehtävänanto: " Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa. Tämä kohta ei edellytä asentamista – jos kuitenkin asennat, ota ensin varmuuskopiot."

Xubuntu-livetikun teko alkoi tiistai-iltana 29.8.2017 kello 18.13 kotonani tietokoneeni (HP ProBook 450 G2 / Windows 7 SP 1) kovalevyn siivouksella, sillä tietokoneen ainoalla kiinteällä kovalevyllä oli tilaa vähemmän mitä ladattu Xubuntun iso-tiedosto tarvitsi tilaa ja mitä oli vapaana kahden gigatavun Kingston USB-tikulla. Noin 15 minuutin siivoamisella sain luotua vapaata tilaa lähemmäs 3,5 gigaa, minkä jälkeen lähti USB-livetikun luontiprosessi liikkeelle kuten Linux-palvelimet ict4tn021-5 kurssin luennolla torstai 25.8.2017 oli opastettu (Karvinen 2017).

Linux-tikun luonti

  1. Latasin Xubuntun 16.04 -version iso-tiedoston nimeltään xubuntu-16.04-desktop-amd64.iso sivulta http://ftp.lysator.liu.se/ubuntu-dvd/xubuntu/releases/16.04/release/

  2. Latasin iso-levynkuvatiedoston käsittelyyn vaadittavan UNetbootin-ohjelman sivulta https://unetbootin.github.io/ työasemani työpöydälle.

  3. Loin USB-tikulle nimeltä Tikkunen UNetboot-ohjelman avulla Xubuntuun buuttavaan USB-tikun
  4. Noin viidessä - kahdeksassa minuutissa UNetbootin ilmoitti tikun luonnin olevan valmis.

Linux-tikun käyttö (tietokoneen käynnistys)

Linux-tikun käyttökohteena oli aikaisempi kannettava työasemani (Acer Aspire 5750G / Windows 7 Pro), joka oli maannut lipastossa käyttämättömänä puolisentoista vuotta. Tämän koneen käynnistys Xubuntu sujui seuraavan laisesti:

  1. Kiinnitin USB-tikun työaseman USB-porttiin
  2. Käynnistin ensin työaseman BIOSsiin painamalla F2-näppäintä käynnistyksen alussa vaihtaakseni koneen käynnistysmedioiden järjestystä .
  3. Vaihdoin USB-alkuiset mediat ensimmäisiksi ja tallensin muutetut BIOS-asetukset.

    Käynnistysjärjestys ennen muutoksia

    Käynnistysjärjestys muutoksien jälkeen

    Muutoksien tallennus

  4. Kone käynnistyi USB-tikulta ja kysyi mitä halutaan tehdä
  5. Valitsemalla T pääsin käyttämään Xubuntua ilman sen asentamista koneelle.
  6. Valinnan jälkeen ruudulle tuli jonkin verran (virhe)ilmoituksia
  7. Lopulta Xubuntun työpöytä latautui ja työaseman kovalevyt sekä CD-asemassa oleva DVD-levy näkyivät.

B) Listaa koneen rauta

Tehtävänanto: " Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’)."

Ilman sudo-oikeuksiaKomento sudo-oikeuksin


C) Kolmen ohjelman asennus

Tehtävänanto: Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

Mietin mitä ohjelmia voisin asentaa ja ensimmäisinä tulivat mieleen työpaikallani käyttämäni alpine ja emacs. Kokeilin ensin ovatko ne valmiiksi asennettuina, eivät olleet:


Ohjelmien asennus oli suoraviivaista Xubuntun antamien ohjeiden mukaan

Koska olin aloittanut kotitehtävien aloittamisen yhtä iltaa ennen palautusta, en ehtinyt konfiguroida Alpinea täysipainoiseen sähköpostikäyttöön, mutta kävin muuttamassa asetuksista lähettäjän nimen oikeaksi.


Emacsilla kokeilin luoda ja tallentaa tekstitiedoston, mikä onnistui.


Kolmatta asennettavaa ohjelmaa en keksinyt, joten Googlasin xubuntu programs. Luin ensin ensimmäisenä hakutuloksena tulleen Feature Tour -sivun (https://xubuntu.org/tour/) Xubuntu-sivustolta (https://xubuntu.org/) saadakseni paremman käsitykseni mistä Xubuntussa on kysymys ja mitä ohjelmia löytyy valmiiksi asennettuina.

Seuraavaksi avasin toiseksi ensimmäisen hakutuloksen eli 20 applications to improve Xubuntu -sivun (http://www.everydaylinuxuser.com/2012/12/20-applications-to-improve-xubuntu.html) sivustolta Everyday Linux User (http://www.everydaylinuxuser.com/). Viidentenä listassa oli mainittu GIMP, joka on kuulemani mukaan hyvä kuvankäsittelyohjelma, joten se valikoitu kolmanneksi asennettavaksi ohjelmaksi, sillä sitäkään ei löytynyt valmiiksi asennettuna:


Asennus sujui saman kaavan mukaan kuin aikaisempien kahden ohjelman asennus:

GIMPillä onnistui kuvien aukaisu ja ruman piirroksen teko ilman sen kummempia ohjelman opetteluja.

D) Kolmen asennetun ohjelman lisenssit

Tehtävänanto: "Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvollisuuksia tuosta lisenssistä seuraa."

Alpinen käyttämä lisenssi on Apache License v 2, ja lisenssiin on linkki Alpinen sivulta http://www.washington.edu/alpine/overview/legal.html.

Lisenssi antaa oikeuden käyttää, muokata, levittää ja jakaa ohjelmaa henkilökohtaisiin tai kaupallisiin tarkoituksiin. Muokatun kohdat ohjelmasta voi julkaista millä tahansa muulla lisenssillä, mutta muokkaamattomat kohdat tulee julkaista Apache License-lisenssillä. Lisenssi velvoittaa merkitsemään muokatut kohdat lähdekoodiin. (Sass, Rami 2015).

Emacs ja GIMPin käyttävät GNU general public license version 3-lisenssiä (GNU GPL v3). Lisenssi on luettavissa Emacs -ohjelmassa (Help > Copying Conditions) ja se on luettavissa GIMPin kotisivuilla osoitteessa https://www.gimp.org/about/COPYING. GNU GPL-lisenssi antaa melkoiset vapaudet käyttää, muokata, levittää ja myydä ohjelmistoja, kunhan käyttää GNU GPL-lisenssiä. (Linux.fi: GNU GPL).

GIMPin kotisivuilla on mielenkiintoinen artikkeli nimeltä 'Selling GIMP' (https://www.gimp.org/about/selling.html) , jossa käsitellään GIMPin myymistä. Vaikka kyseessä on vapaa, ja ilmainen, ohjelmisto, GNU GPL-lisenssi ei estä jotakuta myymästä GIMPiä, ja joku voi maksaa GIMPistä vaikka sen myös ilmaiseksi saa.

E) Käytettyjen ohjelmien listaus

Tehtävänanto: "Listaa käyttämäsi ohjelmat (esim. MS Word), kunkin ohjelman käyttötarkoitus (esim. Tekstinkäsittely) ja vastaava vapaa Linux-ohjelma (esim. LibreOffice Writer). Jos johonkin tarkoitukseen ei löydy vapaata Linux-ohjelmaa, listaa sekin."

OhjelmaKäyttötarkoitusVapaa Linux-ohjelmaHuomioita
ThunderbirdSähköpostin luku- ja lähetysThunderbird
Alpine
Thunderbird valmiina Xubuntussa

FirefoxWWW-selailuFirefoxValmiina Xubuntussa
Corel Paintshop Pro X8, MS PaintKuvankäsittelyGIMP
KeePassSalasanojen säilytysKeepass2Testattu vain että ohjelma aukeaa oikein, ei sitä avautuuko Keepass-tiedosto.
PuttySSH-yhteyksien muodostusSSH
SpotifyMusiikin striimausSpotifyEi testattu asennusta, linkin mukaan pitäisi olla apt-asennettavissa.
Microsoft OneNoteMuistiinpanojen tekeminenZim
MS WordTekstinkäsittelyLibreOffice Writer
MS ExcelTaulukkolaskentaLibreOffice Calc
Notepad++TekstinkäsittelyNano, Emacs
CalculatorLaskentaCalculatorValmiina Xubuntussa

Lähteet

Karvinen, Tero 2017-08-24. Oppitunti. Linux palvelimet -kurssi. (http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op.

Linux.fi: GNU GPL. Luettavissa https://www.linux.fi/wiki/GNU_GPL. Luettu 29.8.2017.

Sass, Rami 2015-08-06. Top 10 Apache License Questions Answered. Luettavissa https://www.whitesourcesoftware.com/whitesource-blog/top-10-apache-license-questions-answered/. Luettu 29.8.2017.




2. Kotitehtävät 

Työasema: Acer Aspire 5750G (Intel Core i5-2420M 2.4 GHZ, NVIDIA GeForre GT 520M, 6GB memory)
Käyttöjärjestelmä: Ubuntu 16.04.3 LTS (Linux blonk 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux)


A) Kaksi lokitapahtumaa

Tehtävänanto: " Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti."

Onnistuneena toimenpiteenä halusin tarkistaa logista miltä www-palvelinohjelmisto Apachen uudelleenkäynnistys, joka onnistui parissa sekunnissa komennolla:

pekkakoo@blonk:/var/log$ sudo service apache2 restart

Komennolla tail /var/log/syslog/ sain näkyviin logitiedostoon /var/log/syslog/ viimeisen rivin:

Sep  3 22:46:55 blonk systemd[1]: Started LSB: Apache2 web server.

Kyseinen logirivi kertoo seuraavaa:

  • Päivämäärä ja kellonaika: Sep 3 22:46:55
  • Käytetyn työaseman nimi: blonk
  • Komennon suorittava prosessi: systemd[1]
  • Selkokielinen kuvaus toimenpiteestä: Started LSB: Apache2 web server.

Epäonnistuneena toimenpiteenä halusin seurata minkälaisen jäljen logiin jättää epäonnistunut ylläpito-oikeuksien kokeilu niin osaisin tarkistaa jos joku on yrittänyt saada ylläpito-oikeuksia haltuunsa. Vaikka ylläpitäjäksi ei pitäjäksi ei pitäisi kirjautua vaan ylläpito-oikeus tulisi antaa aina sitä tarvitsevalle yksittäiselle komennolle, kirjaudun usein itse joskus terminaalissa ylläpito-oikeuksien, jos tiedän tarvitsevani oikeuksia useamman komennon suorittamiseen.

Komentohan ylläpito-oikeuksin kirjautumiseen on sudo su, mutta sen jälkeen kun huomasin ettei asiasta jää merkitään var/log/syslog-tiedostoon, en tiennyt kautta jaksanut tutustua /var/log -kansioon ja tarkistaa mistä logista pitäisi, joten turvauduin Google-hakuun 'sudo error log'. Ensimmäinen hakutulos osoitti artikkeliin 'logs - Where are sudo incidents logged?' Unix- & Linux Stack Exchange -sivustolla (https://unix.stackexchange.com/questions/70684/where-are-sudo-incidents-logged), josta selvisi että Debian-pohjaisista Linux-varianteista tieto löytyy tiedostosta /var/log/auth.log.

Seuraavaksi kokeilin ylläpito-oikeudella kirjautumista mutta antaen tunnukseni väärän salasanan kolme kertaa:

pekkakoo@blonk:~$ sudo su
[sudo] password for pekkakoo:
Sorry, try again.
[sudo] password for pekkakoo:
Sorry, try again.
[sudo] password for pekkakoo:
sudo: 3 incorrect password attempts
pekkakoo@blonk:~$


Tiedostosta /var/log/auth.log viisi viimeistä riviä näyttävällä komennolla tail -5 /var/log/auth.log löyty asiaan liittyen kaksi riviä

Sep  3 22:05:03 blonk sudo: pam_unix(sudo:auth): authentication failure; logname=pekkakoo uid=1000 euid=0 tty=/dev/pts/9 ruser=pekkakoo rhost=  user=pekkakoo
Sep  3 22:05:42 blonk sudo: pekkakoo : 3 incorrect password attempts ; TTY=pts/9 ; PWD=/home/pekkakoo ; USER=root ; COMMAND=/bin/bash

Riveissä on olennaista seuraavat tiedot

  • Päivämäärä ja kellonaika: Sep 3 22:05:03 ja Sep 3 22:05:42
  • Käytetyn työaseman nimi: blonk
  • Komento: sudo
  • Komennon käynnistä: ohjelma pam_unix(sudo:auth) tai pekkakoo
  • Selkokielinen kuvaus virheestä: authentication failure tai 3 incorrect password attempts
  • Ensimmäisellä rivillä on lisäksi tietoa kuka käyttäjä on yrittänyt suorittaa komentoa: logname=pekkakoo, uid=1000, ruser=pekkakoo ja user=pekkakoo
    • Miksi sama pekkakoo tieto on kolme kertaa, en tiedä
  • Ensimmäisellä rivillä on listattu lisäksi kuka on "todellinen" komentoa yrittävä käyttäjä: euid=0, eli root
  • Jälkimmäisellä rivillä on lopuksi tietoa missä terminaalissa (TTY=pts/9), missä hakemistossa (PWD=/home/pekkakoo) komento on annettu

B) SSH-demoni

Tehtävänanto: " Vapaaehtoinen kohta, ei ole opetettu vielä: Asenna SSH-demoni. Kokeile omalla ssh-palvelimellasi jotain seuraavista: ssh-copy-id, sshfs, scp tai git. (Helpoin lienee scp: ‘scp foo.txt tero@example.com:’)"

Tämä vapaaehtoinen kohta jäi tällä erää tekemättä, pitää palata asiaan.

C) Unelmien apt-get -komento

Tehtävänanto: "Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi."

Ehdin jo asennella edellisen kerran kotitehtävien yhteydessä asennella kannettavalle tietokoneelleni asennetulle Xubuntulle monia ohjelmia, joita kaikkia en muista. Siksi käynnistin tietokoneen tätä tehtävää varten uudelleen Xubuntu 16.04.3-livetikulla, jotta jo aikaisemmin.

Mielestäni käyttökelpoisessa Linux-pohjaisessa tietokoneessa koneessa tarvitsen jo asennettujen ohjelmien lisäksi

  • pitäisi olla mahdollista ajaa yhdessä terminaali-ikkunassa useampaa ohjelmaa samaan aikaan (Screen)
  • hyvä graafinen tekstieditori (Geany)
  • tekstipohjainen sähköpostin lukuohjelma (Alpine)
  • ohjelmat kuvankäsittelyyn (Gimp)
  • ja kuvien selailuun (Viewnior)

Näillä spekseillä unelmieni apt-getin komennoksi muodostui:

sudo apt-get screen geany alpine gimp viewnior

Muodostin livetikulla käynnistämälleni kannettavalle ensin langattoman verkkoyhteyden, minkä jälkeen annoin yllä listatun komennon maanantaina 4.9.2017 kello 0.10.

xubuntu@xubuntu:~$ sudo apt install screen geany alpine gimp viewnior
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  alpine-doc geany-common gimp-data libamd2.4.1 libbabl-0.1-0 libblas-common
  libblas3 libcamd2.4.1 libccolamd2.9.1 libcholmod3.0.6 libexiv2-14
  libgegl-0.3-0 libgfortran3 libgimp2.0 libjasper1 liblapack3 libmng2 libraw15
  libsdl1.2debian libumfpack5.7.1 mlock python-cairo python-gobject-2
  python-gtk2
Suggested packages:
  mail-transport-agent | exim4 gimp-help-en | gimp-help gimp-data-extras exiv2
  libjasper-runtime python-gobject-2-dbg python-gtk2-doc iselect | screenie
  | byobu ncurses-term
The following NEW packages will be installed:
  alpine alpine-doc geany geany-common gimp gimp-data libamd2.4.1
  libbabl-0.1-0 libblas-common libblas3 libcamd2.4.1 libccolamd2.9.1
  libcholmod3.0.6 libexiv2-14 libgegl-0.3-0 libgfortran3 libgimp2.0 libjasper1
  liblapack3 libmng2 libraw15 libsdl1.2debian libumfpack5.7.1 mlock
  python-cairo python-gobject-2 python-gtk2 screen viewnior
0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.0 MB of archives.
After this operation, 119 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Varmistuksen jälkeen ohjelmat asentuivat ja ohjelmien oli asennus valmis kello 0.11. Testasin vielä että kaikki ohjelmat käynnistyivät antamalla niiden käynnistyskomennot, jotka olivat samat kuin ohjelmien nimet. Kaikki ohjelmat vaikuttivat käynnistyvän niin kuin pitääkin.

D) Kolme komentokehoteohjelmaa

Tehtävänanto: "Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa."

Mieleeni ei tullut heti yhtäkään komentorivipohjaista ohjelmaa, joten lähestyin tätä tehtävää sunnuntaina 3.9.2017 kello 23.22 tehdyllä Goole-haulla 'xubuntu command line programs", jonka hakutuloksista lupaavimmalta näytti vuonna 2012 julkaistu artikkeli '15 Greatest Open Source Terminal Applications Of 2012' (https://www.cyberciti.biz/open-source/best-terminal-applications-for-linux-unix-macosx/). Sivulta löytyi nimensä mukaisesti kasa hyviä ohjelmia, tässä niistä kolme:

Dstat

Dstat on resurssienseurantaohjelmisto.

Annoin komennon sudo apt install dstat sunnuntaina 3.9.2017 kello 23.27 ja sudon salasanan kyselyn ja asennuksen jälkeen käynnistin ohjelman kello 23.29 komennolla dstat, jonka jälkeen ohjelma alkoi listaamaan riveittäin tietoa järjestelmän toiminnasta, ohjelma siis toimi vaikka kaikkien sarakkeiden sisältöä en ymmärtänyt:


Suljin ohjelman näppäinyhdistelmällä ctrl-c ja tarkistin komennolla dtstat --version mikä oli ohjelman versionumero (0.7.2).

Multitail

Multitail on useamman login, miksei muidenkin tekstitiedostojen, samanaikaiseen seurantaan tarkoitettu ohjelmisto.

Annoin komennon sudo apt install multitail sunnuntaina 3.9.2017 kello 23.35 ja ohjelma oli käynnistettävissä komennolla multitail kello 23.35:


Ohjelma siis käynnistyi onnistuneesti ja kertoi mm. versionumeronsa, mutta ei toiminut ohjelman pääasiallisessa tarkoituksessa eli logien näyttämisessä. Suljin ohjelman näppäimellä q. Järkeilin että jotta ohjelma näyttäisi useamman login samaan aikaan, pitäisi komennossa määritellä mitä logeja halutaan seurata, joten komennolla multitail /var/log/syslog /var/log/auth.log /var/log/dpkg.log ohjelman näkymä olikin jo oikeanlaisempi:

Suljin ohjelman näppäimellä q.

Vim

Sivun '15 Greatest Open Source Terminal Applications Of 2012' (https://www.cyberciti.biz/open-source/best-terminal-applications-for-linux-unix-macosx/) mukaan vim on paras tekstieditori ikinä ("Best text editor ever."), mutta itsellä ei parin aikaisemman kokeilukerran ole yhtä positiivisia mielikuvia, joten sunnuntaina 3.9.2017 kello 23.44 annoin komennon sudo apt install vim ja perusasennustoimenpiteiden jälkeen kello 23.46 annoin ohjelman käynnistyskomennon vim odottaen mitä tuleman pitää:


Ohjelma aukeni ja tekstiä pystyi kirjoittamaan. Vim vaikutti yhtä minimalistiselta, mutta sekavalta kuin aikaisemminkin, kun en taaskaan osannut siirtyä ohjelman komentotilaan sulkeakseni ohjelmaa tavalliseen tapaan, laitoin sen näppäinyhdistelmällä ctrl+z -pitoon, selvitin ohjelman PIDin komennolla ps ja sitten komennolla kill -9 9442 suljin ohjelman luvaten, etten avaa sitä enää ikinä vaan tyydyn Nanoon.

E) Komentokehotteen tärkeimmät komennot

Tehtävänanto: "Opettele ulkoa ja harjoittele tärkeimmät komennot (tätä “opettele ulkoa” alakohtaa ei tarvitse raportoida): http://terokarvinen.com/2009/command-line-basics-4 http://terokarvinen.com/2008/commands-for-admin-4."

Kävin läpi komentoja yrittäen sisäistää niiden syntakstin ja merkityksen.

Lähteet

Where are sudo incidents logged? Unix & Linux Stack Exchange. Luettavissa https://unix.stackexchange.com/questions/70684/where-are-sudo-incidents-logged. Luettu 3.9.2017.

Gite, Vivek. 11.12.2012. 15 Greatest Open Source Terminal Applications Of 2012. Luettavissa https://www.cyberciti.biz/open-source/best-terminal-applications-for-linux-unix-macosx/. Luettu 3.9.2017.

Karvinen, Tero. 17.8.2017. Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op. Luettavissa http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op. Luettu 3.9.2017.




3. Kotitehtävät 

Työasema: Acer Aspire 5750G (Intel Core i5-2420M 2.4 GHZ, NVIDIA GeForre GT 520M, 6GB memory)
Käyttöjärjestelmä: Ubuntu 16.04.3 LTS (Linux blonk 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux)

A) Apachen asennus ja käyttäjän kotisivut

Tehtävänanto: "Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla."

Apachen www-palvelimen asennus tapahtui komennoilla:

pekkakoo@blonk:/var/log$ sudo apt-get update
pekkakoo@blonk:/var/log$ sudo apt-get install apache2

Asennustiedoston latauksessa ja asentumissa kului noin 2 minuuttia. Tarkastin Apache2-palvelun toimivuuden asennuksen komennolla service apache2 status.

pekkakoo@blonk:~$ service apache2 status
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since ti 2017-09-12 21:19:16 EEST; 37s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/apache2.service
           ├─8443 /usr/sbin/apache2 -k start
           ├─8446 /usr/sbin/apache2 -k start
           └─8447 /usr/sbin/apache2 -k start

syys 12 21:19:15 blonk systemd[1]: Starting LSB: Apache2 web server...
syys 12 21:19:15 blonk apache2[8420]:  * Starting Apache httpd web server apache
syys 12 21:19:15 blonk apache2[8420]: AH00558: apache2: Could not reliably deter
syys 12 21:19:16 blonk apache2[8420]:  *
syys 12 21:19:16 blonk systemd[1]: Started LSB: Apache2 web server.

Komennon lopputuloksena tuli kasa rivejä, joiden joukossa luki Apachen olevan aktiivinen (Active: active (running)). Varmistin Apachen toimivuuden vielä työaseman www-selaimella (Firefox) avaamalla sivun http://localhost/ sekä koneen IP-osoite -sivut, joissa molemmissa avautui Apachen oletussivu Apache Ubuntu Default Page, joten Apache vaikuttaisi asentuneen ja käynnistyneen onnistuneesti.

Oma kotisivu Firefoxilla ei vielä näkynyt, joten jotain pitäisi vielä tehdä:

Tero Karvinen kurssin Linux-palvelimet ict4tn021-4 tunnilla 5.9.2017 läpikäymät ohjeet käyttäjien kotisivujen esiin saamiseksi on koottu hänen blogi-artikkeliin Install Apache Web Server on Ubuntu, jonka ohjeita seurasin seuraavasti.

Kotihakemistotoiminnallisuuden käyttöönotto komennoilla

pekkakoo@blonk:~$ sudo a2enmod userdir
[sudo] password for pekkakoo: 
Enabling module userdir.
To activate the new configuration, you need to run:
  service apache2 restart
pekkakoo@blonk:~$ service apache2 restart

Viimeisen komennon jälkeen avautui ikkuna, johon annoin sudokäyttäjän salasanan

Seuraavaksi loin käyttäjätunnukseni pekkakoo alaisuuteen public_html -kansion sekä sen alle tiedoston index.html, sisältönä 'Testi'

pekkakoo@blonk:~$ pwd
/home/pekkakoo
pekkakoo@blonk:~$ mkdir public_html
pekkakoo@blonk:~$ nano public_html/index.html
pekkakoo@blonk:~$ ls -ld pub*
drwxrwxr-x 2 pekkakoo pekkakoo 4096 syys  12 21:47 public_html
pekkakoo@blonk:~$ chmod go-rw public_html/
pekkakoo@blonk:~$ ls -ld pub*
drwx--x--x 2 pekkakoo pekkakoo 4096 syys  12 21:47 public_html
pekkakoo@blonk:~$ ls -l public_html/index.html 
-rw-rw-r-- 1 pekkakoo pekkakoo 6 syys  12 21:47 public_html/index.html
pekkakoo@blonk:~$ chmod g-w public_html/index.html 
pekkakoo@blonk:~$ ls -l public_html/index.html 
-rw-r--r-- 1 pekkakoo pekkakoo 6 syys  12 21:47 public_html/index.html

Tarkistin vielä public_html -hakemiston ja sen alla olevan index.html tiedoston oikeudet. Tarkoitus on että muut käyttäjät eivät pääsee muokkaamaan kumpaakaan, mutta pystyvät www-selaimen kautta lukemaan kansion sisällä olevia tiedostoja.

pekkakoo@blonk:~$ ls -ld pub*
drwxrwxr-x 2 pekkakoo pekkakoo 4096 syys  12 21:47 public_html
pekkakoo@blonk:~$ chmod go-rw public_html/
pekkakoo@blonk:~$ ls -ld pub*
drwx--x--x 2 pekkakoo pekkakoo 4096 syys  12 21:47 public_html
pekkakoo@blonk:~$ ls -l public_html/index.html 
-rw-rw-r-- 1 pekkakoo pekkakoo 6 syys  12 21:47 public_html/index.html

Lopuksi tarkistin avautuuko käyttäjäkotisivuni www-selaimella, ja avautuuhan se!

B) Apachen lokitapahtumat: onnistunut ja epäonnistunut tapahtuma

Tehtävänanto: " Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.)"

Onnistuneen tapahtuman logimerkintä

Avasin toisella työasemallani (IP-osoite 192.168..xxx.xxx) ylempänä käsitellyssä tehtävä A luodun käyttäjän kotisivun Chrome-selaimella tiistaina 12.9.2017 työaseman oman kellon mukaan kello 22.59:

Linux-työasemallani siirryin Apachen logikansioon ja tarkistin access.log nimisestä tiedostosta uusimmat rivit tail-komennolla:

pekkakoo@blonk:~$ cd /var/log/apache2/
pekkakoo@blonk:/var/log/apache2$ tail access.log 

Login viimeisenä, eli uusimpana rivinä oli aikaleimaltaan toimenpidettä vastaava logirivi, joten sivun hakeminen todennäköisesti aiheutti tämän logirivin.

192.168.xxx.xxx - [12/Sep/2017:22:10:55 +0300] "GET /~pekkakoo/index.html HTTP/1.1" 200 287 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" 

Logirivin analyysiä

  • 192.168.xxx.xxx - Pyynnön lähettäneen työaseman IP-osoite (kaksi viimeistä lukusarjaa peitetty merkeillä xxx, ettei tuntemattomat tule koputtelemaan työasemalleni).
  • [12/Sep/2017:22:10:55 +0300] - päivämäärä sekä kellon aika, sekä kellonajan käyttämä aikavyöhyke.
  • "GET /~pekkakoo/index.html HTTP/1.1" - komento jolla sivu on haettusekä käytetty protokolla.
  • 200 - HTTP-protokollan statuskoodi, joka kertoo mikä oli edellisen kohdan komennon lopputulossa, tässä tapauksessa sivu on haettu onnistuneesti (ks. https://httpstatuses.com/200).
  • 287 - Komennon aiheuttamantietoliikenteen siirtomäärä bitteinä.
  • "-" - Tätä tyhjää kohtaa en tiedä mitä se voisi tarkoittaa.
  • "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" - Käytetyn selaimen Apachelle kertomat otsaketiedot, jotka sisältävät tietoa muun muassa käytetystä käyttöjärjestelmästä sekä www-selaimesta.

Epäonnistuneen tapahtuman logimerkintä

Tiistaina 12.9.2017 työaseman ilmoittamana kellonaikana 22.30 kokeilin hakea Linux-työasemani Firefox-selaimella sivua http://localhost/, jota ei ole olemassa.

Tarkistin Linux-työasemallani komennolla tail /var/log/apache2/access.log Apachen login viimeisimmät rivit, joista viimeisenä oli tehtyä sivuhakua vastaava rivi

127.0.0.1 - - [12/Sep/2017:22:30:39 +0300] "GET /~pekkakoo/index-vanha.html HTTP/1.1" 403 527 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0"

Logirivin analyysiä

  • 127.0.0.1 - Pyynnön lähettäneen työaseman IP-osoite, tässä tapauksessa localhost.
  • [12/Sep/2017:22:30:39 +0300] - päivämäärä sekä kellon aika, sekä kellonajan käyttämä aikavyöhyke.
  • "GET /~pekkakoo/index-vanha.html HTTP/1.1" - komento jolla sivu on haettu sekä käytetty protokolla.
  • 403 - HTTP-protokollan statuskoodi, joka kertoo mikä oli edellisen kohdan komennon lopputulossa, tässä tapauksessa selaimella ei ole oikeutta sivuun(ks. https://httpstatuses.com/403).
    • Hakemistoon ei ole lukuoikeutta (kansion oikeudet ovat drwx--x--x). Jos hakemistoon olisi lukuoikeus, virheilmoitus olisi 404 eli sivua ei ole olemassa.
  • 527- Komennon aiheuttamantietoliikenteen siirtomäärä bitteinä.
  • "-" - Tätä tyhjää kohtaa en tiedä mitä se voisi tarkoittaa.
  • "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" - Käytetyn selaimen Apachelle kertomat otsaketiedot, jotka sisältävät tietoa muun muassa käytetystä käyttöjärjestelmästä sekä www-selaimesta.

H) Käyttäjän kotihakemiston kotisivu näkymään ilman tildeä (~)

Tehtävänanto: "Tee Apachelle uusi sivu, joka näkyy suoraan palvelimen pääsivulla, mutta jonka sivuja voi muokata normaalin käyttäjän oikeuksilla (name based virtual host, DocumentRoot käyttäjän kotihakemistoon"

Käyttäjän kotihakemiston asettamiseen näkymään palvelimen pääsivulla on hyvät ohjeet Tero Karvisen blogi-artikkelin sivulla New Default Website with Apache2 – Show your homepage at top of example.com, no tilde , joten seurasin niitä seuraavasti.

Tarkistin ensin mitä sivua palvelimen pääsivu näytti, kun Apachen on asennettu palvelimelle perusasetuksin tehtävässä A) Apachen asennus ja käyttäjän kotisivut.

Pääsivuna näkyy Apachen perussivu, jonka haluan korvata käyttäjän pekkakoon kotisivuhakemiston index.html -sivulla, joka näyttää tältä:

Loin komennolla sudoedit /etc/apache2/sites-available/pekka.conf uuden konffi-tiedoston, sisältönä

<VirtualHost *:80>

DocumentRoot /home/pekkakoo/public_html/

        <Directory /home/pekkakoo/public_html/>
                Require all granted
        </Directory>

</VirtualHost>

Kun konffi-tiedosto oli luotu, tuli se vaihtaa oletussivun paikalle, mikä onnistuu komennoilla sudo a2ensite pekka.conf ja sudo a2dissite 000-default.conf, minkä jälkeen Apache piti käynnistää vielä uudelleen komennolla service apache2 reload.

pekkakoo@blonk:~$ pwd
/home/pekkakoo
pekkakoo@blonk:~$ sudo a2ensite pekka.conf
Enabling site pekka.
To activate the new configuration, you need to run:
  service apache2 reload
pekkakoo@blonk:~$ sudo a2dissite 000-default.conf 
Site 000-default disabled.
To activate the new configuration, you need to run:
  service apache2 reload
pekkakoo@blonk:~$ service apache2 reload

Komennon service apache2 reload jälkeen avautui ikkuna, johon annoin sudokäyttäjän salasanan


Olin tehnyt käyttäjälle pekkakoo kotisivuhakemiston ja kotisivun jo aikaisemmassa tehtävässä A) Apachen asennus ja käyttäjän kotisivut. Muutoksien teon ja Apachen uudelleen lataamisen jälkeen kävin www-selaimella sivulla http://localhost, jossa näkyi edelleen Apachen oletussivu.

Keksin että Apachen oletussivu saattoi olla jäänyt selaimen välimuistiin ja kun muutin haettavaksi osoitteeksi http://localhost/? niin avautui haluttu sivu eli käyttäjän pekkakoo kotisivuhakemiston index.html (http://localhost/~pekkakoo/index.html).

Halusin vielä tarkistaa miltä sivun haku näyttää Apachen logissa, mutta komento tail /var/log/apache2/access.log ei näyttänyt uusimpana rivinä kyseisen sivun hakua vaan paljon aikaisempi haku:

127.0.0.1 - - [12/Sep/2017:22:47:09 +0300] "GET /~pekkakoo/index-vanha.html HTTP/1.1" 404 516 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0"

Latailin samaa tail -komentoa useaan kertaan ihmetellen kunnes kurkistin komennolla ls -a /var/log/apache2 mitä tiedostoja Apachen logihakemistossa sijaitsee. Hakemistosta löytyi tiedosto other_vhosts_access.log, josta löytyi tail /var/log/apache2/access.log komennolla uusimpana merkintänä etsitty sivuhaku statuksella 200:

127.0.1.1:80 127.0.0.1 - - [12/Sep/2017:23:23:58 +0300] "GET /? HTTP/1.1" 200 287 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0"

Lähteet

Karvinen, Tero. 17.8.2017. Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op. Luettavissa http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op. Luettu 3.9.2017.

Karvinen, Tero 16.2.2016. New Default Website with Apache2 – Show your homepage at top of example.com, no tilde. Luettavissa http://terokarvinen.com/2016/new-default-website-with-apache2-show-your-homepage-at-top-of-example-com-no-tilde. Luettu 12.9.2017.

Karvinen, Tero. 2.5.2008. Install Apache Web Server on Ubuntu. Luettavissa http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4. Luettu 12.9.2017.

Karvinen, Tero. 16.2.2016. New Default Website with Apache2 – Show your homepage at top of example.com, no tilde. Luettavissa http://terokarvinen.com/2016/new-default-website-with-apache2-show-your-homepage-at-top-of-example-com-no-tilde. Luettu 12.9.2017.

2xxx success. Luettavissa https://httpstatuses.com/200. Luettu 12.9.2017.




4. Kotitehtävät: Virtuaalipalvelimen luonti, domainnimen hankinta nimipalvelun kohdilleen asettaminen

Työasema: Acer Aspire 5750G (Intel Core i5-2420M 2.4 GHZ, NVIDIA GeForre GT 520M, 6GB memory)
Käyttöjärjestelmä: Linux kerubi 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Tässä kirjoituksessa käsitellään Haaga-Helian ammatikorkeakoulussa syksyllä 2017 Tero Karvisen pitämän Linux-palvelimet (ict4tn021-5) kurssin neljännen opetuskerran tehtäviä, teemana virtuaalisen Linux-palvelimen (VPS) tilaus ja nimipalvelun kohdilleen laittaminen.

R) Julkisen virtuaalipalvelimen luonti

Tehtävänanto: "Kokeile julkista virtuaalipalvelinta (VPS). Voit vuokrata palvelimen esimerkiksi Linodelta, Amazonilta, DigitalOceanilta, OVH:lta tai monista muista paikoista. Edullisinta on käyttää GitHub Education -paketista DigitalOceanin palveluita." <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

DigitalOceanin palvelussa virtuaalipalvelimista käytetään nimeä dropblets, joita pystyy luomaan kunhan on luonut tunnukset Digital Oceaniin ja kirjautunut palveluun, jolloin palvelimen luonti onnistuu valitsemalla sivun oikeassa laidassa olevasta Create-valikosta Dropblets - create cloud servers.

Seuraavaksi alkavalla sivulla annetaan tietoja minkälainen palvelin halutaan luoda, itse tein seuraavat valinnat:

  • Kohdassa Choose an image valitsinDistribution -kohdan alta palvelimen käyttöjärjestelmäksi kurssilta tutun Ubuntu 16.04.3 x64:n, joka oli oletuksena valittu.

  • Kohdassa Choose a size valitsin kaikkein halvimman ja tehokkuudeltaan pienimmän kokoonpanon, sillä se riittää ominaisuuksiltaan tarpeisiini tässä kontekstissa.
  • Kohdassa Choose a datacenter region valitsin omaa sijaintia lähellä olevan Frankfurtin, palvelimen todennäköinen käyttäjäkunta tulee myös olemaan Suomesta, jos käyttäjäkuntaa palvelimelle muodostuu.
  • Kohdassa Finalize and create vaihtoin kohdasta Choose a hostname oletuksena tulleen nimen (ubuntu-512mb-fra1-01) helpommin muistettavaksi ja vähemmän koneesta tietoja kertovaksi, palvelimen nimeksi tuli kerubi.

  • Nämä kolme asetusta sekä palvelimen nimi riittävät tässä vaiheessa, SSH avaimille tai varmuuskopioiden otolle ja muille ei ole tässä vaiheesa tarvetta, joten valitsin sivun lopusta Create luodakseni uuden palvelimen.

Palvelin syntyi parissa kymmenissä sekunnissa ja sähköpostiin saapui palvelimen ylläpitäjäkäyttäjän (root) salasana, palvelin oli valmis ensimmäistä kirjautumista varten!


Kurssilla olimme oppineet että ensmmäisen kirjautumisen yhteydessä oli vaihdettava sähköpostitse tullut ylläpitäjätunnuksen salasana kun sitä pyydetään, joten salasanan vaihdoin käyttämäni KeePass-salasanahallintaohjelman ehdottamaan 20 merkkiseen kirjain- ja numerorimpsuun.

~$ ssh root@207.154.241.103
The authenticity of host '207.154.241.103 (207.154.241.103)' can't be established.
RSA key fingerprint is 8b:dd:0e:a0:15:56:d3:f5:16:aa:48:65:c4:1e:20:49.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '207.154.241.103' (RSA) to the list of known hosts.

root@207.154.241.103's password:
You are required to change your password immediately (root enforced)
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-93-generic x86_64)
* Documentation: https://help.ubuntu.com
 * Management: https://landscape.canonical.com
 * Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
 http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Changing password for root.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
$

Kurssilla olimme käyneet läpi tarvittavat alkutoimenpiteet palvelimen turvallisiseksi saamiseksi, joten tein seuraavaksi kurssilla opitut toimenpiteet,, jotka löytyvät myös Tero Karvisen blogikirjoituksesta First Steps on a New Virtual Private Server – an Example on DigitalOcean and Ubuntu 16.04 LTS

Palomuuri

Toistaiseksi palvelimelle on tarvetta päästä vain ssh-yhteyksillä, joten se tulisi sallia mutta muut yhteydet kieltää, mikä onnistuu ufw:n avulla:

$ sudo ufw allow 22/tcp
Rules updated
Rules updated (v6)
# sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$

Palomuuriasetuksien jälkeen kokeilin kirjautua toisessa terminaali-ikkunassa palvelimelle ylläpitäjäoikeuksien, mikä onnistui, joten asetukset olivat toimivat.

Käyttäjän luominen

Palvelimella ei pidä toimia root-oikeuksin, joten seuraavaksi loin uuden käyttäjän ja liitin sen tarvittaviin ryhmiin, mm. ylläpitoryhmään (sudo).

$ sudo adduser pekkakoo
Adding user `pekkakoo' ...
Adding new group `pekkakoo' (1000) ...
Adding new user `pekkakoo' (1000) with group `pekkakoo' ...
Creating home directory `/home/pekkakoo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for pekkakoo
Enter the new value, or press ENTER for the default
        Full Name []: Pekka Koo
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
$ sudo adduser pekkakoo sudo
Adding user `pekkakoo' to group `sudo' ...
Adding user pekkakoo to group sudo
Done.
$ sudo adduser pekkakoo adm
Adding user `pekkakoo' to group `adm' ...
Adding user pekkakoo to group adm
Done.
$ sudo adduser pekkakoo admin
Adding user `pekkakoo' to group `admin' ...
Adding user pekkakoo to group admin
Done.
$


Käyttäjän pekkakoo luomisen jälkeen kirjauduin palvelimelle uudella tunnuksella ja kirjautuminen toimi ok. Onnistuneen kirjautumisen jälkeen voidaan sulkea root-tunnus tarpeettomattomana kahdella eri toimenpiteellä

$ sudo usermod --lock root
[sudo] password for pekkakoo:
$


$ sudoedit /etc/ssh/sshd_config

GNU nano 2.5.3 File: /var/tmp/sshd_config.XXVoraeg

# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
## 23.9.2017 pekka: YES to NO
PermitRootLogin no
StrictModes yes

Muutoksien jälkeen ssh-daemoni pitää vielä käynnistää uudelleen, jotta jälkimmäinen asetusmuutos tulee voimaan.

 $ sudo service ssh restart

Lopuksi vielä palvelimen ohjelmat ajantasalle komennoin

$ sudo apt-get update
$ sudo apt-get upgrade

x) Domainnimi osoittamaan virtuaaliseen palveilmen

Tehtävänanto: "Laita julkinen domain-nimi osoittamaan koneeseesi. NameCheap ja Gandi ovat tunnettuja nimien vuokraajia. GitHub Education -paketista saa NameCheapilta .me domainin ilmaiseksi vuodeksi." <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

Education GitHubin kautta sain NameCheap-palvelusta ilmaisen .me päätteiseen domainnimen vuoden ajaksi, jota varten Education Githubista käydä linkittämässä oikeus tarjoukseen NameCheapin kanssa. En kuvaa tätä prosessia tässä vaan aloitan siitä vaiheesta kun olin luonut NameCheapiin tunnuksen, jolla oli oikeus tuohon ilmaiseen .me -domainnimeen.

Prosessi alkoi sivulta https://nc.me/, jossa oli mahdollisuus etsiä domainnimiä. Hain domainnimeä pekkakoo.me, joka löytyi ja jonka sain lunastettua seuraavasti kuvien osoittamana


Tilausprosessin välissä piti valita jokin ilmainen kylkiäinen, valitsin Exposuren, jonkinlainen valokuvien esitysohjelman.

Tilauksen läpimenon jälkeen tilanne näytti NameCheapin ohjauspaneelissa tältä



Valitsemalla Manage > Advanced DNS domainini tiedoissa näkyikin jo olevan joitakin ohjauksia, mitkä taisivat liittyä siihen että domainnimeä tilatessa olin valinnut ilmaiseksi kylkiäiseksi Exposuren.


Lisäin asetuksiin sen mitä muistin tunnilla olleen puhutun ja hain lisätukea NameCheapin ohjesivulta How can I set up an A (address) record for my domain? , laittamani asetukset näkyvät alla

Poistin lopuksi asetuksissa jo olelen CNAME-tietueen ja URL:n edelleenohjauksen.

Seuraavaksi tarkistin virtuaalipalvelimelta mitä NameCheapin nimipalvelussa oli tietoja domainnimen ohjauksesta,

$ host pekkakoo.me dns1.registrar-servers.com
Using domain server:
Name: dns1.registrar-servers.com
Address: 216.87.155.33#53
Aliases:

pekkakoo.me has address 162.255.119.165
pekkakoo.me has address 207.154.241.103
pekkakoo.me mail is handled by 15 eforward4.registrar-servers.com.
pekkakoo.me mail is handled by 10 eforward2.registrar-servers.com.
pekkakoo.me mail is handled by 20 eforward5.registrar-servers.com.
pekkakoo.me mail is handled by 10 eforward3.registrar-servers.com.
pekkakoo.me mail is handled by 10 eforward1.registrar-servers.com.
$

Saatujen tietojen perusteella domainini pekkakoo.me osoittaa kahteen paikkaan. Valitettavasti en huomannut ottaa ruutukaappausta mihin osoitteet http://pekkakoo.me/ sekä http://162.255.119.165 johtivat, mutta ne johtivat samaan paikkaan johon wWW-etuliitteinen domainnimi, eli osoite http://www.pekkakoo.me/ eli domainnimen tilausvaiheessa ruksitun ilmaiskylkiäisen Exposuren sivuille.

Lopetin domainnimen säätämisen tässä vaiheessa, sunnuntai-iltana 24.9.2017 noin kello 23.45, koska domainnimen ohjaus ei toiminut mikä johtui todennäköisesti siitä että asetukset eivät olleet astuneet vielä voimaan. Päätin tarkistaa seuraavana aamuna töissä ohjautuvatko http://pekkakoo.me ja http//www.pekkakoo.me/ oikeaan paikkaan eli virtuaalipalvelimeni osoitteeseen http://207.154.241.103/ .

Maanantaina 25.9.2017 kello 11.38 menin työpaikkani työaseman Chrome-selaimella osoitteeseen http://pekkakoo.me/ ja domain ohjautui oikeaan paikkaan. Samoin http://www.pekkakoo.me/ avasi oikean sivun.

Asetukset olivat siis päättyneet yön aikana. Ajoin vielä virtuaalipalvelimellani komennon host pekkakoo.me dns1.registrar-servers.com sekä  host www.pekkakoo.me dns1.registrar-servers.com tarkistaakseni miltä tiedot näyttävät nimipalvelimessa

$ host pekkakoo.me dns1.registrar-servers.com
Using domain server:
Name: dns1.registrar-servers.com
Address: 216.87.155.33#53
Aliases:

pekkakoo.me has address 207.154.241.103
pekkakoo.me mail is handled by 20 eforward5.registrar-servers.com.
pekkakoo.me mail is handled by 15 eforward4.registrar-servers.com.
pekkakoo.me mail is handled by 10 eforward1.registrar-servers.com.
pekkakoo.me mail is handled by 10 eforward3.registrar-servers.com.
pekkakoo.me mail is handled by 10 eforward2.registrar-servers.com.
$

$ host www.pekkakoo.me dns1.registrar-servers.com
Using domain server:
Name: dns1.registrar-servers.com
Address: 216.87.155.33#53
Aliases:

www.pekkakoo.me has address 207.154.241.103
$

Nimipalvelimenkin mukaan molemmat domainit ohjautuvat oikeaan paikkaan eivätkä minnekään muualle.

s) Apachen asennus ja käyttäjän kotisivu Apachen oletussivuksi

Tehtävänanto: "Laita julkiselle palvelimellesi käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna." <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

Apachen asennusta ja käyttäjän kotisivun asettamista käyttäjän kotisivuiksi käsiteltiin edellisellä opetuskerralla ja kotitehtävissä, joten Apachen asennus ja kotisivujen asettaminen sujuivat edellisekerran kotitehtävien mukaisesti Apachen asennus ja käyttäjän kotisivut ja Käyttäjän kotihakemiston kotisivu näkymään ilman tildeä (~).

Lähtötilanne oli että Apache ei oltu asennettu ja www-selaimelle palvelimen http://207.154.241.103/ vastaus oli "This site can’t be reached. 207.154.241.103 took too long to respond."

pekkakoo@kerubi:~$ sudo apt-get update
[sudo] password for pekkakoo:
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Hit:2 http://ams2.mirrors.digitalocean.com/ubuntu xenial InRelease
Get:3 http://ams2.mirrors.digitalocean.com/ubuntu xenial-updates InRelease [102 kB]
Get:4 http://ams2.mirrors.digitalocean.com/ubuntu xenial-backports InRelease [102 kB]
Fetched 306 kB in 0s (329 kB/s)
Reading package lists... Done
pekkakoo@kerubi:~$ sudo apt-get install apache2
..... <monta riviä tekstiä>
..... <lisää rivejä tekstiä>
Processing triggers for ufw (0.35-0ubuntu2) ...
$


Tarkistin Apachen toimivuuden komennolla service apache2 status, Apache vaikutti pyörivän normaalisti:

$ service apache2 status
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Sun 2017-09-24 20:26:09 UTC; 1min 14s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/apache2.service
           ├─3607 /usr/sbin/apache2 -k start
           ├─3610 /usr/sbin/apache2 -k start
           └─3611 /usr/sbin/apache2 -k start

Sep 24 20:26:08 kerubi systemd[1]: Starting LSB: Apache2 web server...
Sep 24 20:26:08 kerubi apache2[3582]:  * Starting Apache httpd web server apache
Sep 24 20:26:08 kerubi apache2[3582]: AH00558: apache2: Could not reliably deter
Sep 24 20:26:09 kerubi apache2[3582]:  *
Sep 24 20:26:09 kerubi systemd[1]: Started LSB: Apache2 web server.

WWW-selaimella vastaus oli kuitenkin edelleen "This site can’t be reached. 207.154.241.103 took too long to respond.", joten toimiva palvelu ei näkynyt, joten kyse oli todennäköisesti nyt siitä että palveluan tarvitsemaa porttia ei ollut avattu palomuurissa, joten

$ sudo ufw allow 80/tcp
Rule added
Rule added (v6)
$

Nyt osoitteessa http://207.154.241.103/ näkyi tuttu sivu!


Mutta sivulle pitäisi saada näkymään käyttäjän kotihakemistossa oleva www-sivu Apachen perussivun sijasta. Kotisivuhakemistot sai näkyviin muutamalla komennolla

pekkakoo@kerubi:~$ sudo a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
 service apache2 restart
$ sudo service apache2 restart
$

WWW-selaimella http://207.154.241.103/~pekkakoo sanoi kuitenkin vielä Forbidden You don't have permission to access /~pekkakoo on this server., mikä johtui todennäköisesti siitä että käyttäjällä ei ollut vielä kotisivuhakemistoa.

Joten seuraavaksi loin kotihakemiston, sinne Moikkamoi tekstin sisältävän index.html-tiedoston ja laitoin kansion ja tiedoston oikeudet kuntoon

$ mkdir /home/pekkakoo/public_html
$ nano /home/pekkakoo/public_html/index.html

$ cd /home/pekkakoo/public_html/
$ ls -la
total 12
drwxrwxr-x 2 pekkakoo pekkakoo 4096 Sep 24 20:39 .
drwxr-xr-x 5 pekkakoo pekkakoo 4096 Sep 24 20:38 ..
-rw-rw-r-- 1 pekkakoo pekkakoo   10 Sep 24 20:39 index.html
$ chmod o-w index.html
$ ls -la
total 12
drwxrwxr-x 2 pekkakoo pekkakoo 4096 Sep 24 20:39 .
drwxr-xr-x 5 pekkakoo pekkakoo 4096 Sep 24 20:38 ..
-rw-rw-r-- 1 pekkakoo pekkakoo   10 Sep 24 20:39 index.html
$ cd ..
$ ls -lad pu*
drwxrwxr-x 2 pekkakoo pekkakoo 4096 Sep 24 20:39 public_html
$ chmod og-wr public_html/
$ ls -lad pu*
drwx--x--x 2 pekkakoo pekkakoo 4096 Sep 24 20:39 public_html
$


Nyt osoite http://207.154.241.103/~pekkakoo/ vastasi "Moikkamoi", mutta osoite http://207.154.241.103/ näytti vielä Apachen oletussivua.


Kuten aikaisemminkin, seurasin Tero Karvisen hyvän blogiartikkelin New Default Website with Apache2 – Show your homepage at top of example.com, no tilde ohjeita saadakseni käyttäjän kotisivun näkymään palvelimen kotisivuna. Komennolla sudoedit /etc/apache2/sites-available/pekkakoo.conf sain luotua uuden konffi-tiedoston, jonka sisältönä oli

<VirtualHost *:80>
 
DocumentRoot /home/pekkakoo/public_html/
 
        <Directory /home/pekkakoo/public_html/>
                Require all granted
        </Directory>
 
</VirtualHost>

Konffi-tiedoston luomisen jälkeen käyttäjän pekkakoon kotisivuhakemistossa olevan sivun asettaminen palvelimen pääsivuksi onnistui seuraavin komennoin

$ sudo a2ensite pekkakoo.conf
Enabling site pekkakoo.
To activate the new configuration, you need to run:
  service apache2 reload
$ sudo a2dissite 000-default.conf
Site 000-default disabled.
To activate the new configuration, you need to run:
  service apache2 reload
$ sudo service apache2 reload
$

Näiden muutoksien jälkeen osoitteessa http://207.154.241.103/ lukikin, kuten pitikin, "Moikkamoi"!


y) Murtautumisyritykset palvelimelle

Tehtävänanto: "Etsi julkisen palvelimesi lokeista esimerkkejä murtautumisyrityksistä. Voit etsiä lisätietoa IP-osoitteista ottamatta niihin yhteyttä esimerkiksi komennoilla geoiplookup tai whois." <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

Kirjautumisyritykset palvelimelle tallentavasta auth.logista löytyi komennolla tail 100 /var/log/auth.log mm. seuraavia rivejä, jotka paljastavat että palvelimesta IP-llä 199.195.253.136 on käyttäjänimi support yrittänyt kirjautumia palvelimelle sunnuntaina 24.9.2017 klo 19.22.49, ilmeisesti Saksan aikaan sillä palvelin sijaitsee Saksassa:


Sep 24 19:22:49 kerubi sshd[12249]: Failed password for invalid user support from 199.195.253.136 port 49727 ssh2
Sep 24 19:22:49 kerubi sshd[12249]: pam_unix(sshd:auth): check pass; user unknown
Sep 24 19:22:50 kerubi sshd[12249]: Failed password for invalid user support from 199.195.253.136 port 49727 ssh2
Sep 24 19:22:51 kerubi sshd[12249]: Connection reset by 199.195.253.136 port 49727 [preauth]
Sep 24 19:22:51 kerubi sshd[12249]: PAM 4 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=199.195.253.136
Sep 24 19:22:51 kerubi sshd[12249]: PAM service(sshd) ignoring max retries; 5 > 3
Sep 24 19:22:51 kerubi sshd[12456]: Invalid user support from 199.195.253.136

Logissa auth.log esiintyvä kellonaika jäi mietityttymään mitä kellonaikaa se on, joten kirjoitin Googleen "check timezone ubuntu" ja hakutuloksissa oli ensimmäinen AskUbuntu.comissa sijaitseva keskustelu otsikolla How to check computer's timezone through Terminal? [duplicate], josta selvisi tarvittava komento (timedatectl status | grep "Time zone") ja että palvelimeni kellonaika onkin UTC-aikaa eikä Saksan aikaa:


$ timedatectl status | grep "Time zone"
   Time zone: Etc/UTC (UTC, +0000)

Takaisin murtautumisyritykseen, geoiplookup-komennolla selvisi että kyseisen palvelimen todennäköinen sijainti on USA:ssa, kunhan ensin sain asennettua geoiplookup-ohjelman:

$ geoiplookup
The program 'geoiplookup' is currently not installed. You can install it by typing:
sudo apt install geoip-bin
$ sudo apt install geoip-bin
$ geoiplookup 199.195.254.136
GeoIP Country Edition: US, United States


Lähteet

AskUbuntu.Com. 16.5.2016. How to check computer's timezone through Terminal? [duplicate]. Luettavissa https://askubuntu.com/questions/767045/how-to-check-computers-timezone-through-terminal. Luettu 23.9.2017.

Karvinen, Tero. 17.8.2017. Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op. Luettavissa http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op. Luettu 23.9.2017.

Karvinen, Tero 16.2.2016. New Default Website with Apache2 – Show your homepage at top of example.com, no tilde. Luettavissa http://terokarvinen.com/2016/new-default-website-with-apache2-show-your-homepage-at-top-of-example-com-no-tilde. Luettu 23.9.2017.

Karvinen, Tero, 19.9.2017. First Steps on a New Virtual Private Server – an Example on DigitalOcean and Ubuntu 16.04 LTS. Luettavissa http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean. Luettu 23.9.2017

NameCheap. How can I set up an A (address) record for my domain? Luettavissa https://www.namecheap.com/support/knowledgebase/article.aspx/319/2237/how-can-i-set-up-an-a-address-record-for-my-domain. Luettu 23.9.2017.



5. Kotitehtävät 

Työasema: Acer Aspire 5750G (Intel Core i5-2420M 2.4 GHZ, NVIDIA GeForre GT 520M, 6GB memory)
Käyttöjärjestelmä: Ubuntu 16.04.3 LTS (Linux blonk 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux)

j5) 'hei maailma' Flaskilla

Tehtävänanto: "Kirjoita oma “hei maailma” Flaskin testipalvelimella" <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

Jotta pystyisin kirjoittamaan Flaskilla 'hei maailma', joten seurasin Tero Karvisen kirjoittamia ohjeita hänen blogiartikkelissaan Hello Flask Web App – Python 3 Flask Development Server Install on Ubuntu 16.041.

  1. Ensin ohjelmistojen päivitys komennolla sudo apt-get update
  2. Seuraavaksi flaskin ja curlin asennus komennolla sudo apt-get install python-3-flask curl
  3. Ohjelmat asentuivat ilman virheilmoituksia, testasin curlin toimivuuden komennolla curl http://www.fi/index.html mikä palautti kyseisen sivun html-koodia, mutta flaskin kohdalta en keksinyt miten sen toimivuutta voisi testata ennen kuin on flaskilla kirjoitettu ohjelma käytössä.
  4. Seuraavaksi loin kansion publicFlask kotihakemistooni komennolla mkdir publicFlask/ ja siirryin hakemistoon komennolla cd publicFlask
  5. Ohjeen mukaisesti avasin tekstieditorin antaen tiedostonimen jo valmiiksi komennolla nano main.py ja kirjoitin käsin ohjeessa olleen esimerkkikoodin tiedostoon, tallensin tiedoston näppäillen ctrl-x, y ja enter. Tiedoston main.py sisältö oli

    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
            return "hei maailma!"
    
    if __name__ == "__main__":
            app.run(debug=True)
    
  6. Seuraavaksi käynnistin Flaskin testipalvelimen komennolla python3 main.py, minkä onnistumisen merkiksi tuli rivit

     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
     * Restarting with stat
  7. Avasin toisen terminaalin ohjeen mukaisesti näppäinyhdistelmällä alt+ctrl+t, jossa ajoin komennon curl http://127.0.0.1:5000/ ja vastaukseksi tuli teksti 'hei maailma'

    $ curl http://127.0.0.1:5000/
    hei maailma!
    $ 
    
  8. Tein vielä toisen testin avaamalla Firefoxilla sivun http://127.0.0.1:5000/, josta sieltäkin vastasi 'hei maailma'

Flaskin testiympäristössä sain siis näkymään 'hei maailma'.

f5) Flask tuotantoasennuksena (Apache mod_wsgi)

Tehtävänanto: "Tee tuotantotyyppinen asennus Python Flaskista (Apache mod_wsgi)."  <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

Flaskin tuotantoasennukseen on Tero Karvinen kirjoittanut hyvät ohjeet blogiartikkelissaan Deploy Flask & Python3 on Apache2 & Ubuntu, jota seurasin tämän tehtävän teossa.

  1. Ensiksi tarkistin että tarvittavat ohjelmat löytyvät työasemalta komennoilla sudo apt-get update sekä sudo apt-get install python3 ipython3 python3-flask curl. Jotkin ohjelmat olivat jo asennettu ja joitakin uusia tuli (ipython3 python3-decorator python3-simplegenerictest if flask work) asennettua kun vastasin y alla  viimeisellä rivillä näkyvään kysymykseen:

    pekkakoo@blonk:~$ sudo apt-get install python3 ipython3 python3-flask curl
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    python3 is already the newest version (3.5.1-3).
    python3-flask is already the newest version (0.10.1-2build2).
    curl is already the newest version (7.47.0-1ubuntu2.2).
    The following packages were automatically installed and are no longer required:
      linux-headers-4.4.0-21 linux-headers-4.4.0-21-generic
      linux-image-4.4.0-21-generic linux-image-extra-4.4.0-21-generic
    Use 'sudo apt autoremove' to remove them.
    The following additional packages will be installed:
      python3-decorator python3-simplegeneric
    Suggested packages:
      ipython3-notebook ipython3-qtconsole python3-zmq
    The following NEW packages will be installed:
      ipython3 python3-decorator python3-simplegeneric
    0 upgraded, 3 newly installed, 0 to remove and 10 not upgraded.
    Need to get 648 kB of archives.
    After this operation, 3 559 kB of additional disk space will be used.
    Do you want to continue? [Y/n]
  2. Olin jo aikaisemmassa tehtävässä luonut Flask-ohjelman ja testannut sen toimivuuden, sekä asentanut Apachen jo aikaisemmin, joten hyppäsin ohjeessa suoraan mod_wsg:n asentamiseen, joka tapahtui komennolla  sudo apt-get install libapache2-mod-wsgi-py3. En tiennyt miten testata tämän toimivuutta, mutta ajattelin että eiköhän se pian käy ilmi toimiiko vai ei.
  3. Seuraavaksi loin uuden virtuaalihostasetustiedoston komennolla sudoedit /etc/apache2/sites-available/moi.conf ja kopioin ohjeessa olleen pohjan pienin muokkauksin, minkä myötä moi.conf:n sisällöksi tuli

    ## /etc/apache2/sites-available/moi.conf
    <VirtualHost *>
    
     WSGIDaemonProcess moi user=flaskprod group=flaskprod threads=5
     WSGIScriptAlias / /home/flaskrod/flask/moi.wsgi
    
    <Directory /home/flaskprod/flask/>
     WSGIProcessGroup moi
     WSGIApplicationGroup %{GLOBAL}
     WSGIScriptReloading On
    
     Require all granted
    </Directory>
    </VirtualHost>
  4. Kuten yllä näkyy, ajattelin ajaa Flaskia käyttäjänä flaskprod, jota ei vielä ollut, joten loin sen komennoilla
  5. Seuraavaksi kopioin toisen tunnuksen alaisuudessa luomani Flask-ohjelman flaskprod-tunnuksen kotihakemiston alle luomaani hakemistoon flask ja vaihdoin omistajuudet kuntoon komennoilla

    sudo adduser flaskprod
    sudo mkdir /home/flaskprod/flask/
    sudo cp /home/pekkakoo/publicFlask/main.py /home/flaskprod/flask/
    sudo chown flaskprod:flaskprod /home/flaskprod/flask/
    sudo chown flaskprod:flaskprod /home/flaskprod/flask/main.py
  6. Seuraavaksi laitoin virtuaalihostpuolen kuntoon ohjeen mukaillen katsomalla ensin mitä eri hosteja on jo päällä komennolla ls /etc/apache2/sites-enabled/ ja poistin kaksi käytössä olevaa hostia komennoilla sudo a2dissite pekka.conf ja a2dissite pekkakoo2.conf.
  7. Sen jälkeen komennolla sudo a2ensite moi.conf Flask-virtuaalihostin toimimaan ja käynnistin apachen uusiksi komennolla sudo service apache2 reload, jotta asetusmuutokset astuvat voimaan.
  8. Kokeilin toimivuutta komennolla curl -s http://localhost/|grep title mutta vastaukseksi tuli <title>403 Forbidden</title> kun ohjeen mukaan olisi pitänyt tulla <title>404 Not Found</title>

  9. Päätin tehdä tehtävän ohjeen mukaisesti loppuun ja selvittää virhetilanteen vasta sitten jos se vielä esiintyisi.

  10. Loin seuraavaksi ohjeen mukaan moi.wsgi -skriptin komennolla sudo nano /home/flaskprod/flask//moi.wsgi ja mukaillen ohjetta sisällöksi tuli

    import sys
    
    if sys.version_info[0]<3:       # require python3
     raise Exception("Python3 required! Current (wrong) version: '%s'" % sys.version_info)
    
    sys.path.insert(0, '/home/flaskprod/flask/')
    from main import app as application
  11. Käynnistin Apachen uusiksi komennolla sudo service apache2 restart, jotta asetukset tulisivat voimaan.

  12. Kokeilin uudelleen Flaskin toimivuutta komennolla curl -s http://localhost/, mutta vastaukseksi tuli nyt uudenlainen virheviesti kuin kohdassa 8.

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>500 Internal Server Error</title>
    </head><body>
    <h1>Internal Server Error</h1>
    <p>The server encountered an internal error or
    misconfiguration and was unable to complete
    your request.</p>
    <p>Please contact the server administrator at 
     [no address given] to inform them of the time this error occurred,
     and the actions you performed just before this error.</p>
    <p>More information about this error may be available
    in the server error log.</p>
    <hr>
    <address>Apache/2.4.18 (Ubuntu) Server at localhost Port 80</address>
    </body></html>
  13. Missä vika? Kävin uudelleen läpi ohjeessa käydä asiat läpi, jos olin unohtanut tehdä jonkin kohdan tai mukaillut ohjetta väärin.

    1. Huomasin että tiedostossa /etc/apache2/sites-available/moi.conf oli kirjoitusvirhe, "WSGIScriptAlias / /home/flaskrod/flask/moi.wsgi" olisi pitänyt olla "WSGIScriptAlias / /home/flaskprod/flask/moi.wsgi", korjasin virheen ja käynnistin Apachen uusiksi, sama virheilmoitus yhä.

    2. Kokeilin että Flask-ohjelma toimii komennoilla python3 /home/flaskprod/flask/main.py ja curl http://localhost:5000, vastaukseni 'hei maailma' eli itse ohjelma toimii testiympäristössä.

    3. Kävin ohjeen läpi vielä uudelleen ja huomasin että tiedostossa /etc/apache2/sites-available/moi.conf oli toinenkin virhe, ohjeessa on käytetty esimerkkinä moi.py nimistä ohjelmaa kun minulla on main.py -niminen ohjelma, jote korjasin rivin
      WSGIProcessGroup moi

      muotoon
      WSGIProcessGroup main

    4. Tiedostojen oikeuksia läpikäydessäni huomasin että tiedoston /home/flaskprod/flask/moi.wsgi omistajana oli root, joten vaihdoin tiedoston omistajaksi ja ryhmäksi flaskprod-tunnuksen komennolla sudo chown flaskprod:flaskprod /home/flaskprod/flask/moi.wsgi
    5. Käynnistin Apachen uudelleen ja nyt komento curl -s http://localhost/ palautti tekstin 'hei maailma!'

    6. Kävin vielä huvikseni katsomassa mitä logissa /var/log/apache2/error.log oli asiasta mainittu ja sieltähän molemmat syyt olisivat löytyneet heti

      [Tue Oct 03 20:32:36.703779 2017] [authz_core:error] [pid 6501] [client 127.0.0.1:38674] AH01630: client denied by server configuration: /home/flaskrod
      [Tue Oct 03 20:35:40.278551 2017] [wsgi:error] [pid 6713] [client  127.0.0.1:38708] No WSGI daemon process called 'moi' has been configured: /home/flaskprod/flask/moi.wsgi

g5) Lue tietueita Postgre-tietokannasta Flaskilla.

Tehtävänanto: "Lue tietueita Postgre-tietokannasta Flaskilla." <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>


Flaskin tuotantoasennukseen on Tero Karvinen kirjoittanut hyvät ohjeet blogiartikkelissaan Database Connection from Python Flask to Postgre, Using Plain SQL , jonka avulla tein tämän tehtävän. 

  1. Aloitin tehtävän hakemalla asennettujen ohjelmien päivitykset komennolla sudo apt-get update sekä asentamalla phjeessa mainitut tarvittavat ohjelmat komennolla sudo apt-get install python-flask-sqlalchemy python3-psycopg2
  2. Loin Flask-tuotantotunnukseni flaskprod flask-kansion alle kansion animals komennolla sudo mkdir /home/flaskprod/flask/animals/ ja muutin oikeudet kohdilleen komennolla sudo chown flaskprod:flaskprod /home/flaskprod/flask/animals/
  3. Loin kansion sudo nano /home/flaskprod/flask/animals/moi.py ja kopioin sinne ohjeessa olleen ohjelmakoodin.
  4. sudo mkdir /home/flaskprod/flask/animals/templates
  5. sudo nano /home/flaskprod/flask/animals/templates/animals.html
  6. sudo nano /home/flaskprod/flask/animals/templates/base.html
  7. Laitoin lopuksi kansion oikeudet kuntoon sudo chown -R flaskprod:flaskprod /home/flaskprod/flask/animals/
  8. Tein uuden virtuaalihost-tiedoston komennolla sudo nano /etc/apache2/sites-available/animals.conf, jonka sisältönä oli

    ## /etc/apache2/sites-available/aimals.conf
    <VirtualHost *>
    
     WSGIDaemonProcess main user=flaskprod group=flaskprod threads=5
     WSGIScriptAlias / /home/flaskprod/flask/animals/moi.wsgi
    
    <Directory /home/flaskprod/flask/animals/>
     WSGIProcessGroup moi
     WSGIApplicationGroup %{GLOBAL}
     WSGIScriptReloading On
    
     Require all granted
    </Directory>
    </VirtualHost>
  9. Otin uuden virtuaalihostin käyttöön komennoilla sudo a2ensite animals.conf ja sudo service apache2 reload tarkistettuani komennolla ls /etc/apache2/sites-enabled/ ettei muita virtuaalihosteja ole käytössä
  10. Kokeilin ohjelman toimivuutta avaamalla Firefoxissa osoitteen http://127.0.0.1/, mutta sain virheilmoituksen Internal Server Error
  11. Komennolla tail /var/log/apache2/error.log näkyi virheilmoitus puuttuvasta määrityksestä, mikä ihmetytti sillä virheilmoituksessa mainitussa tiedostossa oli mielestäni kaikki oikein:

    [Tue Oct 03 22:40:35.141402 2017] [wsgi:error] [pid 9478] [client 127.0.0.1:39712] No WSGI daemon process called 'moi' has been configured: /home/flaskprod/flask/animals/moi.wsg


  12. Päätin testata  toimiiko itse ohjelma komennolla sudo python3 /home/flaskprod/flask/animals/moi.py, vaikka ylempi virheilmoitus ei vaikuta johtuvan itse ohjelmasta. Tulikin uusi virheilmoitus

    $ sudo python3 /home/flaskprod/flask/animals/moi.py 
    [sudo] password for pekkakoo: 
    Traceback (most recent call last):
      File "/home/flaskprod/flask/animals/moi.py", line 5, in <module>
        from flask_sqlalchemy import SQLAlchemy
    ImportError: No module named 'flask_sqlalchemy'
  13. SQLAlchemy oli kuitenkin jo asennettu kohdassa yksin komennossa sudo apt-get install python-flask-sqlalchemy python3-psycopg2 ja asennuskomennolla sudo apt-get install python-flask-sqlalchemy tulikin ilmoitus että ohjelma on jo asennettu python-flask-sqlalchemy is already the newest version (1.0-3).
  14. Päätin tässä vaiheessa luovuttaa sillä en tiennyt mistäpäin ongelmaa lähtisi ratkomaan ja aika alkoi käydä vähiin, ja vielä olis pitänyt ainakin luoda kanta postgressiin ohjelmaa varten jos sen olisi saanut edes ajettua, ja vielä oli messuraportti kirjoitettavana.

a) Messuraportti Cyber Security Nordic -messuilta keskiviikkona 27.9.2017

Kävin Helsingin Messukeskuksessa järjestetyissä Cyber Security Nordic -messuilla keskiviikkona 27.9.2017 osana Linuxpalvelimet (ict4tn021-5) kurssia tarkoituksena tutustua vertaillen kolmeen tuotteeseen tai esitelmään. Saavuin Messukeskukseen noin kello 10.35, sisään pääsi nopeasti ilman jonottamisia mutta myöhästyin silti pari minuuttia kello 10.50 alkaneesta ensimmäisestä itseäni kiinnostaneesta esityksestä, sillä en ensin löytänyt Cyber Security Nordicin aluetta vaan harhailin kaksissa muissa messuissa ennen oikean alueen löytämistä. Ehdin pistää kuitenkin huomiolle Cyber Security Nordic messualueen läpikulkiessa että alue oli pieni, synkkä ja esittelijöitä aika vähän verrattuna muihin samaan aikaan käynnissä oleviin messuihin. 

Koska olin myöhässä niin en saanut istumapaikkaa ensimmäisestä esityksestä, ellen olisi kivunnut perällä oleville porrastetuille yleisörehtereille kuuntelemaan esitystä, jonka piti CGI Oy:n Jan Mickos, titteliltään vice president, cyber security aiheena Tarinoita kentältä - vakavaan tietomurron selvittäminen. Seisoin esityksen ajan salin sisäänkäynnin vieressä ja kirjailin muistiinpanoja puhelimessani olevalla EverNote-ohjelmalla. Jan Mickosin 40 minuutin esitys oli mukaansatempaava ja johdonmukainen, joskin välillä esiintyi termejä ja kirjainlyhyenteitä kuten IoC ja IoA jotka eivät minulle täysin avautuneet. Jälkikäteen tarkistin että IoC tarkoittaa Indicator of Compromisea (wikipedia) ja IoA on lyhenne termistä Indicator of Attack (Indicators of Attack vs. Indicators of Compromise). Käsittääkseni IoC:n ja IoAn ero on siinä IoC:t voivat olla, tai eivät ole, normaalia tapahtumia, kuten korotettujen oikeuksien käyttämistä. Niitä voi esiintyä normaalitilanteessa, mutta ne voivat olla myös merkkejä tietoturvamurrosta tai sen yrityksestä. IoAt puolestaan kuvaavat toimintoja, joita käytetään tietoturvarikkomuksissa ja niiden perusteella yritetään selvittää mikä on tietoturvarikosta yrittävän tarkoitus ja mitä hän toiminnoilla yrittää saavuttaa.

asass
Kuva Jan Mickloksen esityksestä.

Itselleni ehkä suurimman ahaa-elämyksen esityksessä tuotti ajatus siitä, että kun organisaatiolla verkkotapahtumia on päivittäin kymmeniä tuhansia verkkotapahtumia, pitää organisaation normaalitilanne tuntea hyvin. Normaalitilanteen tuntemiseen kuuluu myös tietää mitä eri komponentteja, ohjelmistoja ja muita yrityksellä on käytössä ja peilata niitä ajan tasalla olevaan uhkakuvaan. Esimerkiksi pitäisi tietää mitä tietokantapalvelinohjelmistoversioita on käytössä ja olla kartalla minkälaisia uhkia niihin mahdollisesti liittyy. Jos uhkat liittyvät versioihin joita ei ole käytössä, niin silloin ei kannata laittaa resursseja varautumisenkaan. Ilman normaalin tilanteen tuntemista lukuisten tapahtumien joukosta ei voida huomata poikkeuksia ja anomalioita, kuten kuuluvia ylimääräisiä korotettujen oikeuksien kirjautumia, tietokantojen lukuoperaatioiden kasvuja tai outoa verkkokäyttäytymistä. Jos näitä poikkeuksia ei huomata, niin niihin ei voida myöskään varautua tai selvittää. Mickos korosti myös tietoturvapoikkeuksien tai -murtojen selvityksen tärkeyttä: pitää kerätä riittävästi tietoa, miettiä mitä on voinut käydä ja kerätä todisteita saadakseen tarkan tiedon mitä on käynyt ja sen perusteella luoda oikea kokonaiskäsitys, ennen kuin ryhdytään ehkäiseviin tai estäviin toimenpiteisiin. Hän korosti myös sitä että ei pidä enneaikaisesti paljastaa tietoturvarosvoille että heidät on huomattu, jotta he eivät lopeta toimintaansa ja peittele jälkiään, jolloin heidän kiinnisaamisensa vaikeutuu. Kaiken kaikkiaan esitys oli hyvin mielenkiintoinen ja sisältö vastasi esityksen otsikkoa joskin hiukan häiritsi että esityksen kalvot olivat englanniksi, mutta esitys suomeksi. Lisäksi konkreettisia esimerkkejä olisi ehkä kaivannut enemmän. Onneksi sellaisia tuli heti seuraavaksi alkaneessa esityksessä muutamia.

Toinen esitys, jonka halusin kuulla, alkoi heti Jan Mickosin esityksen jälkeen ja esitys käsitteli miten organisaatio voisi kehittää asemiaan kybertuvallisuuden saralla. Esityksen piti konsulttiyhtiö Accenturen senior security principal Antti Ropponen otsikkona Kokemuksia kentältä - Kun oikeasti haluat ottaa seuraavan askeleen kyberturvallisuudessa. Antti Ropponen esitti alkuun Accenturen tekemästä tutkimuksesta melko suurelta vaikuttavia lukuja siitä kuinka 3/4 johtajista uskoo että heidän organisaatioissaan kyberturvallisuus on hyvällä tolalla ja 70% kokee kyberturvallisuuden olevan integroituneen osaksi organisaation kulttuuria.

Ropposen kertomat esimerkit tietoturvatiimin saamasta toimeksiannosta ryöstää pankki tai räjäyttää öljynjalostamo olivat hyvin mielenkiintoisia ja avasivat hyvin mitä kaikkea organisaation tulisi ottaa huomioon kyberturvallisuuden saralla. Pankkiryöstön esimerkissä tiimi oli päässyt helposti ilman kehittyneitä välineitä läpi organisaation ensimmäisistä suojauksista läpi konfiguraatio- ja inhimillisiä virheitä hyödyntäen päästen käsiksi organisaation sähköpostiin. Pankkiorganisaatio oli kuitenkin mielestään panostanut rahaa ja työvoimaa ollakseen kyberturvallisuuden saralla kyvykäs. Vaikka panostuksien myötä tietoturvamaturiteetti oli sinänsä korkea, tietoturvatehokkuus, eli laitetun panoksen hyötysuhde oli pieni. Pankin johdon mukaan rahaa ei kuitenkaan tulisi häviämään liiketoiminnan kontrollien vuoksi, vaikka tekniikka petti, mutta viikossa tästä tiimi olisi onnistunut kähveltämään puoli miljoonaa rahaa, eli liiketoiminnan kontrollitkin pettivät. Tämä olikin mielestäni yksi Ropposen esityksen mielenkiintoisin pointti että tietoturva ei ole vain tekniikkaa tai IT-osaston heiniä, vaan siinä tulee ottaa huomioon myös liiketoiminnan prosessit ja kontrollit sekä inhimilliset tekijät. Esimerkiksi öljynjalostamon räjäytysesimerkissä tietoturvatiimi oli onnistunut saamaan haltuunsa salaiset ajurin jalostamon yhteistyökumppaneilta/alihankkijoilta sosiaalisen hakkeroinnin keinoin. Verkostoituneessa liiketoiminnassa, jossa käytetään alihankkijoita, yhteiskumppaneita ja ostetaan IT-palveluita pilvipalveluista, tulee huolehtia myös näiden oman organisaation lisäksi sillä tietoturvan heikko kohta saattaa olla missä vain liiketoimintaketjua.


Kuva Antti Ropposen esityksestä, jossa käy ilmi kuinka pitkä arvoketju voi olla ja kuinka monessa kohtaa haavoittuvuuksia voi esiintyä.

Esimerkkien läpikäynnin jälkeen Ropponen päätti esityksensä neljään askeleeseen, jotka organisaation kannattaa ottaa, jotta se pystyisi parantamaan asemiaan tietoturvan saralla. Askeleet olivat

  1. Jatkuva innovointia tukeva toimintamalli
  2. Kyvykkyyksien kokonaisvaltainen painetestaus
  3. Uhkakuvien ja uusien, avoimien, innovaatioiden hyödyntäminen
  4. Jatkuva mittaus

Ropposen esityksen otsikko vastasi esityksen sisältöä, oli kokemuksia kentältä sekä konkreettisia vinkkejä kuinka edetä kyberturvallisuuden saralla ja pidin erityisesti siitä kuinka esityksessä huomioitiin ettei tietoturva ole vain tekninen ja nörttien asia vaan koko liiketoiminnan ja siinä toimivien ihmisten asia.

Kolmas esitys, jonka halusin kuulla oli aikataulutettu alkamaan vasta iltapäivällä kello 14, joten oli hyvää aikaa käydä muilla messuilla, kahvilla ja syömässä Messukeskuksen viereisessä opiskelijaravintolassa Pääraiteessa.  Kolmannen kuuntelemani esityksen piti Antti Kurittu, erikoisasiantuntija Viestintäviraston kyberturvallisuuskeskuksesta otsikolla Ennaltaehkäisy, havaitseminen ja tutkinta - vinkkejä yrityksille. Antti Kurittu on aikaisemmin toiminut poliissa kyberrikoksien tutkinnassa, joten hänellä oli paljon omakohtaisia kokemuksia tietoturvarikoksien selvittämisestä ja esitykseen oli poimittu runsaasti oikean elämän esimerkkejä, joissa monissa Kurittu oli itse ollut mukana tutkimuksissa. Kuritun esitelmä oli muutenkin hyvin käytännönläheinen ja konkreettinen, kuten kuva yhdestä hänen käyttämästään esimerkistä näyttää.


Yleensä kun lakipykälät tuodaan tietoturvaan liittyvissä esityksissä esille, kalvoilla olevia lakipykäliä vain luetaan suoraan, mutta Kurittu esitteli esimerkkien ohella mielenkiintoisesti mitkä eri lait määrittelevät tietoturvarikoksia, mitä eri nimikkeitä voidaan käyttää ja millaisia ongelmia esimerkiksi niihin voi liittyä. Esimerkiksi hän pohdiskeli useamman kalvon ajan onko porttiskannaus rikos tullen johtopäätökseen että asia riippuu käyttötarkoituksesta ja työkalu sinänsä ei ole laiton vaikka sitä voidaan käyttää laittomasti ja että lakien soveltaminen ja oikeudenkäyttö yleensä on tulkinnanvaraista.

Lakien ja rikosnimikkeiden käsittelyn jälkeen Kurittu keskittyi tietoturvaongelmien ehkäisyyn ja antoi hyviä käytännön vinkkejä ajan tasalla olevien laitteistojen ja ohjelmistojen käyttämisestä verkon jakamiseen ja lokien aktiiviseen seurantaan. Hän myös korosti että riittävän teknisen suojautumisen tason pitää joka organisaatio miettiä itse esimerkiksi käsiteltävän tiedon laadun ja luonteen pohjalta. Hän myös korosti että tietoturva ei ole vain tekniikkaa tai pelkkä ohjelmistotuote, vaan tapa toimia, mikä oli samansuuntainen ajatus kuin Accenturen Antti Ropposen esityksessä. Vinkki oman verkon tuntemisen tärkeydestä oli samankaltainen ohje kuin CGI:n Jan Mickloksen esityksessä aamupäivällä.

Esityksen lopussa tuli vielä käytännön vinkkejä mitä tehdä kuin tietomurto on tapahtunut. Yllättävää mielestäni oli Kuritun huomio että tietomurron yhteydessä useasti ryhdytään siivoamiaan murron aiheuttamia jälkiä esimerkiksi sulkemalla tietokoneet tai poistamalla asennetut haittaohjelmat jolloin samalla tuhotaan todisteita. Tämä on toisaalta luonnollista, esimerkiksi fyysisessä maailmassa tapahtuneen kotimurron yhteydessä varmaankin ensireaktioita on sulkea murtautuneen avaama ikkuna tai korjata lattialle heittämät tavarat, mutta näin ei pitäisi tehdä, ei myöskään tietotekniikan puolella. Lokien, muistijälkien ja levynkuvien talteenottaminen on tärkeää, jotta ongelmaa voidaan tutkia myöhemmin kuten Kurittu totesi. Mutta, kuinka monella pienellä organisaatiolla on tälläiseen kykyä tai lähteä tekemään tietomurrosta rikosilmoitusta kun rikoksen tutkimis ja tuomitsemisprosessit ovat pitkiä ja lopputulos epävarma.

Jäin esityksen jälkeen miettimään oliko esitys ehkä liian käytännönläheinen ajatellen sen ensisijaista kohdeyleisöä eli yrityksien tietoturva-asiantuntijoita ja muita asiaan perehtyneitä. Itselleni esitys oli kuitenkin antoisa, sisältö vastasi otsikkoa ja antoi hyvän katsauksen kuinka tietoturvarikoksia ennaltaehkäistään, havaitaan ja tutkitaan.

Alla on vielä matkapuhelimeni EverNote-ohjelmalla paikan päällä kirjoitetut muistiinpanot alla kolmesta kuuntelemastani esityksestä.

 Jan Mickos (CGI): Tarinoita kentältä - vakavan tietomurron selvittäminen

Respond
Detect
Prevent
Identify

Monta cmdb pitäis olla

Tapahtumatietojen keruu ja rikastaminen, peilaaminen tilanneuhkakuviin
 
ioc

Theat intelligence analysis

Eri tyypin ongelmat
Privacy violations
Loss of intellecteaul property (keskittyy)

Preventive
Detective control
- hyvä uhkatilanbekuva
- Hyvä kuva normaalista
Retrospective
- etsitään tuntematonta

Satoja miljoonia tapahtymia
95% perustunkeutumisasioita

Luokittelu
Kriittusyys 1-4 ja kiireellisyys
Critical, high medium low
Urgent...

Threat hunting
- iterariivibeb: detect, analyze, hypothesis, investigate
Indikaatiot detect looppiin

Hypoteesi: spekulointia? Skenaarion luonti mitä tapahtunut, totta vai tarua
- uusia tutkittavia kohteita
- riiittävä kokonaiskäsitys ennen vastetta ettei tule hätiköityä

IoA
IoC
TTP tekniikka taktiikka prosessi
- tekijän attribuointi, jotta tiedetään miten toimia

Continous monitoring
Theat intelligence
Threat hunting

Cicle of trust kun tietoa uhkista jaetaan
 Ei pidä paljastua uhkaajalle liian aikaisin, ajoitus tärkeää
 
Forensic frend (?)

Pitää tietää mitä laitteita/sovelluksia jotta voi arvioida responsea (asset management)
- jos viety käyttäjän tunnukset, vaikea havaita
- miten normisti käytetään; geolokaatio, tuhansien tietojen lataus tikulle
- normaalin tunteminen, ei vain infran ja haittaohjelmien tuntemus
Turvatuotteet pyörii isoilla kreduilla, ei valvota

Uhkatilannetiedon vaihto
- ajankohtainen tieto ettei resurssit mee hukkaan
- kertoo mistä saadaan uhkatietoa (valkoinen teksti)

Pähkinä
- kyky ja halu tunkeutua
- vaikea havaita
- yhteistyö muiden toimijoiden kanssa
- tutkinta rauhassa
- ei hätiköityjä päätöksiä

 Antti Ropponen (Accenture Oy): Kokemuksia kentältä - kun oikeasti haluat ottaa seuraavan askeleen kyberturvallisuudessa

Seuraava askel kyberturvallisuudessa
Miten kehittää

Tekniset ja hallinnolliset arviot

Arviointi, iso roadmap, mutta muutos pientä havaintoon nähden

3/4 johtajista luottavaisia että kyberturvallisuus hyvällä tolalla
70 % kyberturva täysin integroitua osaksi organisaarion kulttuuria

Caseja
Pankki kyvykäs kyberturvallisuuteen laittaa rahaa ja panostusta
Tehtävä ryöstää pankki, 6vko etusuojauksista läpi, peruskeinoin, ei kehittyneitä välineitä
- konfiguraatiovirheet, inhimilliset virheet
Pääsy kontrolleri, sposti
Maturiteetti korkea, tehokkuus pieni, liiketoiminnan kontrolli estää rahan häviäminen
- viikko seurantaa niin 0.5milj rahaa

Mitä jää arvoketjun ulkopuolelle
- pilvi, kumppanit, ulkoistus
- missä on heikoin lenkki
- downstream, middlestream, upstream

Öljyjalostamon räjäytys
Yksi palomuuri erottaa operation ja it
Vendoroiden läpikäynti ja heiltä tiedonhaku, salaiset ajurit kontrolleriin sosisaalisin hakkeroinnin keinoin

Kiinnitä huomiota maturiteetti, tehokkuus, ekosysteemi

Startupeista kokeilevampi kulttuuri liiketoimintaan, sama mentaliteetti kyberturvallisuuteen

4 kohtaa kun oikeasti haluaa panostaa
1. Jatkuvaa innovointia tukeva toimintamalli

2. Painetestaa kyvykkyyksiä kokonaisvaltaisesti
- keskittyminen liiketoiminnan hermokeskuksiin, liiketoiminnan kontrollit, operatiiviset kontrollit
- myös laaja haittaohjelmien hyökkäys

3. Hyödynnä uhkakuvia ja uusia, avoimia innovaatioita
- uudet innovaatiot: avoimien lähdekoodien ohjelmat, mm. SIEMit, amerikassa citibank, kontribuoi yhteisöön

4. Mittaa jatkuvasti
- maturiteetti
- myös ei-teknisiä, budjetti, tyytyväisyys

Pieniä askelia, ei suuria mutta 30 pv - 2 kk mittasia

 Antti Kurittu (Viestintäviraston kyberturvalllisuuskeskus): Ennältaehkäisy, havaitseminen ja tutkinta - vinkkejä yritykselle

Tietomurto fokuksena, käsittää kaikki laittomat murtautumiset

Ei meillä tietomurtoa... skannerit pyörii, js on puhelinnumeroita ja muita
"Murtaudutaanko meille" kyllä
- digital ocean esimerkki
Mikä on kyberhyökkäys? Bottiajo javai rahan varastaminen
22 minuuttia niin eka murtautumisyritys
Spamhaus luotettava

Hakkereiden henkilöbrändi... tekee virheen ja nettibrändi ja henkilöllisyys yhdistyy

Tietotekniikkarikokset rikoslaissa
2245 kpl 7v ajalta ttrikos
Kyberrikokset, ei voi tietää
- valtaosaa ei havaita, eikä ilmoiteta, eikä valtsosaa luokitella oikein

5pykälä voi käyttää laajasti

8pykälä: oikeudettamasti... turvajärjestelyt ohittaen

Sql-injektio: manipuloidaan syötettä saadakseen muuta kuin tarkoitettuja tietoa

Porttiskannaus rikos?
Voisi olla tietomurron yritys, mutta mitä jos tehdään viestintövirastossa
Teko ei sinänsä rikollinen vaan miksi tehdäön, voi olla lainperusteinen tarkoitus

Asianomistajan velvollisuus dokumentoida että tehty rikollisissa tarkoituksissa
- Tapiolapankilla haavoittuvuusmetsästyskisa

Helppo pitää ajantasalla lsitteet ja ohjelmat vaikka ehkä kallista
- keskimäärin 2v vanhoja haavoittuvuuksia käytetään tietomurroissa

Teknisen suojautmisen taso
- ei voi ostaa kaupasta vaan tietoturva taso toimia
- reuna ei riitä jos sisällä voi mellastaa

Kaikkein vähiten muuttuu ihminen
- yleensä alkaa ihmisestä tietomurrot
- termi spear fishing
- inhimillisten ihmisten parhaita puolia käytetään hyvöksi: auttaminen, nopea päättelykyky
Shokkireaktion aiheuttaminen spostitse

Havaitseminen
- hyökkäyspinta-alan piennennys
- oman ympäristön tunteminen

Logien keräys sekä analysointi!

Ulkopuoliset lähteet, ilmaiseksikin hyviä
70 viestintöviraston kyberissä

Kun havaitset tietomurron
- älä siivoa
- voi rakentaa todisteista pitävän kertomuksen
- ulkopuolinen security tiimi

Hkin poliisilaitoksella kuus tietotekniikkarikoksia tutkivaa, yks tutkinnanjohtaja

Voi kestää kauan tutkinta 
Vika palapelin voi olla oma rikosilmotus

Alihankinta
- logit yhdessä vai samassa muiden asiakjaiden kanssa palveluntarjoajalla

Taktinen tutkinta: telepakkokeinot, kotietsintä yms

Kyberkeskus kiinnostaa ilmiöt, poliisia tekijä

Esimerkkejä
- shakkifoorumi amerikassa, oliki 132 suomalaista murtoa lisäksi
- suomipoika 3500 kaapattua konetta
- 17v 50 700 tietomurtoa bottiverkolla
- tekes.fi - hakemuksien haku - syyttämättäjättämispäätös
- tullin pääjohtajan spostit

Hyvä yhteenveto

Onko kohdeyleisö oikea, opiskelijalle hyvä setti, vastaa otsikkoa



Lähteet

Karvinen, Tero. 17.8.2017. Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op. Luettavissa http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op. Luettu 3.10.2017.

Karvinen, Tero 9.5.2017. Hello Flask Web App – Python 3 Flask Development Server Install on Ubuntu 16.04. Luettavissa http://terokarvinen.com/2017/hello-python-flask-web-app-development-server-install-on-ubuntu-16-04. Luettu 3.10.2017.

Karvinen, Tero. 9.2.2016. Deploy Flask & Python3 on Apache2 & Ubuntu. Luettavissa http://terokarvinen.com/2016/deploy-flask-python3-on-apache2-ubuntu. Luettu 3.10.217.

Karvinen, Tero. 16.2.2016. New Default Website with Apache2 – Show your homepage at top of example.com, no tilde. Luettavissa http://terokarvinen.com/2016/new-default-website-with-apache2-show-your-homepage-at-top-of-example-com-no-tilde. Luettu 12.9.2017.

2xxx success. Luettavissa https://httpstatuses.com/200. Luettu 12.9.2017.




6. Kotitehtävät 

Työasema: Acer Aspire 5750G (Intel Core i5-2420M 2.4 GHZ, NVIDIA GeForre GT 520M, 6GB memory)
Käyttöjärjestelmä: Ubuntu 16.04.3 LTS (Linux blonk 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux)

a) 'Hei maailma" kolmella kielellä

Tehtävänanto: "Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt." <Tero Karvinen: Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op>

Bash

Ensimmäisenä kielenä perinteinen bash-komentotulkki, joskin voiko bashia kutsua kieleksi ...

  1. Ensin ohjelmistojen päivitys komennolla sudo apt-get update
  2. Ensimmäiseksi loin kotihakemistooni uuden hakemiston komennolla mkdir basch-script-example ja siirryin kansioon
  3. Tarkistin nopeasti google-haulla bash skripti (https://www.google.fi/search?q=bash+skript) mikä olikaan ensimmäisen rivin oikea syntaksi , vastaus löytyi ensimmäisenä hakutuloksena tulleesta Linux.fi:n artikkelista Bash-skriptaus.
  4. Avasin uuden moikka -nimisen tiedoston komennolla nano moikka
  5. Tekstitiedoston moikka sisällöksi kirjoitin

    #!/bin/bash
    Echo "Hei Maailma"
  6. Tallensin tiedoston ctrl + x, yes, enter.
  7. Muistin torstain 6.10. 2017 Linux-palvelimet -kurssin tunnilta,  että ajettaville komentosarjoille tulee antaa suoritusoikeus, joten annoin suoritusoikeuden komennolla chmod u+x moikka
  8. Kokeilin komennon ajoa muodossa ./moikka ja vastaukseksi terminaaliin tulostui Hei maailma
  9. Kopioin lopuksi komennon kansioon /usr/local/bin -kansioon, jotta voin jatkossa ajaa komento ilman pistettä ja kauttaviivaa, kopiointi onnistui komennolla sudo cp moikka /usr/local/bin/
  10. Testasin vielä komennolla moikka että komennon ajo, mutta tulikin virheilmoitus Permission denied.

    $ moikka
    bash: /usr/local/bin/moikka: Permission denied
  11. Tarkistin komennolla ls -la /usr/local/bin/moikka mitkä ovat tiedoston oikeudet

    drwxr-xr-x  2 root root 4096 loka  10 23:12 .
    drwxr-xr-x 10 root root 4096 huhti 21  2016 ..
    -rwxr--r--  1 root root   32 loka  10 23:12 moikka
  12. Tiedosto-oikeuksista huomasin että virheilmoitus johtui tiedoston omistajaksi ja ryhmäksi oli muuttunut kopioinnin myötä root-käyttäjä eikä omistajan ryhmällä tai muilla käyttäjillä ollut tiedostoon suoritusoikeuksia.
  13. Korjasin tilanteen komennolla sudo chmod og+x /usr/local/bin/moikka
  14. Tarkistin komennolla ls -la /usr/local/bin/moikka että oikeudet olivat muuttuneet halutunlaisiksi

    drwxr-xr-x  2 root root 4096 loka  10 23:12 .
    drwxr-xr-x 10 root root 4096 huhti 21  2016 ..
    -rwxr-xr-x  1 root root   32 loka  10 23:12 moikka
  15. Annoin komennon moikka jolloin terminaaliin tulostui teksti Hei maailma kuten oli tarkoituskin

    $ moikka
    Hei maailma

PHP

Toisena kielenä päätin kokeilla PHPta

  1. Koska työasemallani oli jo PHP asennettuna ja en halunnut poistaa sitä, niin käynnistin koneeni Xubuntu 16.04.3 käyttöjärjestelmän sisältävällä livetikulla.
  2. Xubuntun käynnistymisen jälkeen kytkin koneen langattomaan verkkoon
  3. Vaihdoin näppäimistön suomenkieliseksi komennolla setxkbmap fi
  4. Ajoin päivityksen komennolla sudo atp-get update
  5. Asensin minimaalisen PHP-ympäristön (Apache, PHP ja curl) komennolla sudo apt-get install apacha2 libapache2-mod-php
  6. Tarkistin asentuneen PHP:n version komennolla php -v, PHP oli versiota 7.0.22.
  7. Kun tarvittavat ohjelmat oli asennettu, loin yksinkertaisen php-tiedoston komennolla nano /var/www/html/testi.php, sisältönä

    <html><head>
    <title>Testing php</title>
    </head><body>
    
    Alku
    
    <?php echo 'Hei maailma';?>
    
    Loppu
    </body></html>
  8. Talletettuani tiedoston avasin Firefoxilla osoitteen http://localhost/testi.php/, jolloin aukeni sivu jolla luki Alku Hei maailma Loppu. PHP-osuuskin siis toimi html-sivun sisällä.

  9. Kävin lopuksi poistamassa sivusta /var/www/html/testi.php sanat Alku ja Loppu sanat niin sivuille jäi näkyviin vain tehtävänannon mukainen Hei maailma -teksti.

Python

Kolmanneksi kieleksi valitsin pythonin, sillä tunnilla käytyä esimerkkiä lukuun ottamatta en ole sitä käyttänyt. Xubuntu 16.04:ssa tulee python oletusasetuksen mukana, joten ennen aloitusta vain tarkistin vain komennolla python -V mikä versio pythonista on livetikulla käynnistämässäni Xubuntu 16.04:ssa asennettu. Pythonin versio oli 2.7.12.

  1. Tein ensiksi komennolla mkdir python kansion python kansion /home/xubuntu/ alaisuuteen.
  2. Seuraavaksi loin tekstitiedoston heippa.py komennolla nano heippa.py, jonka sisällöksi tuli:

    print("Hei maailma")
  3. Tallensin tiedoston.

  4. Testasin tiedoston toimivuutta komennolla python heippa.py ja terminaalille tulostuikin toivottu lopputulos eli Hei maailma

    ~/python$ python heippa.py 
    Hei maailma
    ~/python$ 

Lähteet

Karvinen, Tero. 17.8.2017. Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op. Luettavissa http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op. Luettu 3.10.2017.

Linux.fi. Bash-skriptaus. Luettavissa https://www.linux.fi/wiki/Bash-skriptaus. Luettu 10.10.2017

Linkkejä

Edit su 3.9.2017 klo 20.34: Siirretty tehtävä h1 omalle sivulleen, tällä sivulla näytetään sivun (ja tulevien harjoitussivujen sisältö).

Edit 5.10.2017: Lisätty linkkeihin Explain Shell


  • No labels