This is your very first post. Click the Edit link to modify or delete it, or start a new post. If you like, use this post to tell readers why you started this blog and what you plan to do with it.

This is the post excerpt.
This is your very first post. Click the Edit link to modify or delete it, or start a new post. If you like, use this post to tell readers why you started this blog and what you plan to do with it.

Kurssi Palvelinten hallinta – Tero Karvinen
oma github – tili: https://github.com/ainetdinkirik
Lopputehtävänä oman modulin luonti:
Teen oman modulin, joka asentaa Golden Dict sanakirja-ohjelman, jonka kautta voi käyttää useita eri sanakirja-kirjastoja. Asennan GCIDE-kirjaston tässä modulissa.
Aloitan modulin luonnin “helloworld – periaatteella” eli teen esin pienet askeleet yksitellen, jonka jälkeen luon modulin. Asennan aluksi Xubuntu 16.04.03 – try without install – versioon Golden Gitin:

Ohjelma asentuu ja kokeilen sen toimivuutta komennolla: “goldendict”, jolloin avautuu:

F3 painikkeella aukeaa ikkuna, josta siirrytään kohtaan “Dictionaries”, jossa näkyy käytössä olevat kirjastot:

Ja kun en ole tässä vaiheessa vielä lisännyt ylimääräisiä kirjastoja näkyy oletuksena vain “English Wikipedia”
Asennan GCIDE – kirjaston:

Tämän jälkeen avaan uudelleen Golden Dictin. Tässä käsin tehdyssä vaiheessa ei Golden Dict automaattisesti ota GCIDE-kirjastoa käyttöön vaan se pitää käsin hakea seuraavan kuva mukaan. (Jatkossa modulin tehtyä tämä vaihe putoaa ja Golden Dict ottaa automaattisesti kirjaston käyttöön. Näkyy myöhemmin raportissa).

Tämä näkymä aukeaa Golden Dictin avatessa ja painaessa F3. Kohdasta “Add” painamalla päästään hakemaan ladattu kirjasto ja se löytyy polusta: “/usr/share/dictd” (Tämä vaihe poistuu siis myöhemmässä vaiheessa, modulin automatisoituessa). Tämän jälkeen klikataan “Rescan now” ja “Dictionaries” välilehti näyttää seuraavalta:

Testiksi haen sanalla “water” sanakirjasta tietoa ja onnistunut haku näkyy alla:

Nyt on käsintehty version onnistunut ja luon modulin, joka hoitaa asennukset. Init.pp tiedosto näyttää seuraavalta:

Teen github-tililleni uuden repositoryn nimellä “golden-dict”, jonne työnnän modulini: https://github.com/ainetdinkirik/golden-dict
Otan tässä vaiheessa tyhjän Xubuntu 16.04.03 käyttöön, asennan gitin ja puppetin ja haen modulini kloonaamalla sen repostani komennolla “git clone https://github.com/ainetdinkirik/golden-dict.git”. Siirrän kansiot “modules” sekä “manifests” hakemiston “/etc/puppet/” alle ja ajan modulin komennolla: “sudo puppet apply /etc/puppet/manifests/site.pp”

Nyt minulle asentuu Golden Dict ja GCIDE – kirjasto automaattisesti ja ne synkkaavat saman tien yhteen, eli tässä vaiheessa ei tarvitse tehdä ohjelmalle mitään muutoksia. Komennolla “goldendict” aukeaa ohjelma ja homma pelaa:

Kurssi – Palvelinten hallinta – Tero Karvinen
Tämän viikon kotitehtävät tehty yhdessä opiskelijakolleigoiden:
Mikko Hyvärinen – https://mikkohyvarinen.wordpress.com/
Janne Alhonen – https://testwordpresscom5123.wordpress.com/kotitehtava/
Github – tilini:
https://github.com/ainetdinkirik
Tehtävät tehty labraluokassa.
Tämän viikon tehtävät:
h5.
a) Asenna Puppetin orjaksi vähintään kaksi eri käyttöjärjestelmää. (Tee alusta, pelkkä tunnilla tehdyn muistelu ei riitä).
b) Säädä Windows-työpöytää. Voit esimerkiksi asentaa jonkin sovelluksen ja tehdä sille asetukset.
a)
Aloitimme tekemällä Jannen koneesta xubuntu puppetmasterin. Tehty H2 – ohjeen mukaan:
https://kirikainetdin.wordpress.com/2017/11/05/palvelinten-hallinta-h2/
Valitsimme Jannen master-koneen nimeksi “jannemaster.local”, koska kaikki kolme konettamme sijaitsivat labraluokassa. Teimme Jannen koneelle testiksi “helloFromMaster” – moduli ajettavaksi orjan koneelta.
Teimme Mikon koneesta ensimmäisen orjan xubuntu – käyttöjärjestelmällä.
Laitettu Mikon puppet.conf – tiedostoon tiedo masterista, joka on Jannen kone:

Pingattu testiksi onnistuneesti Mikon xubuntu-orjalta Jannen masteria sekä cat – komennolla katsottu modulin sisältö onnistuneesti:

Puppetmasterilla asennettiin ssh ja tehtiin asetuksiin muutokset niin, että confit ajettaessa orjan koneelta käyttää se porttia 8888 oletuksena olevan 22 sijaan:

Kuten kuvasta näkee ei yhteyden ottaminen onnistu oletusportilta.

