Linux Palvelimet ICT4TN021

Kurssin nimi: Linux Palvelimet ICT4TN021

Oppilaitos: Haaga-Helia ammattikorkeakoulu

Kurssin vetäjä: Tero Karvinen

Suorittaja: Pasi Petrell

Sisällysluettelo:

Harjoitus 1
Harjoitus 2
Harjoitus 3
Harjoitus 4
Harjoitus 5 – Messuraportti
Harjoitus 5 – Muut tehtävät
Harjoitus 6

Harjoitus 6

a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.

b) Palauta linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi. Arviointi tehdään ensisijaisesti tästä linkistä. Linkki voi olla esimerkiksi blogin etusivu (jos blogissa on vain kotitehtävät) tai sivuun, jossa on linkki kuhunkin kuuteen tehtävään.

Tehtävä a) Suorita ”Hei maailma” kolmella kielellä

17:20 9.10.2017

Aloitettu tehtävä yrittämällä tulostaa ”Hello World!!” ensimmäiseksi html:n avulla:

Käytetty harjoituksessa jälleen virtuaalipalvelinta, joten apache oli harjoitusta tehdessä jälleen valmiiksi asennettuna (voitaisiin asentaa komennolla ’sudo apt-get -y install apache2’).

Aiempien harjoitusten jäljiltä käyttäjän kotihakemistosta löytyy jo public_html kansio. Lisätty em. kansioon harjoitusta varten uusi ’html’ niminen kansio komennolla ’mkdir html’.

Siirrytty kansioon ja luotu yksinkertainen index.html sivusto komennolla ’nano index.html’.

Jotta sivusto saadaan näkymään kotisivujen kautta, pitää sille luoda uusi .conf tiedosto /etc/apache2/sites-available/ kansioon. Koska ajateltu, että harjoituksessa käytetään html:n lisäksi myös php:ta, luodaan html:lle ja php:lle yhteinen .conf tiedosto. Ennen .conf tiedoston luomista käyty luomassa public_html kansioon toinen kansio php-sivustoa varten komennolla ’mkdir php’.

Luotu kansioon yksinkertainen index.php tiedosto (’nano index.php’), joka tulostaa tekstin ”Hello World!”:

Jotta php-sivut saataisiin toimimaan apachen kautta, apachessa on oltava tarvittavat php-paketit asennettuna. Virtuaalipalvelimelle ei ollut vielä paketteja asennettuna, joten asennettu ne palvelimelle komennolla ’sudo apt-get install apache2-utils libapache2-mod-php7.0’.

Luotu seuraavaksi aiemmin mainittu .conf tiedosto html- ja php-sivuille syöttämällä komento ’sudoedit /etc/apache2/sites-available/hello_world.conf’ ja lisäämällä kuvassa näkyvät arvot tiedostoon.

Hello_world.conf tiedoston luonnin jälkeen .conf tiedosto pitää vielä aktivoida. Tehty aktivointi komennolla ’sudo a2ensite hello_world.conf’ ja uudelleenkäynnistämällä apache-palvelu komennolla ’sudo service apache2 restart’.

Käyty katsomassa miltä tilanne näyttää selaimen puolella syöttämällä selaimeen osoite ’testidomain.life/~pasi/html’ html-tiedoston  ja ’testidomain.life/~pasi/php’ php-sivujen testaamiseksi . Html-sivusto aukesi testattaessa ilman ongelmia, mutta php-sivusto näkynyt edelleen tyhjänä.

Ongelmaa hieman tutkittua tyhjän sivun näkymisen syyksi ilmeni loppujen lopuksi, ettei käyttäjän sivustojen php-scriptien ajamista oltu vielä aktivoitu. Aiempien harjoitusten ansiosta tiedetty, että tarvittava määritys löytyy php.7.0.conf tiedostosta, joka sijaitsee kansiossa ’/etc/apache2/mods-available/’. Editoitu em. tiedostoa komennolla ’sudoedit /etc/apache2/mods-available/’ ja kommentoitu kuvassa näkyvä asetus pois käytöstä.

Bootattu apache uudelleen komennolla ’sudo service apache2 restart’ ja testattu avata php-sivusto uudelleen selaimeen. PHP-sivuston ’Hello World!’ teksti näkyi nyt ilman ongelmia:

Viimeisenä kielenä testattu tulostaa ”hello world” pythonin avulla.

Luotu pythonille oma kansio public_html kansioon komennolla ’mkdir python’ ja luotu sinne uusi tiedosto index.py komennolla ’nano index.py’. Syötetty tiedostoon kuvassa näkyvä koodi:

Virtuaalipalvelimelle oli jo flask-asennuksen jäljiltä python valmiina asennettuna, joten ylimääräisiä paketteja ei tässäkään tapauksessa tarvittu asentaa. (asennusprosessin voi katsoa tehtävästä j5).

Tiedoston luonnin jälkeen syötetty komento ’python3 index.py’, minkä jälkeen voitiin todeta konsolin tulostaneen tekstin ’Hello World!’ ruudulle:

18:35 9.10.2017

Tehtävä b) Palauta linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi.

Kotitehtävät löytyvät sivulta (eli sivulta, jota juuri luet):

https://petrellprotos.wordpress.com/linux-palvelimet-ict4tn021/

Eri tehtäviin siirtyminen onnistuu sivuston alussa olevien linkkien avulla. Tehtäväraporttisivuston linkki on palautettu 9.10.2017 myös moodlen puolelle.

———————————————————————————————————–

Harjoitus 5 – Muut tehtävät
j5) (ryhmä 5-to) Kirjoita oma “hei maailma” Flaskin testipalvelimella.
f5) (ryhmä 5-to) Tee tuotantotyyppinen asennus Python Flaskista (Apache mod_wsgi).
g5) (ryhmä 5-to) Lue tietueita Postgre-tietokannasta Flaskilla.
Tehtävä j5) – Hei maailma Flaskilla

17:21 2.10.2017Aloitettu tehtävä kirjautumalla SSH:n avulla aiemmassa tehtävässä luodulle virtuaalipalvelimelle (yhteys otettu palvelimeen Putty:n avulla).

Ajettu ennen muita toimenpiteitä päivitykset virtuaalipalvelimelle komennolla ’sudo apt-get update’. Seuraavaksi asennettu tarvittavat paketit komennolla ’sudo apt-get -y install python3-flask-sqlalchemy python3-psycopg2’.

Pakettien asennuksen jälkeen jatkettu tehtävää luomalla käyttäjän kotikansioon uusi kansio flaskia varten komennolla ’mkdir publicFlask’. Siirrytty kansioon ja luotu uusi python tiedosto komennolla ’nano main.py’.

Kirjoitettu main.py tiedostoon kuvassa näkyvä koodi:

Testattu tämän jälkeen python-sivuston toiminta:
Käynnistetty main.py sivusto pythonissa komennolla ’python3 main.py’ ja katsottu, että palvelu käynnistyy, OK.

Avattu palvelimelle toinen konsoliyhteys puttyllä ja syötetty konsoliin komento ’curl 127.0.0.1:5000’. Ja kuten kuvasta ilmenee, curl palautti juuri luodun Hello!-sivuston tekstin. Yhteydenotosta tuli myös merkintä pythonin puolelle:

Tehtävässä apuna käytettyjä lähteitä:
http://terokarvinen.com/2017/hello-python-flask-web-app-development-server-install-on-ubuntu-16-04

Tehtävä f5) Tee tuotantotyyppinen asennus Python Flaskista (Apache mod_wsgi).

18:14 2.10.2017

Tuotantotyyppinen asennus vaatii toimiakseen apachen asennuksen. Koska harjoituksessa käytetty aiemmin luotua virtuaalipalvelinta, Apache löytyy palvelimelta jo valmiiksi asennettuna, joten jätetty Apachen asennuvaihe tekemättä. Mikäli asennus tehtäisiin, Apache voitaisiin asentaa komennolla ’sudo apt-get -y install apache2’.

Apachen oletussivu osoitta tällä hetkellä LAMP-asennuksesen yhteydessä luotuun testisivuun, joka voitiin todeta syöttämällä komento ’curl -s http://localhost/|grep -i title’. (Sivun otsikko on ’Pasin Testisivu’). Mikäli tehtävä saadaan suoritettua onnistuneesti, sivuston pitäisi viitata loppujen lopuksi aiemmin luotuun main.py python sivustoon.

