H4)

A)

Loin tunnilla käyttäjätilin digitalocean.com:iin hyödyntäen ilmaista opiskelijatarjousta Githubin kautta. Loin DigitalOceaniin oman palvelimen (”create new droplet”) seuraavin askelin: Valitsin distroksi Debianin (11 x64), CPU:lle mahdollisimman yksinkertaisimmat asetukset (basic vaihtoehto, 1 GB CPU, 25 GB SSD, 1000 GB transfer). Datacenterin sijainniksi valitsin Frankfurtin EU:n lakien ja fyysisen läheisyyden vuoksi.

Autentikaatiotavaksi loin ssh-parin luomisen noudattamalla DigitalOceanissa esitettyjä ohjeita, eli oman koneen kautta pitää generoida ssh-avain ja kopioida julkisen avaimen sisältö digital oceanin käyttäjätilille. Valitsin vielä ilmaiset palvelut, jotka enabloivat julkisen IPv6-verkkotyöskentelyn (käytän ipv4 kuitenkin) ja dropletin monitoroinnin. Hostnameksi vielä valkkasin ”debian-topias”. Virtuaalikoneen luomisessa kesti vajaat pari minuuttia. Laitoin vielä varmuuden vuoksi virtuaalikoneen pois päältä lisäsäätöjen (kuten palomuurin luomisen) ajaksi.

D)

Ensin annoin nimen palomuurille (Firewall-Debian-Topias). Sitten säädin sisääntulevan liikenteen säännöt. Käytin oletusarvoja, eli ssh:ta, TCP-protokollaa, porttia 22 jne. Ulospäinsuuntautuvan liikenteen suhteen käytin myös oletusarvoja ilman poikkeuksien asettamista. Lopuksi liitin palomuurin dropletilleni (debian-topias). Myöhemmin loin kaksi uutta sääntöä palomuurilleni koskien sisääntulevaa liikennettä, jotta sain apache2-palvelimella olleen internet-sivuni näkyviin julkiseen internettiin. Loin HTTP-liikenteelle (TCP-protokolla) portin 80 käytettäväksi sekä HTTPS-liikenteelle 443 portin käytettäväksi.

E)

Kesti useamman minuutin, ennen kuin sain dropletin luomisen jälkeen konsoliyhteyden virtuaalikoneeseeni. Konsoliyhteyden saamiseksi jouduin klikkaamaan ”Access” valikon auki ja sieltä klikkaamaan ”launch droplet console”-painiketta. Ihan ensiksi asetin root-käyttäjälle salasanan (pelkkä ”passwd”, koska olin jo valmiiksi root-käyttäjänä) ja sitten myös sudolle (sudo passwd), sitten tein päivitykset (apt-get update/upgrade).

Apache2:n asennus tapahtui komennolla ”sudo apt install apache2”, käynnistys kommennolla ”sudo systemctl start apache2”. Komennolla ”hostname -I” selvitin serverini nettiosoitteen. Käytin oletussivua (löytyy /var/www/html/index.html) ja oletuskonfiguraatiota (/etc/apache2/sites-enabled/000-default.conf).

Alkukokeilun jälkeen huomasin, että yhteys ei onnistunut, vaikka tarkistin, että apache oli päällä (systemctl status apache2). Keksin nopeasti, että virtuaalikoneeltani puuttui tulimuuriasetuksista http- ja https-yhteyksien salliminen. Asia korjaantui ja sain auki apache2:n oletussivun kirjoittamalla selaimeen virtuaalikoneeni (julkisen) ip-osoitteen.

F)

Tarkistin logeista ensin, että oliko sivuani ladanneet muutkin kuin minä (cd /var/log/apache2, cat access.log). Nähtävästi yksi oli löytänyt ip-osoitteeni sivulle.

Seuraavaksi siirryin katsomaan /var/log-kansiosta löytyvää auth.log-tiedostoa, jossa on logeja kirjautumisyrityk. Sieltä löytyi useita merkintöjä koskien ssh-yhteydenmuodostamisia virtuaalikoneelleni. Esimerkiksi alemmassa kuvassa näkyvässä rivissä ajalta 14:19:44 kerrotaan, että osoitteesta 141.98… tuleva pyyntö epäonnistuu, sillä sopivaa avainta ei löydy. Saman osoitteen kautta tulee useampi yritys eri portteja käyttäen. Iplocation.net sivu paljastaa, että ip-osoite on Kiinan Kansantasavallasta.

Tarkentavalla haulla ”cat /var/log/auth.log | grep ’Invalid'” näkyi kaikki ei-validit käyttäjäkirjautumiset ip-osoitteineen ja portteineen.

H3)

A)