Portti on kuvan mukaisesti vaihtunut orjan hakiessa asetukset masterilta.
Teimme Kirikin koneesta windows-orjan.
Windows – tikku tehtiin edellisellä opetuskerralla, jonka laitoin sammuneeseen tietokoneeseen ja käynnistettäessä valitsin F9. Pääsin bootti – valikkoon, josta valitsin windows – tikkuni. Tämän jälkeen pääsin asentamaan windowsia. Annoin koneelle nimeksi “orja” ja loin vahvan salasanan. Kaikkiin kysyttyihin asennustietoihin, joissa pyydettiin mm. lupaa koneen mikrofonin käytölle valitsin “ei”.
Windows asentui, jonka jälkeen pois “User account control settings” pois käytöstä:

Tässä kohtaa käynnistin tietokoneen uudelleen. Muutin puppet.confeihin windowsilla jannen koneen nimen hakemistosta “C:/ProgramData/PuppetLabs/puppet/etc/puppet.conf” Conffit muokataan notepadilla järjestelmänvalvojana:

Sitten hain puppetista version: https://downloads.puppetlabs.com/windows/puppet-3.8.5-x64.msi
Asensin puppetin, jonka jälkeen latasin Bonjour:n, jotta saisimme .local yhteyden toimimaan. Bonjour asennetaan järjestelmänvalvojana. Tämän jälkeen pystyin pingaamaan onnistuneesti Jannen master-konetta:

Tässä vaiheessa avasin command promptin järjestelmänvalvojana ja ajoin komennon “puppet agent -tdv”
Nyt oli Jannen vuoro ajaa komento “sudo puppet cert –list”, jolla se haki hyväksymättömät sertifikaatiot. Sieltä löytyi minun koneeni tiedot, jotka Janne hyväksyi komennolla “sudo puppet cert –sign ja koneen tiedot”
Tässä vaiheessa minun koneella ajettiin komento “puppet agent -tdv” uudelleen ja sertifikaatiot olivat hyväksyttyinä ja yhteys rullasi xubuntu puppetmasterin ja windows – orjan välillä.
Jannen koneella luotiin “hellowindows” – tiedosto ajettavaksi windows – koneelta. 
Jannen koneella ajettiin komento “sudo service puppetmaster restart” ja minun Windows – koneella komento “puppet agent -tdv”.
Ajo onnistui ja lopputoloksena hellotero – tiedosto löytyi C:/ – polun juuresta:

b)
Jannen koneella teimme modulin “class gedit”

Joka muutettiin lopulta “class vlc”
moduli ajettiin windows – koneella ja lopputuloksena asentui windowsille toimiva vlc – ohjelma:

Kurssi – Palvelinten hallinta – Tero Karvinen
Tämän viikon kotitehtävät tehty yhdessä opiskelijakolleigoiden:
Mikko Hyvärinen – https://mikkohyvarinen.wordpress.com/
Janne Alhonen – https://testwordpresscom5123.wordpress.com/kotitehtava/
Github – tilini:
https://github.com/ainetdinkirik
Harjoitusten tekoon käytetty lähteenä Joona Leppälahden ohjetta:
https://github.com/joonaleppalahti
Tehtävät tehty labraluokassa.
Tämän viikon tehtävät:














Ja vlc komennolla:
“sudo salt xubuntu pkg.install vlc
Ja onnistuneet tulokset löytyvät orjan koneelta:



Kurssi Palvelinten Hallinta – Tero Karvinen – http://terokarvinen.com/2017/aikataulu-palvelinten-hallinta-ict4tn022-3-5-op-uusi-ops-loppusyksy-2017-p5
Käytetyt lähteet:
http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine
Kotitehtävät tälle viikolle:
h3.
a) Asenna useita orjia yhteen masteriin. Ainakin yksi rauta- ja useampia virtuaalisia orjia.
b) Kerää tietoa orjista: verkkokorttien MAC-numerot, virtuaalinen vai oikea… (Katso /var/lib/puppet/)
c) OrjaSkripti: Tee skripti, joka muuttaa koneen Puppet-orjaksi tietylle masterille. Voit katsoa mallia Tatun tai Eemelin ratkaisuista.
Tehtävät tehty yhdessä opiskelijakollegoiden Janne Alhonen sekä Mikko Hyvärinen kanssa. Mikko toimi “master” – koneena ja Kirik “rautaorja2” – koneena. Kaikkia koneita ja virtuaalikoneita hallittu kuitenkin yhdessä ja tehtävien kohdat on tehty yhdessä.
a)
Muutettu Mikon koneen nimi “master” – nimeksi, joka toimii tehtävässä Masterin roolissa ja Kirikin koneeksi “rautaorja2”, joka toimii vaadittuna fyysisenä koneena eli rautaorja.
“sudo hostnamectl set-hostname master”
ja hosts tiedostoon tehty master – IP määritykset
“sudoedit /etc/hosts”