Asennettu aluksi palvelimelle mod_wsgi, mikä mahdollistaa pythonkoodin ajamisen Apachen kautta. Suoritettu asennus komennolla: ’sudo apt-get -y install libapache2-mod-wsgi-py3’

Jatkettu tehtävää luomalla apachen sites-available kansioon uusi .conf tiedosto main.py sivustoa varten komennolla ’sudoedit /etc/apache2/sites-available/main.conf’. Conf-tiedoston koodi kuten kuvassa:

Conf-tiedoston luonnin jälkeen määritetty main.conf apacheen oletusmääritykseksi:
Poistettu aiemmin harjoituksessa 4 lisätty konffitiedosto pois käytöstä komennolla ’sudo a2dissite pasi.conf’
Lisätty main.conf uudeksi oletukseksi: ’sudo a2ensite main.conf’
Ja lopuksi aktivoitu muutokset: ’sudo systemctl reload apache2’

Sivuston tarkastelu curl:n kautta kertoo tässä vaiheessa, että sivusto on tilassa 404 Not Found. Sivusto ei vielä ole aktivoitunut, koska .wsgi skripti on luomatta, joten jatkettu luomalla publicFlask kansioon uusi tiedosto komennolla ’nano main.wsgi’. Tiedoston koodiksi syötetty kuvassa näkyvät tiedot:

Curlin komento ’curl -s http://localhost’ osoittaa nyt, että testisivu toimii. Lisäksi komento ’curl -sI localhost | grep Server’ osoittaa, että sivu käyttää todella palvelimena apache ubuntua. Sivu aukesi hienosti myös selaimen kautta testattaessa:

Tehtävässä apuna käytettyjä lähteitä:
http://terokarvinen.com/2016/deploy-flask-python3-on-apache2-ubuntu

Tehtävä g5) Lue tietueita Postgre-tietokannasta Flaskilla.

20:12 2.10.2017
Aloitettu tehtävä asentamalla palvelimelle PostgreSQL ohjelmisto komennolla ’sudo apt-get -y install postgresql’. Odoteltu, että asennus menee läpi, OK.

Seuraavaksi luotu postgresin avulla uusi tietokanta:
’sudo -u postgres createdb pasi’
Ja tietokannan käyttäjä:
’sudo -u postgres createuser pasi’

Katsottu tämän jälkeen, että PostgreSQL käynnistyy syöttämällä komento ’psql’. Psql:n päävalikko aukesi ruudulle, joten ohjelman todettu toimivan OK. –> Poistuttu ohjelmasta komennolla ’\q’.

Asennettu palvelimelle seuraavaksi pythonin flask sqlalchemy ja psycopg2 paketit komennolla ’sudo apt-get -y install python3-flask-sqlalchemy python3-psycopg2’.

Jatkettu harjoitusta soveltaen Tero Karvisen Flask-SQL esimerkkiä muokkaamalla aluksi aiemmin luotua main.py tiedostoa:

Luotu publicFlask kansioon uusi kansio ’templates’, jonne luodaan kaksi uutta .html sivustoa.

Luotu aluksi animals.html (’nano animals.html’), jonne syötetty kuvassa näkyvät tiedot:

Ja base.html (’nano base.html’) :

Tiedostojen luonnin jälkeen bootattu apache komennolla ’sudo systemctl reload apache2’ ja testattu siirtyä selaimen kautta testisivulle.

Sivusto auennut OK ja lista eläimistä näyttäisi ilmestyneen ruudulle:

Tarkistettu tilanne vielä lopuksi PostgreSQL:n puolelta käynnistämällä ohjelma komennolla ’psql’ ja hakemalla animals taulun sisältöä sql-komennolla ’SELECT * FROM animals;’.

Listan sisältöä ei oltu muutettu käsin, joten hakemalla listan sisällön voitiin varmistaa, että main.py sivusto osasi käyttää SQL:ää, luoda uuden taulun ja täyttää taulun koodiin määritetyn tiedon avulla.

Apuna käytettyjä lähteitä:

http://terokarvinen.com/2016/install-postgresql-on-ubuntu-new-user-and-database-in-3-commands

http://terokarvinen.com/2017/database-connection-from-python-flask-to-postgre-using-raw-sql

 

————————————————————————————————————-

Harjoitus 5 – Messuraportti

Tehtävän tarkoituksena oli käydä vierailemassa Cyber Security Nordic messuilla ja kerätä tietoa kolmesta eri tuotteesta tai esityksestä.

Tehtävän aloitus:

Käyty messutilaisuudessa keskiviikkona 27.9.2017 puolen päivän aikoihin. Tutustuttu aluksi messutilaan ja katsottu sopivanlaista tuotetta tai esitystä tehtävää varten. Sopivat kanditaatit tehtävää varten lyötyivätkin loppujen lopuksi Pointsecin, F-securen ja Fujitsun osastoilta.

 

Pointsec:
Pointsec on tietoturvapalveluihin keskittyvä monikansallinen yritys, joka on kooltaan n. 3500 työntekijää. Yritys on tunnettu etenkin kovalevyjen kryptaamiseen liittyvistä palveluistaan, mutta yritys vaikuttaa vahvasti myös tietoturva-ohjelmistojen puolella.

Pointsecin pisteellä tuli päällimmäisenä puheeksi pointcheckin Next Generation Threat Prevention, mikä on käytännössä kattava kokoelma erilaisia tietoturvaratkaisuja. Next Gen paketti sisältää mm. antimalwareen, kryptaukseen ja tietoturvariskien ennaltaehkäisyyn keskittyviä tekniikoita, jotka ovat suunnattu etenkin yrityksien tietoturvan parantamiseen.

Esittelijän mukaan Next Gen paketti on sen verran laaja, että koko paketin läpikäyminen olisi vienyt todella paljon aikaa, joten päädyin loppujen lopuksi tarkastelemaan tarkemmin muutamaa paketin sisältämää ominaisuutta, jotka olivat ’capsule docs’ ’anti bot’ ja ’anti ransom’.

Capsule Docs on ratkaisu, jossa pyritään parantamaan erilaisin dokumentteihin liittyvää tietoturvaa. Capsule Docs osaa esittelijän mukaan rajoittamaan dokumenttien käyttöä ja määrittää miten niitä voidaan käyttää eri käyttäjien tai käyttäjäryhmien toimesta. Palvelu osaa myös kryptata tiedostot ilman, että niiden käyttö vaatisi salasanojen syöttämistä ja mahdollistaa niiden seuraamisen Pointcheckin toimesta.

Esimerkiksi käyttäjän Microsoft Word, PDF tms. dokumenttiin voidaan lisätä määritys, että sitä voidaan vain lukea tiettyjen käyttäjäryhmien toimesta ja lisäksi editoida toisten käyttäjien toimesta. Jos käyttäjä ei kuulu em. ryhmiin, tiedoston käyttö on estetty vaikka se päätyisi sähköpostin kautta firman ulkopuolelle.

Anti-Bot palvelu keskittyy sen sijaan estämään mm. mahdollisia tietomurto-, spammaus- tai malwaren levitysyrityksiä. Palvelu osaa valvoa esim. yrityksen verkkoa ja pysäyttää epäilyttävän toiminnan ennen kuin se ehtii aiheuttamaan tuhoa verkon sisällä. Ohjelmiston mukana tulee hallintaohjelmisto, mistä uhkan etenemistä voidaan tarkastella visuaalisesti ohjelmiston piirtämän uhkakartan avulla. Ohjelmisto osaa kertoa mistä murtautumisyritys on lähtöisin, mihin asti se on päässyt verkossa ja mikä ohjelmisto loppujen lopuksi esti sen etenemisen. Ohjelmiston pitäisi myös toimia saumattomasti muiden tietoturvan ohjelmistojen rinnalla.
Mielenkiintoisena lisäominaisuutena palvelu kerää jatkuvasti tietoa tapahtuneista murtoyrityksistä ja lähettää niistä tietoa Poinsecin omalle tiimille, joka tarvittaessa informoi palvelun käyttäjää mikäli tietoturvan tasoa voidaan jotenkin parantaa.