Apachen asensin jo tunnilla, joten en voi nyt raportoidessa enää havainnollistaa installointiprosessia. Apache-palvelin käynnistettiin komennolla ”sudo systemctl start apache2”. Tarkistaakseni, että selain pyörii, kirjoitin vielä komennon ”sudo systemctl status apache2”.

Oman web-domainini luomiseksi menin /var/www kansioon, jonne loin example.com kansion (sudo mkdir /var/www/example.com), jonka sisälle loin index.html tiedoston (sudo nano index.html), jonka sisällöksi kirjoitin yksinkertaista html-syntaksia ”Hello!”-tervehdyksen kera.

Sitten menin /etc/apache2/sites-available-kansioon, jossa luetteloidaan kaikki apache2-palvelimessa olevat sivut. Siellä kirjoitin komennon ”sudo cp 000-default.conf example.com.conf”, jolla kopioin oletussivun (000-default.conf) sisällön toiseen tiedostoon (example.com.conf). Muokkasin vielä example.com.conf-tiedoston (sudo nano example.com.conf) sisältöä kirjoittamalla ”document-root” kohdan loppuun example.com. Lopuksi enabloin sivun komennolla ”sudo a2ensite example.com.conf”.

Sivu latautui onnistuneesti.

B)

Komennolla ”sudo cat /var/log/apache2/access.log” kopioin apache2:n lokitiedoston sisällön, joka kerää tietoa http-pyynnöistä. GET-pyyntö localhost/example.comiin onnistui, mistä merkkinä koodi 200. Kirjoitin selaimeen tahallaan väärän osoitteen localhost-domainiini, jolloin odotetusti logiin tuli merkintä 404 merkkinä siitä, että urlia ei löytynyt palvelimelta. Logista voi päätellä, että pyynnöt on tehty Mozilla 5.0-selaimesta, Ubuntu-distrolla.

D)

Sain aikaan virheen peukaloimalla apache2:n port.conf tiedostoa lisäämällä useamman nollan portin 80 perään. Apache2 ei odotetusti käynnistynyt, kun porttia 800000… ei olekaan olemassa ja Apache2ctl configtest todensi odotetusti ongelman.

I)

Kävin jo edellisessä vastauksessa läpi koodit 200 ja 404.

Koodin 403 sain aiheutettua siten, että kielsin komennolla ”sudo chmod -x -w /var/www/html/example.com” kaikilta käyttäjiltä em. kansion ja sen tiedostojen luku- ja suorittamisoikeudet.

Käytetyt lähteet mm.:

terokarvinen.com

https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04

https://www.a2hosting.com/kb/developer-corner/apache-web-server/viewing-apache-log-files

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses

https://allthings.how/how-to-copy-a-directory-and-its-content-in-linux/

https://www.digitalocean.com/community/tutorials/how-to-create-temporary-and-permanent-redirects-with-apache

h2

Z)

Command Line Basics Revisited:

Komentorivi on paitsi vanha myös edelleen erittäin käyttökelpoinen. Komentorivissä ollaan aina jossain kansiossa. Komento ’pwd’ paljastaa parhaillaan käytössä olevan kansion. Komennolla ’ls’ nähdään kansion sisältö. Komentoa ’cd’ (sanoista change directory) tarvitaan liikuttaessa kansiosta toiseen. Hakemistossa ylöspäin liikuttaessa kirjoitetaan ’cd ..’, alaspäin liikuttaessa tarvitsee kirjoittaa cd:n jälkeen sen tiedoston nimi, jota halutaan käyttää. Esimerkiksi tekstitiedostoa voi lukea komennolla ’less tiedostonnimi.txt’.

Tekstitiedoston voi luoda helposti komennolla ’nano kuvitteellinen_tiedoston_nimi.txt’. Komennolla ’mkdir kansion_nimi’ luodaan uusi kansio. Kansion siirtely tapahtuu komennolla ’mv’. Komennolla ’cp -r alkuperäinen_tiedosto uusi_tiedosto’ luodaan kopio jostain tiedostosta (-r tarkoittaa, että viittaa itseensä). Komento ’rmdir tyhja_kansio’ poistaa tyhjän kansion. Kun poistaa tiedoston, käytetään komentoa ’rm roskatiedosto’ ja ’rm -r poistettava_kansio’, kun poistetaan kansio sisältöineen. Varoituksen sanana lausuttakoon, että ’rm’-komento poistaa suoraan siirtämättä tiedostoja ensin roskakansioon.