Orjalle määritykset nimeen “rautaorja2” ja IP – määrityksissä masterin IP – osoitteen lisäksi 127.0.1.1 perään “xubuntu rautaorja”
Seuraavaksi asensimme master – koneelle puppetmasterin komennolla
“sudo apt-get install -y puppetmaster”
Tässä kohtaa pysäytimme puppetmasterin komennolla:
“sudo service puppetmaster stop”
Ja muokkasimme puppet.conf tiedostoa komennolla:
“sudoedit /etc/puppet/puppet.conf“
Ja tietoihin lisäykset:
“dns_alt_names = puppet, master, puppet.master”
Tämän jälkeen vuorossa puppetmasterin käynnistys komennolla:
“sudo service puppetmaster start“
Orjalle asensimme Puppetin komennolla:
“Sudo apt-get install puppet”
Ja muutokset puppet conffeihin komennolla:
“sudoedit /etc/puppet/puppet.conf“
Ja tiedostoon lisäys:
“[agent]
server = master”
Puppetin uudenlleenkäynnistys ja enablointi:
“sudo service puppet restart”
“sudo puppet agent – – enable”
Tämän jälkeen listasimme ja signeerasimme cert listin avulla masterin koneella:
“sudo puppet cert – – list”
“sudo puppet cert –sign rautaorja2.tielab.haaga-helia.fi”
Jonka jälkeen orjalla käydään ajamassa cert list komenton:
“sudo puppet cert – – list”
Nyt master ja rautaorja2 ovat yhteyksissä ja luomme masterin koneella helloworld – modulin menemällä masterin koneella:
“cd /etc/puppet”
Ja luomalla kansion:
“sudo mkdir -p manifests/ modules/helloworld/manifests/”
Jonne tiedosto site.pp komennolla:
“sudoedit manifests/site.pp”
Tiedostoon sisälle:
“include helloworld”
Ja ajoimme teimme modulitiedoston init.pp komennolla:
“sudoedit modules/helloworld/manifests/init.pp”
Tiedostoon sisälle koodinpätkä:
“class helloworld {
file { ’/tmp/helloFromMaster’:
content => ”Harjoitus 3 testi”
}
}”
Komento ajettiin masterin koneella:
“sudo puppet apply /etc/puppet/manifests/site.pp”
Tämän jälkeen testattu helloworldia rautaorjan koneella komennolla:

Ja kuvassa näkyy onnistunut testi.
Tämän jälkeen halusimme tehdä saman kahdella virtuaalikoneella, joten asensimme vagrant virtualboxin komennolla:
“sudo apt-get -y install vagrant virtualbox”
Asennuksen jälkeen komennot:
“vagrant init bento/ubuntu-16.04”
“vagrant up”
“vagrant ssh”
Ja kuten kuvassa näkyy, alhaalla onnistunut virtuaalikoneen käynnistys.
Koska halusimme kaksi virtuaalikonetta muokkasitte Vagranfileä komennolla:
“nano Vagrantfile”
Ja tiedoston tiedot korvataan Tero Karvisen sivuilta löytyvillä koodinpätkillä:
http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine
“
# http://TeroKarvinen.com/
Vagrant.configure(2) do |config|
config.vm.box = “bento/ubuntu-16.04”
config.vm.define “slave01” do |slave01|
slave01.vm.hostname = “slave01”
end
config.vm.define “slave02” do |slave02|
slave02.vm.hostname = “slave02”
end
end”
Jonka jälkeen taas komento:
“vagrant up”
ja nyt pystyimmekin ottamaan yhteyden valitsemaan koneeseen komennolla:
“vagrant ssh slave01”
Koneen käynnistyttyä teimme sille samat toimenpiteet, kuin rautaorjalle, jonka jälkeen sama toistettiin slave02. Näin master – koneella on yksi rautaorja- ja kaksi virtuaaliorjakonetta.

Yllä näkyy cert listillä vielä myöhemmin skriptin avulla luotu kolmas virtuaaliorja sekä nuo aikaisemmin luodut orjat.
b)
Yritimme eri keinoilla päästä lukemaan “/var/lib/puppet/” sisältöä tuloksetta. Käytimme tehtävässä komentoja “cd, -tail, cat”. Saimme koneiden cert listin kautta MAC osoitteet esille:

c)
Loimme Mikon master – koneella skriptin, jolla asentaa orja suoraan masterin alaisuuteen. Käytimme opiskelija Tatu Erkinjuntti malliskriptiä, jota muokkasimme omiin tarpeisiimme sopivaksi:
Luomamme skriptit löytyvät Mikon githubtililtä:
Skripti, joka tarvitaan orjan asennukseen:
https://raw.githubusercontent.com/mhyvarinen/slavescript/master/orjuuttaja.sh
”
sudo apt-get update
sudo apt-get install -y puppet git
git clone https://github.com/mhyvarinen/orjuuttaja.git
sudo cp -r orjuuttaja /etc/puppet/modules/
cd /etc/puppet/
sudo puppet apply –modulepath modules/ -e ‘class {“orjuuttaja”:}’
sudo puppet agent –enable
sudo service puppet restart
echo ” ”
echo “Orjuutus valmis”
echo ” ”
”
Skriptin läpiviemisen jälkeen täytyy orjan “/etc/hosts/” tiedostoon muokata masterin IP – osoite ja hostname sekä syöttää komennot:
“sudo service puppet restart”
“sudo puppet agent –enable”
suorittaa cert –list komennot orjalla sekä masterilla.
Kurssi Palvelinten hallinta – Tero Karvinen – http://terokarvinen.com/2017/aikataulu-palvelinten-hallinta-ict4tn022-3-5-op-uusi-ops-loppusyksy-2017-p5
Tehtävissä käytetty apuna toisen, saman kurssin opiskelijan Rasmus Ekmanin tekemiä ohjeita – https://rasmusekmanblog.wordpress.com/2017/11/02/h2-palvelinten-hallinta-linux/
sekä Eemeli Aaltosen skriptiä osoitteesta – https://github.com/poponappi/essential-tools
H2 b – kohta tehty yhdessä toisen opiskelijan Janne Alhosen kanssa – https://testwordpresscom5123.wordpress.com/
Minun github – tili löytyy – https://github.com/ainetdinkirik
Tehtävien teossa käytetyt koneet:
a) Oma läppäri sekä muistitikku, jotka kuvailtu aiemmissa harjoituksissa.
b) Haaga-Helian labraluokan tietokoneet yhteistyössä Janne Alhosen kanssa
Viikon tehtävänanto:
h2.
a) Gittiä livenä: Tee ohjeet ja skriptit, joilla saat live-USB -tikun konfiguroitua hetkessä – ohjelmat asennettua ja asetukset tehtyä.
b) Kokeile Puppetin master-slave arkkitehtuuria kahdella koneella. Liitä raporttiisi listaus avaimista (sudo puppet cert list) ja pätkä herran http-lokista (sudo tail -5 /var/log/puppet/masterhttp.log).
a)
Tein Githubin tililleni seuraavan skriptin:

Kyseinen skripti on Eemeli Aaltosen käsialaa ja se löytyy osoitteesta – https://github.com/poponappi/essential-tools
Skriptiin tehty muutokset niin, että ne vastaa minun github – tililtä löytyviin tiedostoihin ja asennettaviin ohjelmiin. Skriptin ajamalla tulee haettua tuoreet päivitykset ohjelmille, asennetuksi ohjelmat tree sekä puppet, ssh asennus-moduli, skandinaaviset ääkköset sekä kellonaika-asetukset Helsingin aikavyöhykkeen mukaan.
Testattu skriptin toimivuutta live-tikulla. Laitettu live-tikku tietokoneeseeni ja avattu “Try Xubuntu without install” moodissa. Mitään asetuksia en tässä vaiheessa tee vaan syötän ainoastaan kaksi komentoa, joilla toisella haen skriptin ja toisella ajan sen:


Skriptin ajaminen onnistuu ja asennettavat ohjelmat ja määritykset onnistuvat. Testataan ssh:n toimivuutta ja määrityksiä. Sshd_config – tiedostossa minulla on määritys ssh – yhteydessä käytettävästä portista, joka on määritetty olevan 8888 oletuksena olevan 22 sijasta.

Ssh – yhteyden ottaminen portin 8888 kautta onnistuu ja näin totean testin onnistuneeksi.
b) HUOM TÄMÄ KOHTA TEHTY YHDESSÄ JANNE ALHONEN KANSSA
Tehtävässä on tavoitteena käyttää Mestari-koneella Orja-konetta ja oppia käytettävää arkkitehtuuria. Tähän tehtävään tarvitaan siis kaksi konetta, josta syystä toteutettu tämä yhdessä toisen opiskelijan Janne Alhonen kanssa. Molemmat käytimme Haaga-Helia ammattikorkeakoulussa sijaitsevia labra-luokan koneita. Käytössä livetikku, jota itse olen käyttänyt aiemmissa harjoituksissa ja Jannen livetikun tiedot löytyvät hänen sivuiltaan (linkki raportin yläosassa).
Päätimme toimia kokoonpanolla Janne – Master ja Kirik – Slave.
Muutettu kuvan mukaisesti Jannen koneen xubuntu – käyttäjän nimi “Mestari” nimeksi ja vastaavasti Kirikin koneen käyttäjän nimi “Orja” nimeksi.

Ja syötetään komennolla “sudoedit /etc/hosts/” tietoihin mestarille kohdan: 127.0.1.1 perään “xubuntu mestari” ja vastavuoroisesti orjalle “xubuntu orja”

Molemmilla koneilla käynnistettiin uudelleen avahi demoni komennolla
“sudo service avahi-daemon restart”
Tämän jälkeen käytettiin ping komentoa toisillemme:


Latasimme Mestarin koneelle puppetmasterin komennolla “sudo apt-get install puppetmaster”, jonka jälkeen pysäytimme puppetmaster-demonin komennolla “sudo service puppetmaster stop”. Tämän jälkeen deletoimme ssl tiedoston Mestarin koneelta komennolla ” sudo rm -r /var/lib/puppet/ssl” ja lisäsille Mestarille nimimääritykset conffitiedostoon komennolla “sudoedit /etc/puppet/puppet.conf” ja muutoksent “dns_alt_names” – rivin määrityksiin seuraavanlaisesti:

Tässä vaiheessa puppetmasterin uudelleenkäynnistys komennolla “sudo service puppetmaster start”
Asensimme Orjan koneelle nyt puppet – demonin komennolla “sudo apt-get install puppet” ja sille tehtiin conffi tiedostoon muutokset niihin menemällä komennolla “sudoedit /etc/puppet/puppet.conf” Ja conffeihin seuraava [agent] määritelmä:

Tämän jälkeen luotu tiedosto, jolla annettu Orjalle käynnistymisoikeudet komennolla “sudoedit /etc/default/puppet” ja tyhjään tiedostoon määritykset:
START=yes
Tässä vaiheessa käynnistimme puppet – demonin uudelleen komennolla “sudo service puppet restart”
Orjan sertifikaatit lisättiin masterille:

Mestarilla luotiin manifesti hamistoon /etc/puppet/ komennolla “sudo mkdir -p manifests/ modules/helloworld/manifests/” ja siellä siellä tehty komennolla “sudoedit manifests.site.pp.” tiedot:
include helloworld
jonka jälkeen teimme helloworld moduulin komennolla “sudoedit modules/helloworld/manifests/init.pp” ja sisällön loimme:
class helloworld {
file { ‘/tmp/helloFromMaster’:
content => “See you at http://terokarvinen.com/tag/puppet\n”
}
}
(lisätty tähän väliin mainosta terokarvisen nettisivuille tehtävän keskelle)
Ajettu moduli komennolla “sudo puppet apply -e ‘class{“helloworld”:}”
Tässä vaiheessa käynnistetty orjan puppet – demoni uudelleen komennoilla “sudo service puppet restart”, “sudo service puppet reload” ja “sudo puppet agent –enable”.
Orjalla syötetty komento “cat /tmp/helloFromMaster” ja seuraava tulostuu:

Tehtävä onnistui hakemalla Orjan koneella tarvittavat asetukset Mestarin koneelta.
cert list ja Mestarin logista pätkää:


Uusi kurssi alkoi nimeltä Palvelinten Hallinta, jonka opettajana toimii Tero Karvinen. Ensimmäisen tunnin pohjalta tulleet kotitehtävät löytyvät osoitteesta: http://terokarvinen.com/2017/aikataulu-palvelinten-hallinta-ict4tn022-3-5-op-uusi-ops-loppusyksy-2017-p5#comment-23224 ja tehtävä käsitellään tässä blogissa.
Tehtävässä käytössä sama Asuksen läppäri ja live-tikku, joista tiedot aiemmissa tehtävissä.
h1. a) Asenna jokin muu demoni kuin Apache. Raportoi, miten rakensit, selvitit ja testasit kunkin osan (esim. sudo puppet resource, puppet describe, lähteet…). Julkaise myös modulisi lähdekoodi niin, että sen voi helposti ottaa käyttöön.
a) Hain github – tililtäni tiedostot, jotka olin ensimmäisellä lähiopetustunnilla sinne julkaissut käyttäjänimellä “ainetdinkirik”. Sieltä löytyy kansio nimeltä “koekansio”, jonka alle työstin apache2 – asennusmoduulia ja hello world moduulia. Tällä kertaa kokeilin tehtävänannon mukaisesti asentaa uutta moduulia ja oman taitotasoni mukaan lähin kokeilemaan ssh – demonin asennusta.
Asensin puppetin komennolla “sudo apt-get install puppet”. Loin tämän jälkeen kansiot ja tiedoston /etc/puppet/modules/sshd/manifests/init.pp. Tähän tiedostoon tein määritelmät:
class sshd {
package {‘ssh’:
ensure => ‘installed’,
allowcdrom => ‘true’
}
}
Tällä määrittelen modulin asentamaan ssh:n, jos se ei ole valmiiksi asennettuna koneella komentoa syötettäessä. “Allowcdrom” on määritelmä, jota vaaditaan, että moduli toimii live-tikun kanssa.
Ajettu moduli komennolla: “sudo puppet apply -e ‘class {“sshd”:}’”
Komennon ajettuani kokeilin ssh:n olemassaoloa kirjoittamalla komentokehotteeseen “ssh”, jolloin demoni näkyi asennettuna.
Siirsin kansiot ja tiedoston “koekansio” kansioon, jotta voisin sen helposti jakaa github – tililleni. Käyttäjäperäisestä ongelmasta eli osaamattomuudestani en tässä kuitenkaan onnistunut. Tästä syystä en raportoi vielä tätä ensimmäistä kotitehtävääni Githubiin vaan tänne tuttuun wordpressiin.
Tero Karvinen Linux Palvelimet kurssin viimeinen etätehtävä vuorossa. Kurssin tehtävät ja materiaalit löytyvät osoitteesta:
http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op
Tämän viikon tehtävä eli H6 muodossa:
a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt
Käytössä sama Asus-läppäri, kuin kaikissa aiemmissa harjoituksissa ja viimeharjoituksessa luotu live-tikku xubuntu – käyttöjärjestelmällä 16.04, jolla korvasin aiemman 17.04 version, jonka kanssa tuli edellisessä harjoituksessa yhteensopivuusongelmia.
a)
Aloitettu pakollisella komennolla “sudo apt-get update”, jolla haetaan ohjelmien uusimmat päivitystiedostot, jonka jälkeen asennettu aakkoset komennolla “setxkbmap fi”.
Asennettu python3 komennolla “sudo apt-get install python3”. Tämän jälkeen tehty kotihakemistooni kansio “testaus” komennolla “mkdir testaus”, jonne tallennan testattavat koodikieltä sisältävät kansiot. Siirrytty “testaus”-kansioon ja luotu tiedosto “hei.py” komennolla “nano hei.py”.
Lisätty tiedostoon python-koodipätkä: 
Tämän jälkeen syötin terminaaliin komennon “python3 hei.py”, jolloin tulostui alla näkyvä tervehdys “Hei maailma!”

Toinen testattava kieli on bash, jonka hain komennolla “sudo apt-get bash”.
Luotu bash-tiedosto komennolla “nano heima.sh”.
Tiedostoon syötetty koodinpätkä:

Terminaaliin syötetty komento “sh heima.sh”, jolloin alla oleva tervehdys tulostui esiin.

Kolmantena kielenä asennettu Golang komennolla “sudo apt-get install golang”.
Luotu tiedosto komennolla “nano heimaailma.go”, jonne lisätty koodinpätkä:

Syötetty komento “go build heimaailma.go”, jotta koodinpätkän saisi toimimaan. Nyt syöttämällä komennon “./heimaailma” tulostui seuraava:

Tero Karvinen – Linux Palvelimet kurssi.
Tehtävänannot löytyvät osoitteesta:
a) Messuraportti. Kirjoita arvioiva kuvaus kolmesta tuotteesta tai esityksestä. Muista myös arvioida ja vertailla – ei pelkästään toistaa mainoslauseita. Käytä arvioidessa kaikkia aiempia, esimerkiksi töissä ja kursseilla oppimiasi tietoja. Tässä muutama kysymys, joista voi olla apua kirjoittessa (mutta joihin vastaaminen ei vielä riitä vastaukseksi). Minkä ongelman tuote ratkaisee Mitä tuote maksaa (esim. halvin aloitus vs tyypillinen käyttötapaus, ensimmäisen vuoden hinta)? Millä tekniikoilla tuote on toteutettu (tietokannat, ohjelmointikielet, käyttöjärjestelmät, palvelimet, protokollat…)? Tärkeimmät kilpailijat? Kilpaileeko jokin vapaa ohjelmisto tämän kanssa (vai onko tämä jo valmiiksi vapaa ohjelma)? Mitä ajatuksia tuote tai palvelu herättää? Millainen yritys on tuotteen taustalla? Ota blogiisi myös artikkeliasi tukevia kuvia.
d4) (ryhmä 4-ti) Asenna LAMP ja lue tietokantaa PHP-ohjelmalla. (Pitkähkö tehtävä)
e4) (ryhmä 4-ti) Asenna WordPress ja luo esimerkkisisältöä.
a) Raporttiin valitsin kolme esitystä/tuote-esittelyä, joihin kävin tutustumassa Cyber Security Nordic – messuilla.
Ensimmäisenä vierailupisteenä oli Jetico, jonka tuotteena oli palvelu, joka kryptaa asiakkaan hallussa olevat laitteet niin, että vääriin käsiin joutuessaan pysyvät tärkeät tiedot tallessa. Yrityksellä on myös tyhjennyspalvelu, jossa se poistaa tallennettua tietoa levyasemilta ja muisteista niin, että kaikki tarvittava poistuu ja katoaa kokokaan palauttamisen estämiseksi. Tuotteen hinnoittelua kysyessä paljastui, että tuotetta esittelevä henkilö ei itse ollut yrityksen tai tuotteen asiantuntija, mutta osasi kertoa pääpiirteittäin tuotteen toiminnoista. Hän arvioi perustuotteen hinnaksi noin 40€ kuitenkaan lupaamatta mitään faktapohjaa. Esitys oli aika lailla pintaraapaisu ilman syvempää tietoa. Käytetyistä ja luotetuista kryptauksen algoritmeista paljastui käytettäviksi AES (Rijndael), Twofish sekä Serpent.

Toinen vierailtu piste kuului Ciscolle. Ciscon pisteellä esiteltiin mm. pilvessä toimivaa tietoturvapalvelua Cisco Umbrellaa, joka soveltuu niin yrityksille, kuin yksittäisille koneille. Cisco ei ollut myymässä palvelua suoraan pisteellä ja he painottivat toimittavansa palvelua yhteistyökumppaneilleen, jotka markkinoivat palvelua eteenpäin kuluttajille ja yrityksille. Ja painotuksena myös, että Cisco toimii alle 60 – hengen voimin Suomessa ja että päätoiminta on Yhdysvaltalais-johtoista. Yritys tarjoaa suojaa tietoturvauhkia ja hyökkäyksiä vastaan keskitettynä yhden katon alle.
![image1[16576]](https://kirikainetdin.wordpress.com/wp-content/uploads/2017/09/image116576.jpg?w=840)
Kolmantena pisteenä oli erittäin mielenkiintoinen uudenlainen Suomessa kehitetty konsepti yritykseltä Cysec Icewall Cysec Vault. Yritys tarjoaa palvelua isoille yrityksille, jossa se tallentaa sata prosenttisesti kaiken liikenteen mitä yrityksen verkossa liikkuu. Palvelun ei ole tarkoitus estää murtoyrityksiä vaan murron tapahtuessa he pystyvät selvittämään syyllisen ja toteamaan varmuudella mitä hyökkääjä on tehnyt ja yrittänyt. Palvelussa on patenttihakemus loppusuoralla ja se on kehitetty vuonna 2014. Idea on uudenlainen ja mielestäni erittäin järkevä. Kun murtautuminen on kerran paljastunut saadaan selvää dataa siitä mihin tietoturvaongelmaan täytyy panostaa ja missä on parannettavaa. Esittelijöiden mukaan tämä on tulevaisuuden tietoturvan suunta pelkän uhkien torjumisen sijaan. Tällä tavalla saadaan myös muista yrityksistä paljastuneet hyökkäykset loppumaan omassa yrityksessä, kun mitätöidään hyökkääjän asearsenaali.

d4) Koulussa testatessa sekä kotona uudemman kerran testatessa LAMP:n asennusta tuli vastaan ylitsepääsemätön ongelma mySQL:n asennuksen kanssa. Lokeihin tuli erroria, jotka eivät poistuneet opettajan avustuksellakaan. Ongelman syyksi selvisi minun Live-tikun versio 17.04. Kokeiltu asentaa live-tikulle xubuntu versio 16.04 ja ongelma poistui samantien. MySQL:llä siis jotain ongelmia tuon uudemman xubuntu-version kanssa, joten suosittelen lämpimästi vanhempaa versiota, jos törmäät vastaavaan ongelmaan.
Asennettu LAMP käyttäen Tero Karvisen asennus ohjetta:
http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo
Tulkitsin tehtävänannossa määrätyn “lue tietokantaa PHP-ohjelmalla” tarkoittavan sitä, että PHP tulostaa tietokannasta jotain nettisivulle. Tein hakemiston public_html jonne PHP tiedoston index.php, jonne laitoin koodirimpsua testiksi tulostamaan yhteenlaskun ja hakemaan mySQL tietokantaani lisäämääni sisältöä.