Viimeisenä läpikäytynä tuotteena oli Anti-Ransomware, mikä on kehitetty vastalääkkeeksi ns. ransomware haittaohjelmistoille. Ransomware ohjelmistojen tarkoitus on kryptata kohdekoneen kovalevy siten ettei levyn käyttö ole enää mahdollista ja vaatia tämän jälkeen lunnaita kovalevyn kryptauksen purkua tai lukemisen mahdollistavaa salasanaa vastaan. Anti-ransomware huomaa mikäli konetta yritetään kryptata haittaohjelman toimesta ja estää kryptausprosessin ennenkuin tuhoa ehtii tapahtua. Palvelu tukee myös ns. Roll-back toimintoa, jossa data voidaan palauttaa tallennettuun tilaan mikäli tuhoa on jostain syystä ehtinyt jo tapahtua.

Kaiken kaikkiaan Pointsecin Next Generation Threat Prevention vaikutti erittäin kattavalta kokonaispaketilta, mikäli halutaan mahdollisimman hyvää tietoturvaa yritykselle.

F-secure:
F-secure on toinen tunnettu tietoturvapalveluihin keskittyvä monikansallinen yritys, joka on kooltaan yli 1000 työntekijää. Yritys on kenties parhaiten tunnettu virustorjuntaohjelmistoistaan, mutta yritys tarjoaa myös paljon muitakin tietoturvaan liittyviä palveluita.

F-securen pisteellä puheeksi tulivat ’Rapid Detection Service’ ja ’Radar’ nimiset palvelut:

Rapid Detection Service:
Rapid Detection Service palvelun tarkoitus on valvoa yrityksen verkkoa mahdollisilta kyberhyökkäyksiltä tai muilta tietoturvariskeiltä. Palvelu toimii suurpiirteisesti siten, että F-secure asentaa verkkoon sensoreita, jotka valvovat ja analysoivat aktiivisesti verkon sisäistä tietoliikennettä. Mikäli uhkia tunnistetaan, järjestelmä hälyttää tunnistetuista uhkista F-securen omaan Rapid Detection Centeriin, joka reagoi uhkiin ja ottaa tarvittaessa yhteyttä kohdeyritykseen mikäli jotain toimenpiteitä tarvitsee tehdä kohdeyrityksen puolella. RPC-keskus koostuu esittelijän mukaan tietoturvaan erikoistuneista henkilöistä, jotka ovat aktiivisia 24h tuntia vuorokaudesta. Mikäli uhkia ilmenee, tiimi kykenee kertomaan tarkat tiedot aiheutuneesta uhkasta, missä uhka tapahtui, miten uhka estettiin / voidaan estää ja miten asian suhteen tulisi edetä jatkossa.

F-securen tiimilähtöinen lähestymistapa vaikutti perinteisempään, pelkästään ohjelmistopohjaiseen tapaan toteuttaa tietoturvaa joustavammalta ja monipuolisemmalta, koska järjestelmän takana on pelkän softan sijaan ihminen. Itse näkisin, että tällä tavalla ongelmatapauksia voidaan ratkaista paljon luotettavammin ja ongelmien ratkaiseminen ja tunnistaminen on paljon syvällisempää.

Radar:
F-securen Radar palvelu on ns. turnkey järjestelmä (järjestelmä, joka on sellaisenaan valmis käytettäväksi riippumatta ostajasta), jonka avulla voidaan skannata verkkojärjestelmiä. Järjestelmä osaa löytää ja tunnistaa verkkoon kytketyt laitteet, sekä havaita niihin mahdollisesti liittyvät haavoittuvuudet. Järjestelmää voidaan käyttää myös porttiskannaukseen tai verkkosovelluksien tunnistamiseen. Järjestelmän pitäisi olla erityisen hyödyllinen apuväline, mikäli verkkoa halutaan kartoittaa, kehittää tai seurata tietyn ajanjakson aikana. Järjestelmällä näkee helposti myös mahdolliset muutokset verkossa.

Fujitsu:
Viimeinen kolmesta yrityksestä oli Fujitsu. Fujitsu on monikansallinen yritys, joka toimii monella eri IT-alan osa-alueella. Yrityksen toimialoihin kuuluu mm. IT-tukipalvelut, laitekehitys ja tietoturva. Yritys on esittelijän mukaan kooltaan yli 1500 henkilöä ja toimii ympäri maailman.

Fujitsun esittelytuote oli Palm vein Scanner. Laitteella voidaan skannata käyttäjän käsi ja käyttää laitteella skannattua tietoa biometrisenä tunnisteena. Skannattu tieto perustuu käyttäjän verisuonien sijaintiin, mikä on jokaisella henkilöllä yksilöllinen. Etuna verisuonien käytössä esimerkiksi sormenjälkeen on se, että niiden haltuun saaminen huijarin käsiin on paljon vaikeampaa. Huonosti toteuttu sormenjälkitunnistin voi olla mahdollista kiertää ottamalla sormenjälki talteen käyttäjän käsittelemien esineiden pinnalta ja tulostamalla sormenjälki paperille tai muulle pinnalle mitä laite voi lukea. Verisuonien ollessa käden sisällä, niiden selvittäminen huijarin toimesta on paljon haasteellisempaa ja niitä vastaavan vastineen rakentaminen on vähintäänkin haasteellista. Esittelijän mukaan heidän laitettaan ei olekaan tähän mennessä onnistuttu kertaakaan murtamaan. Muita teknologian etuja muihin vastaaviin on, että tunnistus tapahtuu kontaktittomasti, mikä on hygienian kannalta hyvä asia.

Laitteen voi tarvittaessa yhdistää mihin tahansa usb-liitäntää hyväksi käyttävään laitteeseen, joten laitteen lopullinen käyttötarkoitus voi olla mitä tahansa kulunvalvonnasta laitteen sisäänkirjautumiseen tai maksuvälineenä toimimiseen. Esiteltävä laite tukee myös kahden käden käden tunnistusta, joten jos käyttäjä murtaa esimerkiksi kätensä ja käsi pitää laittaa kipsiin, voidaan toista käyttää edelleen tunnistusta varten. Skannaus voidaan myös periaatteessa tehdä muihin paikkoihin kuin käteen, joten esimerkiksi käsivarsi tai jokin muu ruumiinosa kelpaa myös tunnisteeksi.

Esiteltävä laite sisälsi lukijaan yhdistetyn kortinlukijan, mihin pystyttiin tallentamaan käyttäjän biotunniste. Kortti toimi tämän jälkeen kulkukorttina, joka vaatii kortin tunnistuksen lisäksi käyttäjän biotunnisteen.

Laitteen hinta liikkuu ilmeisesti neljän sadan tuntumassa, joten laite on hintava, mutta monipuolisten toimintojensa ansiosta siitä saataavat hyödyt oikeassa käyttötarkoituksessa voivat olla merkittäviä.

Kilpailevista laitteista tiedusteltaessa yhdeksi merkittäväksi kilpailijaksi edustaja mainitsi hitachin sormenjälkitunnistimen. Edustajan mielestä Fujitsun laite on edistyneempi ja luotettavampi, mikä varmasti pitää paikkaansa edellä mainitut asiat huomioon ottaen.

———————————————————————————————————–

Harjoitus 4

r) 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.

Vaihtoehto: jos et jostain syystä halua vuokrata virtuaalipalvelinta, voit kokeilla tehdä testipalvelimen vagrantilla, mutta tämä ei ole yhtä jännittävää.

x) Laita julkinen domain-nimi osoittamaan koneeseesi. NameCheap ja Gandi ovat tunnettuja nimien vuokraajia. GitHub Education -paketista saa NameCheapilta .me domainin ilmaiseksi vuodeksi.

s) Laita julkiselle palvelimellesi käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna.

y) Etsi julkisen palvelimesi lokeista esimerkkejä murtautumisyrityksistä. Voit etsiä lisätietoa IP-osoitteista ottamatta niihin yhteyttä esimerkiksi komennoilla geoiplookup tai whois.

Tehtävä r) – kokeile virtuaalipalvelinta:

25.9.2017 16:40

Valittu tehtävää varten virtuaalipalvelin-palveluksi digital ocean. Itselläni on jo palveluun tili olemassa tunnilla tehtyjen harjoitusten ansiosta, joten aloitettu tehtävä suoraan dropletin luonnilla:

Kirjauduttu digital oceanin nettisivuille ja siirrytty luomaan uutta virtuaalipalvelinta eli droplettia.

Valittu käyttöjärjestelmäksi uusin versio ubuntusta ja virtuaalipalvelimen kooksi halvin vaihtoehto 5€/kk, koska palvelimen käytön tiedetään olevan kevyttä ainakin ensi alkuun (kokoa voidaan korottaa myöhemmin, mutta ei pienentää).

Seuraavaksi valittu datacenter eli missä päin maailmaa virtuaalipalvelinta käytetään. Palvelinta valitessa tulisi ottaa huomioon mm. että palvelimen tulisi sijaita geologisesti mahdollisimman lähellä virtuaalipalvelimen tulevia käyttäjiä (palvelimen käyttö on nopeampaa kun se on lähellä käyttäjiä). Eri maita koskevat myös erilaiset lait, joten palvelimen käytöstä riippuen lakiasiat saattavat rajoittaa palvelimen käyttöä tai sen sisältöä.

Koska palvelinta käytetään tässä tapauksessa Suomessa, palvelimen olisi hyvä sijaita Euroopan alueella / EU:n sisällä. Valittu tämän perusteella vaihtoehdoksi Frankfurt, joka täyttää tarjolla olevista vaihtoehdoista parhaiten edellä mainitut kriteerit.

Muita valintoja / lisäominaisuuksia ei tässä tapauksessa tarvita, joten valittu vielä droplettien määräksi 1kpl ja määritetty virtuaalipalvelimelle sopiva hostname. Lopuksi hyväksytty valinnat klikkaamalla ’Create’ nappulaa.

 

Sivusto lähtenyt tämän jälkeen luomaan uuttaa virtuaalipalvelinta. –> Odoteltu, että palvelimen luonti tulee valmiiksi.

Palvelimen luonnin valmistuttua käyty hakemassa uudet root – käyttäjätunnukset sähköpostista, minkä avulla virtuaalipalvelimelle pääsee kirjautumaan.

Kirjautumisen voi tehdä joko suoraan digital oceanin oman konsolin kautta tai käyttää kirjautumiseen SSH-yhteyttä. Digital oceanin oman konsolin käyttö on kömpelöä, joten tehdään kirjautuminen SSH:n kautta:

Käyty tarkistamassa uuden virtuaalipalvelimen ipv4 osoite virtuaalipalvelimen tiedoista.

Edetty seuraavaksi Tero Karvisen SSH- virtuaalipalvelimen käyttöönotto ohjeiden mukaisesti:

Avattu konsoli ja avattu SSH-yhteys komennolla ’ssh root@-palvelimen ip-’. Syötetty root käyttäjän salasana ja katsottu, että kirjautuminen onnistuu, OK.

Vaihdettu root käyttäjän salasana järjestelmän sitä pyytäessä:

Avattu aukko palomuuriin SSH:ta varten komennoilla: ’sudo ufw allow 22/tcp’ ’sudo ufw enable’.

Luotu tämän jälkeen järjestelmään uusi käyttäjä ’pasi’ ja annettu käyttäjälle sudo, adm ja admin oikeudet.

Käyttäjätilin luonnin jälkeen varmistettu, että virtuaalipalvelimelle pääsee kirjautumaan juuri luodulla tunnuksella avaamalla toinen komentokehoite ja testaamalla SSH kirjautumista root tunnuksen sijaan käyttäjällä pasi (komento: ssh pasi@-virtuaalipalvelimen ip-).

Kirjautuminen onnistunut, joten root käyttäjä voidaan tämän jälkeen poistaa käytöstä…

Lukittu aluksi root-käyttäjän salasana komennolla ’sudo usermod –lock root’.

Jatkettu estämällä SSH-kirjautuminen root-tunnuksella palvelimelle syöttämällä komento ’sudoedit /etc/ssh/sshd_config’.

Haettu config tiedostosta kohta ’PermitRootLogin yes’ ja vaihdettu sen tilalle ’PermitRootLogin no’. Tallennettu config tiedosto ja bootattu ssh palvelu komennolla ’sudo service ssh restart’.

Ajettu vielä lopuksi päivitykset virtuaalipalvelimelle komennoilla  ’sudo apt-get update’ ja  ’sudo apt-get upgrade’.

tehtävä x) Laita julkinen domain-nimi osoittamaan koneeseesi.

25.9.2017 18:50

Valittu tehtävässä käytettäväksi domainiksi Namecheap.com. Rekisteröity aluksi tili Namecheap.com:iin ja kirjauduttu palveluun.

Jatkettu hakemalla vapaita domain-nimiä palvelun hakutoiminnon kautta. Koska domainia käytetään vain tehtävän suoritukseen, valittu tehtävää varten nimeksi ’testidomain’ ja valittu listatuista vaihtoehdoista jokin halpa vaihtoehto. Valittu uudeksi domainiksi ’testidomain.life’ ja ostettu ko. domain vuodeksi käyttöön.

Ostosuorituksen jälkeen käyty katsomassa domain-listaa, missä uusi domain olikin jo valmiina.

Siirrytty domainin hallintaan valitsemalla domainin kohdalta ’manage’ ja valittu advanced DNS valinta. Lisätty listalle uusi recordi, mihin syötetty virtuaalipalvelimen ip-osoite. Virtuaalipalvelimella ei ole vielä tässä vaiheessa lisättyjä kotisivuja, joten sivujen toiminta testataan seuraavan tehtävän yhteydessä.

Edit: Ensi alkuun lisätyt asetukset eivät suoraan toimineet oikein. Muutettu asetuksia myöhemmin siten, että lisättiin listalle kaksi ”a record” – tyyppiä, joihin määritettiin molempiin valueksi virtuaalipalvelimen ip-osoite. Toiseen  määritettiin host-määritykseksi ’@’ ja toiseen ’www’. TTL jätettiin molemmissa tapauksissa automatic tilaan. Muut arvot sen sijaan poistettiin listalta.

tehtävä s) Laita julkiselle palvelimellesi käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna.

25.9.2017 19:19

Kirjauduttu SSH:n avulla takaisin virtuaalipalvelimelle.

Asennettu Apache virtuaalipalvelimelle komennolla ’sudo apt-get install apache2’

Asennuksen jälkeen avattu palomuurille reikä apachea varten komennolla ’sudo ufw allow 80/tcp’.

Tämän jälkeen testattu avautuko apachen oletussivu syöttämällä virtuaalipalvelimen ip-osoite selaimeen. Sivu auennut OK, joten luotu seuraavaksi yksinkertainen ’hello world’ html-sivu käyttäjän kotihakemistoon:

Enabloitu ensimmäiseksi userdir module komennolla ’sudo a2enmod userdir’. Restartattu apache, jotta muutos tulee voimaan komennolla ’sudo systemctl restart apache2’. Luotu tämän jälkeen uusi public_html kansio käyttäjän kotihakemistoon: ’mkdir public_html’. Tämän jälkeen tehty uusi html-sivu komennolla ’nano index.html’.

Lopuksi testattu aukeaako uusi sivu selaimeen syöttämällä selaimeen osoite ’virtuaalipalvelimen ip-osoite/~pasi’, jotta nähty, että sivusto toimii wepin yli, OK.

Jatkettu tehtävää luomalla virtualhost määritykset koneelle:

Luotu apachen sites-available kansioon uusi .conf tiedosto komennolla ’sudoedit /etc/apache2/sites-available/pasi.conf’. Luotu tiedostoon kuvassa näkyvät määritykset:

Ajettu uudet muutokset apacheen komennolla ’sudo a2ensite pasi.conf’, disabloitu apachen oletussivu komennolla ’sudo a2dissite 000-default.conf’ ja bootattu apache ’sudo systemctl restart apache2’.

Syötetty selaimeen virtuaalikoneen ip ja saatu aiemmin tehty index.html nyt näkymään selaimessa apachen oletussivun sijaan.

Testattu vielä, että testisivu näkyy myös osoitteessa http://testidomain.life, OK.

tehtävä y) murtautumisyrityksiä

25.9.2017 19:45