Etäkomentorivin saa aikaan komennolla ’ssh’. Etäkoneelle voi kopioida komennolla ’scp -r’. Jos jostain komennosta ja sen käyttötarkoituksista on epävarma, voi kirjoittaa ’man’ sen komennon eteen, josta haluaa lisätietoja. Pidemmissä komennoissa tabulaattorin painaminen näyttää mitä voi seuraavaksi kirjoittaa (hyödyllistä, kun esim. pidempi hakemistopolku). Kirjoittamat komennot voi taltioida kirjoittamalla ’history’.

Linuxin hakemistopolun alussa/ylimmässä osassa on juurihakemisto. Sen alapuolella on esim. kotihakemisto, jossa kaikkien eri käyttäjien hakemistot ovat. Omalta käyttäjähakemistolta löytyy kaikki hakemistot koskien järjestelmän asetuksia, mediaa ja logeja.

Salasanasuojatulla komennolla ’sudo’ voi tehdä komentoja ilman rajoituksia. Sudoa tarvitaan koko järjestelmää koskevissa operaatioissa, kuten asentamisessa, poistamisessa, käyttäjien luomisessa ja käyttäjästatuksen määrittämisessä. Paketinhallinta on turvallinen ja mukava tapa asentaa softaa. Ennen asentamista kannattaa päivittää saatavilla olevien pakettien lista komennolla ’sudo apt-get update’. Softaa voi selailla komennolla ’apt-cache search jotain’. Installointi tapahtuu komennolla ’sudo apt-get -y install tiedosto’. Asennettua ohjelmaa voi etsiä komennolla ’dpkg –listfiles tiedosto’. Kun asianmukaiseen kansioon on löydetty ohjelman voi aloittaa kirjoittamalla konsoliin ohjelman nimen. Ohjelman voi poistaa järjestelmänlaajuisesti komennolla ’sudo apt-get purge nimi’.

YCombinator Hacker News (/item?id=30011382):

AP hehkuttaa, että HTTPIE on kätevä komento, kun tehdään JSON-pyyntöjä. Kommenteissa enimmäkseen kerrotaan käyttäjien omista kokemuksista HTTPIE:tä koskien, sävy oli enimmäkseen positiivista. Kritiikkiä tuli siitä esimerkiksi, että HTTPIE ei tue moniarvoisia avaimia query stringeissä (tietokannasta tietoa haettaessa). Kommentaattoreilla oli hyvin monimutkaisia esimerkkejä http-pyyntöjä koskevista komennoista, joten kovin paljon allekirjoittanut ei saanut aiheesta irti. Kenties kun kokemusta on kertynyt useampi vuosi kehtaa itsekin ottaa osaa foorumin keskusteluihin.

A)

Aloitan kirjoittamalla komennon ’pwd’ varmistuakseni siitä, että olen käyttäjäkansiossani (/home/topias). Menen tiedostopolkua ylöspäin kirjoittamalla komennon ’cd ..’ kahdesti kunnes olen juurihakemistossa (/). Kiipeän tiedostopolkua alaspäin palaamalla home kansioon (’cd home’). Komento ’ls’ paljastaa, että on vain yksi käyttäjä, joten menen kansioon ’topias’. Menen sieltä kansioon ’snap’, jossa on eräitä lataamiani ohjelmia, kuten atom koodieditori. Haluan kokeilla atomin toimintaa, joten menen sen kansioon ja kirjoitin komentoriville sen nimen ’atom’.

B)

Edellisen tehtävän innoittamana halusin asentaa Httpien Ubuntu-distrolleni. Httpie on http-asiakasohjelma, joka komentorivin kautta tekee pyyntöjä API:lle ja HTTP-palvelimiin. Aluksi tarkistan, että olen käyttäjäkansiossa komennolla ’pwd’. Sitten kirjoitin httpie.io-sivun asennusohjeen mukaisesti apt update – komennon. Sain error-viestin (Permission denied) ja nopeasti tajusin, että ohjeesta puuttui komento ’sudo’. Kirjoitin uudestaan ’sudo apt update’, jolloin kaikki meni hyvin. Lopuksi kirjoitin komennon ’apt install httpie’, mutta ilmenikin, että minulla oli jo valmiiksi sen uusin versio asennettuna.

Seuraavaksi halusin komentokehoteohjelman, jolla monitoroida järjestelmän toimintaa. Tätä tarkoitusta varten löysin duckduckgo-haulla btop++-ohjelman. Asennuksen jälkeen ohjelma saadaan käyntiin kirjoittamalla btop. Ohjelma vaatii täyttä näyttöä. Esc tuo esiin valikon, josta voi valita poistuakseen ’quit’ komennon.