Ja lopputulos oli onnistunut näyttäen tältä:

e4)
Koulussa nähtiin erittäin nopea demonstraatio wordpressin asennukseen. Siitä ei päähän kerennyt tallentumaan juuri mitään, joten etsitty googlea apuna käyttäen kahdet eri ohjeet wordpressin asennukseen ubuntu 16.04:lle. Pitkien kamppailujen jälkeen sain salakirjoitettua tiedostoja, luotua hakemistoja ja muutettua hakemistoja, mutta mitään konkreettista en saanut ulos enkä osaa sanoa onnistuiko mikään vaihe todella.
Linux palvelimet kurssi jatkuu kotitehtävällä nro 4. Kaikki kurssin tehtävät löytyvät osoitteesta: http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op#h4
Tämän kerran tehtävät ovat:
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.
Käytössä on sama läppäri sekä livetikku, joiden specsit löytyvät aikaisemmista harjoituksista kirjattuina.
r) Hain Github Education Packista alennuskoodin Digitalocean julkiseen virtuuaalipalvelimeen. Vuokrasin sieltä itselleni julkisen palvelimen käyttööni viideksi kuukaudeksi tehtävänannon ohjeiden mukaisesti.
Avattu oman ubuntun kautta ssh-yhteys palvelimeen komennolla “ssh root@palvelimen IP-osoite”.
Tehty reikä palomuuriin, jonka kautta käyttää omaa liikennettä komennoilla:
sudo ufw allow 22/tcp
sudo ufw enable
Tämän jälkeen tein oman käyttäjän palvelimelle käyttäjätunnuksella “kirik”:
sudo adduser kirik
sudo adduser kirik sudo
sudo adduser kirik adm
sudo adduser kirik admin
Laitettu käyttäjälle salasana ja koitettu toimivuutta ottamalla yhteys palvelimeen: ssh kirik@palvelimen IP-osoite.
Homman toimiessa lukittu root – käyttäjä turvallisuustekijöiden vuoksi komennolla:
sudo usermod –lock root
ja muutettu ssh_config:stä “PermitRootLogin” tilaan “no”, jonka jälkeen käynnistetty palvelin uudelleen.
Hyväksytty myös porttiliikenne komennolla: sudo ufw allow 80/tcp, apachea ja muuta omaa käyttöä varten.
x) Tehtävänantona oli laittaa julkinen domain-nimi osoittamaan koneeseeni käyttäen esim. Namecheap palvelua. Hain Github Education Packista itselleni vuoden ilmaisen käytön Namecheapiin. Palvelu ei minun taidoilleni ollut kovin selkeä ja yritin kahden tunnin ajan löytää keinoa ratkaista tämä tehtävänanto. En onnistunut omin voimin ja muiden raportteja lukiessa löytyi ilmoituksia “asennettu namecheap ohjeiden mukaan”. Tämän vuoksi jäi tämä tehtävä onnistumatta.
// PÄIVITYS: Koulukaverin konsultoinnin jälkeen havaittu pieni “rasti ruutuun puuttuu”- virhe, jonka jälkeen onnistuikin Namecheapin ohjeilla loppuun saakka.
s) Seuraavaksi piti laittaa julkiselle palvelimelle käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna. Aikaisemman harjoituksen tavoin tein kotihamistoon testisivun, jonne laitoin pelkkää tekstiä toimivuuden todentamiseksi:

y) Neljäs tehtävä oli etsiä julkisen palvelimeni lokeista esimerkkejä murtautumisyrityksistä.
Menty palvelimen rekistereihin komennolla:
cd /var/log/
jonne syötin lokien reaaliaikaisen seuraamisen onnistumiseksi komennon:
tail -F auth.log
Parin sekunnin odottelun jälkeen löytyi jo ensimmäinen murtautumisyritys:

IP 58.218.198.170 yrittää kovasti läpäistä root-käyttäjän salasanaa ja täten päästä palvelimelleni. IP:n takaa löytyy todennäköisesti jokin botti, koska palvelimen käynnistettyä alkoi saman tien murtoyritykset. Onnekseni root-käyttäjällä on hyvä salasana ja toiseksi olen lukinnut root-käyttäjän, joten minäkään en pääse siihen salasanallani kirjautumaan, joten murtautumisyritys jää todennäköisesti vain yritykseksi.
IP osoittaa haun jälkeen kohdemaakseen Kiinan ja operaattorin olevan china telecom. Jonkin aikaa murtautumisyrityksiä seurattua huomaan, että hyökkäykset tulevat pääsääntöisesti Kiinasta ja osa myös Brasiliasta.
Tero Karvisen Linux Palvelimet – kurssin 3. viikon kotitehtävä vuorossa. Tehtävät löytyvät kokonaisuudessaan osoitteesta
http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op
Tehtävänanto kokonaisuudessa oli tälle viikolle:
Tämä h2 tehtävä on päivitetty siten, että voit ratkoa tehtäviä valintasi mukaan LAMP:illa, Python Flask + Postgrella tai jollain muulla valitsemallasi kehikolla. Helppoja rivi tiistaina opetetuilla aiheilla voisi olla esim a-b-i tai a-b-h. Ja guruille tässä on paljon haastavia vapaaehtoisia tehtäviä.
a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla. Tämä a-kohta on vaihdettu.
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)
Näistä valitsin oman tasoni mukaan helpomman polun, eli tehtävät a, b sekä i.
Ensimmäisten kahden harjoituksen tavoin teen tehtävät omalla Asuksen kannettavalla tietokoneella:
Tehtävässä käytetty tietokone:
Asus G551J
Intel Core i7-4710HQ @ 2.50GHz
RAM 8Gt
Windows 10 64bit
NVIDIA Geforce GTX 860M
sekä ensimmäisessä harjoituksessa luodulla XUbuntu live-tikulla.

A) Avattu terminaalinäkymä ja syötetty komento “sudo apt-get update”, jolla haettu uusimmat päivytykset.
Tämän jälkeen asennettu Apache2 palvelin komennolla “sudo apt-get install apache2”.
Omalla IP-osoittella sekä kirjoittamalla “localhost” URL-kenttään avautui toimiva palvelinsivu:

Luotu oma Virtualhost komennolla “sudoedit /etc/apache2/sites-available/kirik.conf”, jonne löin komennot: ”
<VirtualHost *:80>
DocumentRoot /home/xubuntu/public_html/
<Directory /home/xubuntu/public_html/>
Require all granted
</Directory>
</VirtualHost>
Enabloin confit ja otin defaultit pois käytöstä komennoilla:
sudo a2ensite kirik.conf
sudo a2dissite 000-default.conf
jonka jälkeen uudelleenkäynnistin apache – palvelimen.
Tein oman public-html kansion sivustoa varten:
mkdir public_html/
jonne tein index,html tiedoston, jonne laitoin testitekstiä.
Tehävänannon mukaisesti sain sivun toimimaan osoitteilla “omaIP/~xubuntu/” sekä “localhost/~xubuntu”. Kuvassa näkyy vain jälkimmäin testaus, koska en halua omaa IP-osoitettani nettiin näytille:

B) Etsitty lokista onnistunut sekä epäonnistunut latauskerta.
Siirryin kohteeseen: /var/log/apache2 ja syötin komennon “sudo tail -F*”, jonka avulla sain viimeiset lokitiedot kaikista hakemistossa olevista kolmesta lokista “access.log, error.log other_whosts_access.log”.
Löytyi onnistunut latauskerta, jonka lokirivi kertoo:
127.0.1.1:80 127.0.0.1 – – [08/Sep/2017:10:47:30 +0000] “GET / HTTP/1.1” 200 500 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0”
“127.0.1.1:80 127.0.0.1” Viittaa localhostin IP-osoitteeseen, joka on oma tietokone tässä tapauksessa ja :80 on http:n käytössä oleva portti. “[08/Sep/2017:10:47:30 +0000]” kertoo päivämäärän eli 8. syyskuuta 2017 sekä kellonajan, joka on 10:47:30. Kellonaika on GMT+0, eli kello on Suomen ajassa tätä harjoitusta tehdessä 13:47:30.
“GET / HTTP/1.1″ 200 500” Hakupyyntö webbiselaimelta sekä onnistunut palautekoodi “200 ok” “500” viittaa merkkimäärän, joka palautteessa lukee.
“(X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0” Ilmaistaan käytetyn Ubuntun mallia sekä Firefoxin versiota.
Epäonnistunut latauskerta:
127.0.1.1:80 127.0.0.1 – – [08/Sep/2017:10:47:47 +0000] “GET / HTTP/1.1” 404 496 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0”
“404 496” Kertoo epäonnistuneen latauskerran virhekoodin: Page not found. Ja 496 palautteen merkkimäärän.
I) Sain aikaiseksi HTTP – Statukset 200 sekä 404 kuvassa näkyvät kaksi alinta lokia:

Onnistunut eli “200” syntyi menemällä onnistuneesti sivulle osoitteella “localhost/~xubuntu”. Epäonnistunut eli “404” syntyi kirjoittamalla URL – kenttään virheellinen osoite, joka oli tällä kertaa “localhost/~xubun”, jolloin tuli virheilmoitus: Page not found.
h4.
a) Kokeile Ansible
b) Kokeile Salt:tia
Seuraavalle tunnille 2 tyhjää USB-tikkua mukaan.
Mieti, minkä oman modulin / projektin haluat tehdä tällä kurssilla.
Aloita kertaamaan kurssikirjallisuutta kokeeseen: tunnit, Puppet 3.8 Reference Manual, Puppet Cookbook.