Käyty tarkistamassa auth.log:sta onko kukaan yrittänyt murtautua tehtävien aikana virtuaalipalvelimelle komennolla ’tail /var/log/auth.log’

Lokeista löytynyt useita root-käyttäjän kirjautumisyrityksiä. Valittu yksi listalla olevista ip-osoitteista ja ajettu komento: ’whois 113.195.145.52’

 

      

Komento ’geoiplookup 113.195.145.52’ antanut ko. ip:n kohdalla seuraavat tiedot: ’GeoIP Country Edition: CN, China’

Hakemalla ip-osoitetta infosniper.net sivuston kautta syypää voitiin sijoittaa kartalle keskelle Kiinaa, kuten lokien perusteella voitiinkin päätellä.


25.9.2017 23:34

Käyty tekemässä myöhemmin illalla uusi tarkistus auth.logiin. Epäonnistuneita kirjautumisyrityksiä näyttäisi edelleen tulevan samaisesta 113.195.145.52 IP-osoitteesta muutamien sekuntien välein. Mikäli root-käyttäjän salasana olisi ollut heikko / sitä ei olisi otettu pois käytöstä, palvelimelle murtautuminen olisi varmasti melko todennäköistä. Tämä osoittaa hienosti miksi huolellisesti tehty palvelimen käyttöönotto on tärkeää.
Harjoituksessa käytettyjä lähteitä:
NameCheap:
Digital Ocean:
InfoSniper.net:
First Steps on a New Virtual Private Server – an Example on DigitalOcean and Ubuntu 16.04 LTS:
Tero Karvinen.com –  New Default Website with Apache2 – Show your homepage at top of example.com, no tilde :
—————————————————————————-

Harjoitus3

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

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi

d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.

e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.

f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)

g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan

h) 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).

i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.

j) Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.

k) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).

l) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea)

Tehtävä a) Asenna apache

8.9.2017 17:38

Aloitettu tehtävä asentamalla apache-ohjelmiston asennuksella:
Käynnistetty aluksi komentokehoite ja aloitettu apachen asennus syöttämällä kehoitteeseen komento: ’sudo apt-get install apache2’.

Kun asennus saatu valmiiksi, varmistettu apachen toiminta aluksi lokaalisti
siirtymällä nettiselaimen kautta osoitteeseen http://localhost. Apachen
oletussivu aukesi ruudulle ilman ongelmia, joten apache näyttäisi toimivan
oikein ainakin lokaalisti.

Seuraavaksi testattu näkyykö apachen kotisivu myös työaseman netti-osoitteen kautta:
Tarklstettu aluksi työaseman netti-ip komentokehoitteesta komennolla ’ip addr’. Komennon avulla ruudulle saadaan listattua paljon hyödyllisiä tietoja koneen verkkoyhteyksiin liittyen. Koska työasema on kytketty verkkoon wlanin kautta, testausta varten tarvittava tieto löytyi laitteen ”3: wlp5s0” alta riviltä:’inet 192.168.0.115/24 brd 192.168.0.255 scope global dynamic wlp5s0′.

Työaseman netti-ip on siis 192.168.0.115. Syötetty ip-osoite nettiselaimeen ja
katsottu aukeaako apachen oletussivu jälleen ruudulle.

Sivut auenneet OK, joten siirrytty seuraavaan vaiheeseen, missä luodaan käyttäjän kotihakemistoon kansio jonne voidaan luoda oma web-sivu.

8.9.2017 18:05
Ennen kansion luomista käyty enabloimassa userdir module (vaaditaan, jotta
käyttäjän kotihakemiston käyttäminen web-sivuja varten toimisi).

Ajettu komentokehoitteeseen komento ’sudo a2enmod userdir’, joka aktivoi userdir moduulin. Jotta muutokset tulevat voimaan apache pitää myös uudelleenkäynnistää. Tehty uudelleenkäynnistys komennolla ’sudo service apache2 restart’.

Kun userdir moduuli saatu aktivoitua, jatkettu tehtävää luomalla käyttäjän
kotihakemistoon uusi kansio tulevaa nettisivua varten komennolla ’mkdir public_html’. Kansion luonnin jälkeen siirrytty selaimessa osoitteeseen ’http://localhost/~xubuntu’ ja varmistettu, että kotisivulle pääseminen onnistuu. Selaimeen avautunut tyhjä parent directory, joten kaikki näyttäisi olevan kunnossa tähän mennessä.

Luotu seuraavaksi aiemmin luotuun /public_html kansioon uusi tiedosto ’index.html’ ’nano index.html’ komennolla, kirjoitettu tiedostoon teksti ’Hello World!!!’  ja testattu siirtyä sivustolle uudelleen selaimen kautta.

Selaimeen avautunut nyt teksti hello world, joten nettisivu on nyt valmis tulevia muokkauksia varten., Varmistettu myös sivuston toiminta toiselta työasemalta samassa lähiverkossa, mistä sivusto saatu myös näkymään.

 

8.9.2017 19:42
Tehtävä b) sivuilla surffaus / onnistunut ja epäonnistunut lokimerkintä
Testattu aluksi onnistunutta lokimerkintää. Siirrytty selaimessa osoitteeseen
http://localhost/~xubuntu ja katsottu, että sivu avautuu normaalisti. Avattu
tämän jälkeen apachen access.log:n 10 viimeisintä tapahtumaa komentokehoitteeseen
komennolla ’tail /var/apache2/access.log’. Logeihin tullut nyt uusi merkintä:

127.0.0.1 – – [08/Sep/2017:16:45:25 +0000] ”GET /~xubuntu/ HTTP/1.1” 304 180 ”-”
”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

Oma analyysi lokimerkinnästä:
Lokien mukaan osoitteeseen 127.0.0.1, 8.9.2017 klo x on tehty GET-yhteyspyyntö kohteeseen /~xubuntu/. Pyyntö tehty HTTP/1.1 versiolla ja pyyntö on palauttanut koodin 304, joka w3school.org:in sivuilta löytyvän artikkelin mukaan tarkoittaa tilaa: ’304 Not modified’. 304-koodi palautuu sivujen mukaan tilanteissa, joissa GET-pyyntö ja oikeus tarkastella sivua on sallittu, mutta sivustoa ei ole muokattu. Lukema 180 on ymmärtääkseni vastauksen koko byteissä. Lisäksi lokissa on mainittu selaimen, järjestelmän ja user-agentin tyyppi joita käytetty.

Tehtävässä haettiin 200 koodia ja em. yhteyskoodi oli 304, joten tutkittu miten 200-koodinen yhteyspyyntö saataisiin toteutettua. 200-koodinen yhteysmerkintä saatu loppujen lopuksi aikaiseksi siirtymällä apachen oletussivulle:

127.0.0.1 – – [08/Sep/2017:17:05:09 +0000] ”GET / HTTP/1.1” 200 3525 ”-”  ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

Lokimerkintä on muuten sama kuin edellä mainittu, mutta erona on kohde, joka on tässä tapauksessa ”/” ja yhteyskoodi, joka on 200, eli yhteys OK.

20:02
Testataan epäonnistunut lokimerkintä:
Kirjoitettu selaimeen osoite localhost/~ubuntu/test, jonka seurauksena saatu selaimeen näkymä ei löytyneestä sivusta. Tarkistettu tilanne jälleen lokien puolelta.

127.0.0.1 – – [08/Sep/2017:17:10:38 +0000] ”GET /~ubuntu/test HTTP/1.1” 404 502 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

Ja kuten lokeista ilmenee, GET-pyyntö osoitteeseen /~ubuntu/test palautti yhteyskoodin 404 (not found), eli sivustoa ei löydy.

Tehtävä j) Asenna LAMP

12.9.2017 18:05

LAMP tulee sanoista Linux, Apache, MySQL ja PHP. Mikäli web-sivut on otetty käyttöön LAMP-järjestelmän mukaisesti, web-sivut pyörivät Linux käyttöjärjestelmässä, johon on asennettu Apache ja MySQL palvelut. Lisäksi LAMP-järjestelmässä web-sivut on koodattu PHP:tä hyväksikäyttäen.

Koska työasemalle on jo asennettuna Linux-käyttöjärjestelmä, ensimmäinen LAMP-kriteeri on jo automaattisesti täytetty.