Mielenkiinnostani halusin katsoa voiko internetiä selailla komentoterminaalista. Ei ollut oikeastaan yllätys, että ohjelma tätä varten oli jo olemassa. Latasin Browshin, joka on siis tekstipohjainen nettiselain. Valitettavasti en saanut ohjelmaa käyntiin. Ensimmäisen kerran kun aloitin ohjelman, latasi ohjelma puolen minuutin ajan, mutta ajautui error-tilaan. Toisen kerran kun yritin saada ohjelmaa käyntiin tuli ilmoitus ”A headless Firefox is already running”. Jäi internet-selailut sikseen.

Lähteet:

https://httpie.io/docs/cli/debian-and-ubuntu

C)

Sudo -k komennolla varmistin, että järjestelmä unohti aiemman sudo-kirjautumiseni. Komennolla sudo apt-get update halusin kokeilla onko väärän salasanan antamisella vaikutusta lokitiedostoon. Yhden väärän salasanan annon jälkeen laitoin oikean salasanan ja paketinhallinta päivittyi normaalisti. menin komennolla cd /var/log lokitiedostoja sisältävään kansioon. Komennolla tail syslog avasin päälokin. Siellä oli merkintä siitä, että oli onnistuneesti pyöritetty PackageKit Daemonia. Auth.log tiedostosta löytyi merkintä kello 14:07:04 epäonnistuneesta sudo-autentikaatiosta.

D)

Menin treeni-kansiooni, jossa oli kansio nimeltä ke. Sen sisällä oli tekstitiedosto keskari.txt, jonka sisältönä oli ”Testi”. Komennolla grep ”sti” keskari.txt tsekkasin löytääkö se tekstitiedostosta sanoja, joihin sisältyy merkkijono ”sti”. Kyllä löytyi. Edelleen ollessani treenikansiossa komennolla ’grep ”a” * -R’ saatiin näytölle kopioitua nykyisen hakemiston ja alihakemiston tiedostojen sisällöt, joissa oli merkki ”a”. Valitsin -R mahdollisti alihakemistojen tiedostojen läpikäynnin.

Lähteet:

https://www.linux.fi/wiki/Grep

Introduce Yourself (Example Post)

This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.

You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.

Why do this?

  • Because it gives new readers context. What are you about? Why should they read your blog?
  • Because it will help you focus your own ideas about your blog and what you’d like to do with it.

The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.

To help you get started, here are a few questions:

  • Why are you blogging publicly, rather than keeping a personal journal?
  • What topics do you think you’ll write about?
  • Who would you love to connect with via your blog?
  • If you blog successfully throughout the next year, what would you hope to have accomplished?

You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.

Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.

When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.

Introduce Yourself (Example Post)

This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.

You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.

Why do this?

  • Because it gives new readers context. What are you about? Why should they read your blog?
  • Because it will help you focus your own ideas about your blog and what you’d like to do with it.

The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.

To help you get started, here are a few questions:

  • Why are you blogging publicly, rather than keeping a personal journal?
  • What topics do you think you’ll write about?
  • Who would you love to connect with via your blog?
  • If you blog successfully throughout the next year, what would you hope to have accomplished?

You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.

Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.

When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.

Introduce Yourself (Example Post)

This is an example post, originally published as part of Blogging University. Enroll in one of our ten programs, and start your blog right.

You’re going to publish a post today. Don’t worry about how your blog looks. Don’t worry if you haven’t given it a name yet, or you’re feeling overwhelmed. Just click the “New Post” button, and tell us why you’re here.

Why do this?

  • Because it gives new readers context. What are you about? Why should they read your blog?
  • Because it will help you focus your own ideas about your blog and what you’d like to do with it.

The post can be short or long, a personal intro to your life or a bloggy mission statement, a manifesto for the future or a simple outline of your the types of things you hope to publish.

To help you get started, here are a few questions:

  • Why are you blogging publicly, rather than keeping a personal journal?
  • What topics do you think you’ll write about?
  • Who would you love to connect with via your blog?
  • If you blog successfully throughout the next year, what would you hope to have accomplished?

You’re not locked into any of this; one of the wonderful things about blogs is how they constantly evolve as we learn, grow, and interact with one another — but it’s good to know where and why you started, and articulating your goals may just give you a few other post ideas.

Can’t think how to get started? Just write the first thing that pops into your head. Anne Lamott, author of a book on writing we love, says that you need to give yourself permission to write a “crappy first draft”. Anne makes a great point — just start writing, and worry about editing it later.

When you’re ready to publish, give your post three to five tags that describe your blog’s focus — writing, photography, fiction, parenting, food, cars, movies, sports, whatever. These tags will help others who care about your topics find you in the Reader. Make sure one of the tags is “zerotohero,” so other new bloggers can find you, too.

Create your website with WordPress.com
Aloitus