Seuraava LAMP kriteeri on, että työasemalle on asennettu Apache. Aloitettu apachen asennus työasemalle komennolla ’sudo apt-get install apache2’ ja varmistettu, että apache toimii selaimen kautta. Luotu myös public_html kansio valmiiksi käyttäjän kotihakemistoon ja aktivoitu userdir moduuli (em. vaiheet identtisiä tehtävän a) tehtyjen toimenpiteiden, joten tarkemmat kuvaukset eri vaiheista voi tarkistaa a) tehtävän kuvauksesta.).

12.9.2017 18:25

Kolmantena kriteerinä työasemalle tarvitaan MySQL. Haettu ennen MySQL:N asennusta sudo päivitykset työasemalle komennolla ’sudo apt-get update’. Päivitysten jälkeen asennettu työasemalle MySQL server ja MySQL Client komennolla ’sudo apt-get -y install mysql-server mysql-client’.

Asennus pyytänyt salasanaa käyttäjälle ”root”. Syötetty salasana ja varmistettu salasana.

Odotelty tämän jälkeen, että asennus mennyt läpi. Testattu, että ohjelmisto toimii käynnistämällä MySQL komennolla ’mysql -u root -p’ ja syöttämällä root:n salasana ohjelmiston sitä pyytäessä.

 

–> Ohjelmisto käynnistynyt ilman ongelmia, joten jatkettu testausta hakemalla oletustietokantoja komennolla ’show databases;’.

 

Tietokannat tulleet näkyviin OK, joten MySql:n perusasennus näyttäisi menneen läpi ongelmitta. Seuraavaksi jatkettu harjoitusta luomalla mysql:ään uusi tietokanta, sekä käyttäjä. Syötetty komento ”CREATE DATABASE opiskelija CHARACTER SET utf8;”, minkä avulla saatiin luotua uusi tietokanta nimellä ’opiskelija’.

Jatkettu tämän jälkeen luomalla uusi käyttäjä, jolla oikeudet juuri luotuun tietokantaan, komennolla ”GRANT ALL ON opiskelija.* TO opiskelija@localhost IDENTIFIED BY ’salasana’;”.

Käyttäjän ja tietokannan luonnin jälkeen poistuttu ohjelmistosta komennolla ’exit’ ja testattu uuden käyttäjän toiminta käynnistämällä MySQL tällä kertaa ’opiskelija’ tunnuksella (mysql -u opiskelija -p).

Kirjautuminen OK. >>>Varmistettu, ettei opiskelijalla ole liian suuria oikeuksia yrittämällä luoda uutta tietokantaa (create database testi;) ja testattu, että tunnuksella pääsee käsiksi ’opiskelija’ tietokantaan (use opiskelija;).

Luotu uusi taulu komennolla ”CREATE TABLE opiskelijat (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(200));” ja tarkistettu, että taulun luonti onnistui, OK:

Lisätty tauluun kaksi uutta nimeä ja listattu lisätyt käyttäjät ruudulle (kts. kuva):

12.9.2017 20:42

Kun todettu MySQL:n toimivan, siirrytty neljänteen ja viimeinen vaiheeseen, eli PHP:n käyttöönottoon.

Siirrytty käyttäjän kotihakemistossa olevaan public_html kansioon ja luotu uusi tiedosto, index.php komennolla ’nano index.php’. Koodattu tiedostoon formi mikä osoittaa action.php tiedostoon.

Tallennettu index.php tiedosto ja luotu toinen tiedosto, action.php. Koodattu tiedostoon yksinkertainen php-skripti ja tallennettu tiedosto.

Apache ei kuitenkaan tue oletuksena php:ta, joten sivusto näyttää vielä tältä:

Jotta sivu saadaan näkymään oikein, asennettu apacheen php-tuki komennolla ’sudo apt-get install apache2-utils libapache2-mod-php7.0’.

Jotta php:n käyttö voidaan aktivoida käyttäjäkansiossa pitää se pitää myös aktivoida .conf tiedostojen kautta. Oikean conf tiedoston paikallistamiseksi tehty etc/apache kansioon php haku, ’grep -ri /etc/apache2/-e php’ minkä avulla voitu päätellä oikean tiedoston nimi.

Haun perusteella php7.0.conf tiedosto on mitä haettiin, joten avattu tiedosto muokkausta varten komennolla ’sudo nano /etc/apache2/mods-available/php7.0.conf’. Täältä piti kommentoida määritys’php_admin_flag engine Off’ ja tallentaa määritys. Bootattu tämän jälkeen apache-palvelin sudo service apache2 restartin avulla.

Käyty katsomassa näkyykö sivusto nyt oikein siirtymällä uudelleen testisivulle. Sivusto näkynyt nyt oikein. Testattu sivujen toiminta laskemalla luvut yhteen.

Sivusto laskenut lukemat onnistuneesti yhteen, joten todettu php:n toimivan kuten pitääkin.

 

 

Harjoituksessa apuna käyttetyjä lähteitä:

Tero Karvinen -install apache web server using ubuntu ; http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4

Tero Karvinen – Mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu;

http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu

W3 schools – status code deifinitions: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Ubuntu suomi, LAMP l. Linux, Apache, MySQL ja PHP asennus: https://wiki.ubuntu-fi.org/LAMP_Asennus
————————————————————————————————————–

Harjoitus 2

a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

b) 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:’)

c) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.

d) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

e) 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

 

Tehtävä a) Lokitapahtumat

5.9.2017 15:31
Testataan luoda virheilmoitus:
Siirrytty aluksi hakemistoon, josta kaikki lokimerkinnät löytyvät.Opettajan tunnilla opetetun tiedon perusteella tiedetty lokien sijaitsevan hakemistossa /var/log. Terminaali aukeaa oletuksena käyttäjän kotihakemistoon, joten syötetty komentoriville kaksi kertaa komento ’cd ..’, jolloin päästy järjestelmän juureen. Syötetty tämänjälkeen komennot ’cd var’ ja ’cd log’, jolloin kansiossa olevat lokitiedostot voitiin listata ’ls’ komennolla.

Avattu virheilmoituksen luomiseksi ruudulle toinen terminaalinäkymä ja syötetty komentoriville komento ’passwd’. Komennon avulla käyttäjän salasana saadaan vaihdettua ja mikäli salasanan syöttö tehdään virheellisesti, siitä pitäisi jäädä merkintä auth.log tiedostoon. Syötetty tarkoituksellisesti salasana väärin salasanan varmistusvaiheessa, minkä seurauksena salasanan vaihto epäonnistui.

Tarkistettu toisesta terminaalista, että lokimerkintä todella tapahtui syöttämällä komento ’tail auth.log’, joka listaa ruudulle auth.log tiedoston kymmenen viimeisintä tapahtumaa.

Lokiin olikin ilmestynyt uusi merkintä, jonka perusteella voitiin todeta, että käyttäjän ’xubuntu’ salasanan autentikointi oli epäonnistunut:

Sep 5 15:40:42 xubuntu passwd[3025]: pam_unix(passwd:chauthtok): authentication failure; logname=xubuntu uid=999 euid=0 tty= ruser= rhost= user=xubuntu

5.9.2017 15:45

Testataan luoda onnistuneen toiminnon lokimerkintä:
Päätetty testata onnistuneen toiminnon lokimerkintää sammuttamalla ja käynnistämällä tietokoneen wlan-yhteys ja tarkistamalla, että yhteyden onnistunut muodostaminen tulee näkyviin lokeihin. Pysäytetty wlan aluksi käynnistysvalikon oikeasta reunasta klikkaamalla wlan-ikonia, valitsemalla listattujen yhteyksien kohdalta ’disconnect’ ja odotettu, että yhteyden katkaisun ilmoitus tulee näkyviin ruudulle. Käynnistetty yhteys uudelleen ja käyty tarkistamassa miltä tilanne näyttää lokien puolella. Koska tällä kertaa tarkastellaan yhteyslokeja merkinnät pitäisivät tulla näkyviin kern.log:iin. Avattu ruudulle kern.log:n tiedot komennolla ’tail kern.log’ ja katsottu miltä tilanne vaikuttaa.

Lokeihin oli tullut selkeästi joukko merkintöjä, minkä perusteella voitiin todeta, että yhteyden muodostaminen oli mennyt läpi onnistuneesti:

Sep 5 15:56:43 xubuntu NetworkManager[1615]: <info> [1504627003.0561] manager: NetworkManager state is now CONNECTED_LOCAL
NetworkManagerin tila on yhdistetty paikallisesti.

Sep 5 15:56:43 xubuntu NetworkManager[1615]: <info> [1504627003.0577] manager: NetworkManager state is now CONNECTED_GLOBAL
NetworkManagerin tila on yhdistetty globaalisti.

Sep 5 15:56:43 xubuntu NetworkManager[1615]: <info> [1504627003.0578] policy: set ’Alatalon Maailma’ (wlp5s0) as default for IPv4 routing and DNS
Määritetty router ja dns asetukset vastaamaan ’Alatalon Maailmaa’, mikä on tässä tapauksessa käytetyn wlan-verkon nimi.

Sep 5 15:56:43 xubuntu NetworkManager[1615]: <info> [1504627003.0581] dns-mgr: Writing DNS information to /sbin/resolvconf
Järjestelmä määrittänyt DNS-tiedot /sbin/resolvconf hakemistoon.

Sep 5 15:56:43 xubuntu NetworkManager[1615]: <info> [1504627003.1089] device (wlp5s0): Activation: successful, device activated.
Ja lopuksi verkkolaitteen aktivointi onnistunut, eli toisin sanoen yhteyden muodostus on suoritettu onnistuneesti.

Tehtävä c) Unelmien APT-Get komento

4.9.2017 18:05

Linux on itselleni vielä suhteellisen outo ympäristö eikä itselleni ole vielä ehtinyt kerääntymään mitään suosikkiohjelmistoja. Tehtävän suorittamista varten valitsin joukon satunnaisia ohjelmistoja, jotka vaikuttivat päteviltä tai muuten vain mielenkiintoisilta: GIMP, VLC Player, Kephra, clementine.

Ajettava komento ei eroa juurikaan yksittäisen ohjelmiston asennuskomennosta. Komentojono on muuten sama kuin yksittäisessä paketissa, mutta yhden paketin sijaan komentojonon perään lisätään kaikkien ohjelmistojen pakettinimet.

Pakettien APT-get komento olisi siis seuravanalainen:

’sudo apt-get install vlc gimp kephra clementine’

Koska komento on suhteellisen yksinkertainen, komennon perään on periaatteessa helppo lisätä uusia ohjelmistoja tarkistamalla ohjelmistopaketin nimi ’apt-cache search’ komennolla ja kirjoittamalla lisättävän ohjelmistopaketin nimi komentojonon perään.

Tehtävä d) Asenna kolme komentorivillä toimivaa ohjelmistoa

4.9.2017 18:20

Itselläni ei entuudestaan ollut tietoa linuxin komentokehoitteessa toimivista ohjelmistoista, joten aloitin tehtävän googlettamalla tietoa sopivanlaisista ohjelmistoista. Pienen selailun jälkeen kolme ohjelmistoa vaikuttivat tehtävää varten sopivanlaisilta:

Dstat:

Linux resurssien seurantaohjelmisto, joka antaa tarkempaa tietoa linuxissa pyörivistä prosesseista.

Lynx:

Konsolin kautta toimiva nettiselain.

Calcurse:

Konsolipohjainen kalenteriohjelmisto

 

4.9.2017 19:10

Ohjelmistojen asennus ja testaus:

Dstat: Asennettu ohjelmisto konsolin kautta komennolla ’sudo apt-get install dstat’. Asennuksen jälkeen käynnistetty ohjelmisto komennolla kirjoittamalla komentoriville komento ’dstat’, jolla ohjelmisto saatu käynnistettyä:

Seurattu käynnissä olevia prosesseja ja todettu ohjelmiston toimivan. Koska ohjelmiston käyttö on passiivista, eikä vaadi seuraamisen lisäksi muita toimenpiteitä, siirrytty seuraavan ohjelmiston testaukseen.

4.9.2017 19:20

Lynx:

Asennettu ohjelmisto komentokehoitteen kautta komennolla ’sudo apt-get install lynx’ ja käynnistetty ohjelmisto kirjoittamalla konsoliin ’lynx’.

Perehdytty ohjelmiston käynnistymisen jälkeen tarkemmin ohjelmiston kautta avautuvaan päänäkymään:

Pienen testailun ja tutkimisen jälkeen testattu ohjelmiston toimintaa siirtymällä http://www.google.com sivustolle (osoitteen syöttö tapahtunut painamalla ’g’ näppäintä ja kirjoittamalla osoite ruudulle avautuvaan syötekenttään).

Google sivusto auennut onnistuneesti tekstimuodossa:

Testattu tehdä googleen haku ’linux’….

… mikä näyttikin onnistuneen hienosti.

4.9.2017 19:50

Calcurse:  Edetty calcursen kanssa myös samalla periaatteella kuin aiemmissa ohjelmistoissa eli asennettu ohjelmistopaketti koneelle konsolin kautta komennolla ’sudo apt-get install calcurse’ ja käynnistämällä ohjelmisto komennolla ’calcurse’.

Lisätty ohjelmistoon kaksi uutta -todo tehtävää. Todo-tehtävä voidaan lisätä pikakomennolla ctrl+t, minkä jälkeen ohjelmisto pyytää tehtävän kuvauksen, sekä prioriteetin 0-9 välillä. Lisätty ohjelmistoon lisäksi uusi tapaaminen, joka saatiin lisättyä valitsemalla oikea päivämäärä kalenterinäkymästä ja painamalla ctrl + A. Ohjelma kysyi tällöin tapaamisen aloitus ja päättymisajankohtaa, jonka jälkeen tapaaminen jäi näkyviin ohjelmiston näkymään.

Alkuun

————————————————————————————————————–

Harjoitus 1

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

b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’).

c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.

d) 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.

f) Vapaaehtoinen lisätehtävä: varmuuskopioi tiedostosi (voit käyttää esimerkiksi ulkoista USB-levyä)

Harjoitus 1

 

27.8 16:45
tehtävä a) Linux tikun luonti:

Aloitettu tehtävä hakemalla xubuntu 16.04 LTS latauspaketti xubuntu.org sivustolta. Valittu järjestelmäversioksi 64-bit versio ja valittu lataustavaksi torrent.

Lopullinen ohjelmiston lataaminen aloitettu käyttämällä työasemaltani jo valmiiksi löytynyttä bittorrent-ohjelmistoa.
Jätetty paketti latautumaan koneelle.

27.8 17:18

.iso paketin latauduttua koneelle, etsitty ylimääräinen / sopivanlainen USB-tikku linux-imagen asennusta varten. Löydetty harjoitukseen sopiva kingstonin 4GB datatraveler.

Yritetty imagen asennusta aluksi käyttämällä Rufus-ohjelmistoa (versio 2.16.1170). Valittu ohjelmistoon kuvassa mainitut asetukset ja aloitettu asennus. Ohjelmisto antanut herjaa linuxin asennustiedostoista. –> Ladattu ohjelmiston pyytämät tiedostot.

Valittu ohjelmiston suosittelema ISO-image moodi ja aloitettu imagen asennus tikulle.

27.8 17:33
Imagen asennuksen jälkeen käyty katsomassa vielä järjestelmänhallinnasta, että usb-tikun sisältö näyttää järjelliseltä. Todettu kaiken näyttävän olevan kunnossa, joten tikku valmis testattavaksi.

Testattu tikkua kotikoneella:
Bootattu kone tikulta käyttämällä valintaa UEFI: KingstonDataTraveler 2.01.00, jolla päästy linuxin omaan boottivalikkoon –> valittu try xubuntu without install. Järjestelmä lähtenyt latautumaan, mutta jäänyt jumiin kuvassa näkyvään sekasotkuun. (testattu boottausta myös valitsemalla kingston ilman UEFI-valintaa. Tikulta boottaaminen ko. valinnalla kuitenkin tyssää access violationiin). —> Jatketaan tilanteen selvitystä huomenna.

 

28.8.2017 18:10 Testattu tikun toiminta toisella työasemalla, jossa kuva saatu näkymään normaalisti.

28.8.2017 18:20 Linux käynnistynyt OK —> Jatketaan muiden tehtävien tekemistä.

tehtävä b) Listaa testaamasi koneen rauta

28.8.2017 18:30 Käyty ajamassa konsoliin komento: ”sudo lshw -short -sanitize”, jonka avulla saatu tulostettau seuraavanlaiset tiedot:

H/W path Device Class Description
===============================================================
system GP60 2PE (To be filled by O.
/0 bus MS-16GH
/0/0 memory 64KiB BIOS
/0/24 memory 12GiB System Memory
/0/24/0 memory 4GiB SODIMM DDR3 Synchronous
/0/24/1 memory DIMM [empty]
/0/24/2 memory 8GiB SODIMM DDR3 Synchronous
/0/24/3 memory DIMM [empty]
/0/50 processor Intel(R) Core(TM) i7-4710HQ
/0/50/51 memory 1MiB L2 cache
/0/50/52 memory 256KiB L1 cache
/0/50/53 memory 6MiB L3 cache
/0/100 bridge Xeon E3-1200 v3/4th Gen Core
/0/100/1 bridge Xeon E3-1200 v3/4th Gen Core
/0/100/1/0 display GM108M [GeForce 840M]
/0/100/2 display 4th Gen Core Processor Integ
/0/100/3 multimedia Xeon E3-1200 v3/4th Gen Core
/0/100/14 bus 8 Series/C220 Series Chipset
/0/100/14/0 usb3 bus xHCI Host Controller
/0/100/14/0/1 input USB Receiver
/0/100/14/1 usb4 bus xHCI Host Controller
/0/100/16 communication 8 Series/C220 Series Chipset
/0/100/1a bus 8 Series/C220 Series Chipset
/0/100/1a/1 usb1 bus EHCI Host Controller
/0/100/1a/1/1 bus USB hub
/0/100/1a/1/1/2 scsi5 storage DataTraveler 2.0
/0/100/1a/1/1/2/0.0.0 /dev/sdb disk 4002MB SCSI Disk
/0/100/1a/1/1/2/0.0.0/2 /dev/sdb2 volume 15EiB Windows FAT volume
/0/100/1a/1/1/3 communication Bluetooth wireless interface
/0/100/1b multimedia 8 Series/C220 Series Chipset
/0/100/1c bridge 8 Series/C220 Series Chipset
/0/100/1c.3 bridge 8 Series/C220 Series Chipset
/0/100/1c.3/0 enp3s0 network Killer E220x Gigabit Etherne
/0/100/1c.4 bridge 8 Series/C220 Series Chipset
/0/100/1c.4/0 generic RTS5249 PCI Express Card Rea
/0/100/1c.5 bridge 8 Series/C220 Series Chipset
/0/100/1c.5/0 wlp5s0 network Wireless 3160
/0/100/1d bus 8 Series/C220 Series Chipset
/0/100/1d/1 usb2 bus EHCI Host Controller
/0/100/1d/1/1 bus USB hub
/0/100/1f bridge HM86 Express LPC Controller
/0/100/1f.2 storage 8 Series/C220 Series Chipset
/0/100/1f.3 bus 8 Series/C220 Series Chipset
/0/1 scsi0 storage
/0/1/0.0.0 /dev/cdrom disk DVDRAM GTB0N
/0/2 scsi4 storage
/0/2/0.0.0 /dev/sda disk 1TB HGST HTS721010A9
/0/2/0.0.0/1 /dev/sda1 volume 599MiB Windows NTFS volume
/0/2/0.0.0/2 /dev/sda2 volume 299MiB Windows FAT volume
/0/2/0.0.0/3 /dev/sda3 volume 127MiB reserved partition
/0/2/0.0.0/4 /dev/sda4 volume 587GiB Windows NTFS volume
/0/2/0.0.0/5 /dev/sda5 volume 449MiB Windows NTFS volume
/0/2/0.0.0/6 /dev/sda6 volume 323GiB Windows NTFS volume
/0/2/0.0.0/7 /dev/sda7 volume 19GiB Windows NTFS volume
/1 power Battery Name
/2 power Battery Name
/3 power Battery Name
/4 power Battery Name
/5 power To Be Filled By O.E.M.
xubuntu@xubuntu:~$

tehtävä c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

28.8.2017 18:55  Haettu sopivan tyyppisiä ohjelmistoja komentokehoitteen avulla komennolla: ”apt-cache search -ohjelmiston hakusana-”. Ajatuksena hakea linuxin vastine notepadille, paintille ja jokin kevyt pikkupeli.

Löydetty kolme kiinnostavaa ohjelmistoa:

-kephra (Kevyt tekstinkäsittelyohjelmisto)
-gimp (kuvankäsittelyohjelmisto)
-mah-jong (Linuxille tehty mahjong-peli)

Ohjelmistot, asennettu testikoneelle komennolla sudo apt-get install -ohjelman nimi-

Testattu, että ohjelmistot toimivat valitsemalla ne ohjelmistolistalta / ajamalla ohjelmisto konsolista kirjoittamalla ohjelmiston nimi konsolikenttään.

Tehtävä d)  Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.

29.8.2017 22:10 Selvitetty asennettujen ohjelmistojen lisenssityypit ja mitä oikeuksia lisenssit pitävät sisällään:

Kaikki asennetuista ohjelmistoista ovat GNU General public licence lisenssityypin alaisia ohjelmistoja.

Tämä tarkoittaa sitä, että ohjelmistoa ja / tai sen lähdekoodia voidaan levittää, kopioida tai muuttaa vapaasti. Mikäli ohjelmistoa käytetään pohjana uusien sovellusten kehittämisessä, samat oikeudet pätevät myös näihin ohjelmistoihin (ohjelma tällöin ns. muunneltu teos / deritative work), eikä ohjelmiston käyttöoikeuksia saa muuttaa tai sille saa asettaa mitään uusia lisärajoituksia. Lisenssi mahdollistaa tuotteen myymisen ohjelman käyttäjän tai muokkaajan toimesta, mutta ohjelmistoa ei voi kuitenkaan levittää omisteisesti.

Tehtävä d) 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.

29.8.2017 22:40 Listattu käytetyt ohjelmistot ja selvitetty linuxille saatavilla olevat vapaat vastineet. Käytetty ohjelmistovaihtoehtojen haussa alternativeto.net sivustoa.

Lista käytetyistä ohjelmistoista :
-Mozilla firefox (nettiselain)
Vapaa vastaava linux-ohjelmisto: MIDORI

-Microsoft office
sisältää ohjelmistot: word (tekstinkäsittely), excel (taulukkolaskenta), powerpoint (esitystenhallinta)
Vapaa vastaava linux-ohjelmisto: LibreOffice

-Paint Shop Pro (kuvankäsittely)
Vapaa vastaava linux-ohjelmisto: GIMP

-Eclipse (java-ohjelmointi)
Vapaa vastaava linux-ohjelmisto: Netbeans

-irfan view (kuvien katselu)
Vapaa vastaava linux-ohjelmisto: XnView MP

-winamp (musiikkisoitin)
Vapaa vastaava linux-ohjelmisto: Clementine

-spotify (Musiikkipalvelusovellus)
Vapaa vastaava linux-ohjelmisto: Sonerezh

-VLC media player (Videoiden katselu)
Vapaa vastaava linux-ohjelmisto: MPV

-Steam (Pelienjakelusovellus)
Vapaa vastaava linux-ohjelmisto: Desura

-Skype (Internetpuhelusovellus)
Vapaa vastaava linux-ohjelmisto: TOX

-Microsoft visual studio 2015 (ohjelmistokehitystyökalu)
Vapaa vastaava linux-ohjelmisto: NetBeans

-Rufus (levykuvien hallinta)
Vapaa vastaava linux-ohjelmisto: Etcher

-Bittorrent (torrentien hallintatyökalu)
Vapaa vastaava linux-ohjelmisto: qbittorrent

 

Alkuun

Lähteet:

Kurssisivu:

http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op

Xubuntu.org (xubuntun kotisivut):

https://xubuntu.org/

alternativeto.net (vaihtoehtoiset linux ohjelmistot):

http://alternativeto.net/

GNU general public license (tietoa GNU-lisensseistä):

https://www.gnu.org/licenses/gpl-3.0.en.html

Mainokset